常識篇
版本要求:iOS操作系統(tǒng)9.2及以上系統(tǒng)版本,WatchOS需要2.1及以上版本。
-
設備要求:與 Apple Pay 兼容的設備
- iPhone:iPhone XS、iPhone XS Max、iPhone X、iPhone 8、iPhone 8 Plus、iPhone 7、iPhone 7 Plus、iPhone 6s、iPhone 6s Plus、iPhone 6、iPhone 6 Plus、iPhone SE
- iPad: iPad(第 6 代)、iPad Pro、iPad(第 5 代)、iPad Air 2、iPad mini 4、iPad mini 3
- iWatch:Apple Watch Series 4、Apple Watch Series 3、Apple Watch Series 2、Apple Watch Series 1、Apple Watch(第 1 代)
- Mac:配備觸控 ID 功能的 Mac 機型、2012 年或之后推出的 Mac 機型,與支持 Apple Pay 的 iPhone 或 Apple Watch 配合使用
其他要求:安全隱私
證書篇
登錄開發(fā)者賬號
點擊進入Certificates, Identifiers & Profiles

Certificates, Identifiers & Profiles
點擊左側(cè)App IDs

App IDs
查看
iOS App IDs中是否有你項目的id(Bundle identifier),有的話點開編譯[編輯的方式參照如下]。為了展示完成的證書創(chuàng)建思路,按照未含有,重寫創(chuàng)建處理。
首先我創(chuàng)建一個名為Apple Pay Demo 。Bundle identifier為com.text.checkstand測試Demo。點擊證書頁面右上角的?Register iOS App IDs

Add

Register iOS App ID
選中Apple Pay Payment Processing

選擇Apple Pay
點擊Continue確認,發(fā)現(xiàn)Apple Pay Payment Processing 的狀態(tài)是橘色-Configurable,需要進一步配置

查看證書狀態(tài)
點擊Merchant IDs,添加Register Merchant IDs

Merchant IDs

Add

Register Merchant ID

Register
注冊完Merchant IDs 之后回到iOS App IDs頁面 點擊新建的App ID進行編輯

App ID

查看狀態(tài)
App ID編輯

編輯
選擇剛才所建的Merchant ID

選擇
確認之后返回,Apple Pay Payment Processing 的狀態(tài)是綠色-Enabled

查看Apple Pay狀態(tài)
到這里Apple Pay證書創(chuàng)建之路已經(jīng)走完一半,接下來再點擊Merchant IDs,對剛剛生成的Apple Pay Demo Merchant進行編輯,生成(RSA).cer。

創(chuàng)建證書
這里著重號????????表示,如果是接入銀聯(lián)SDK可直接跳過鑰匙串部分操作,直接跳到下方銀聯(lián)SDK接入篇-配置處理
電腦打開鑰匙串,點擊鑰匙串訪問 -> 證書助理 -> 從證書把發(fā)機構(gòu)請求證書

鑰匙串

生成證書助理
生成一個.certSigningRequest的白色文件

certSigningRequest文件
回到Certificates, Identifiers & Profiles 的 iOS Merchant ID Settings頁面點擊頁面上的 Create Certificate

證書

證書
選擇鑰匙串生成的白色文件

選擇文件

下載
Download 如下圖

cer文件
雙擊前去鑰匙串中查看

證書狀態(tài)
當然你也可能顯示是如下的紅色文字此證書是由未知頒發(fā)機構(gòu)的簽名

證書狀態(tài) error
點擊如下兩個鏈接安裝證書,然后移除未知頒發(fā)機構(gòu)的證書、再次雙擊安裝
Worldwide Developer Relations - G2 Certificate 證書

WWDR/Worldwide
Xcode設置篇

Xcode

Xcode
原生實現(xiàn)篇
代碼實現(xiàn)思路
導入PassKit框架
進行設備和最低版本判斷,參考條件查看最上方
創(chuàng)建PKPayment類來創(chuàng)建支付請求,設置國家代碼,幣種,由商家支持的支付網(wǎng)絡 所支持的卡類型。設置merchantIdentifier-要和你在開發(fā)者中心生成的id保持一致如我demo設置的
merchant.com.text.checkstand。創(chuàng)建PKPaymentSummaryItem來創(chuàng)建商品信息,顯示認證視圖設置代理-PKPaymentAuthorizationViewControllerDelegate
在paymentAuthorizationViewController代理回調(diào)中處理token值和商品的其他信息上傳到服務器后臺。通過這個字段PKPaymentAuthorizationStatus來判斷最終支付結(jié)果。
注!我就不直接復制代碼塊。
接入銀聯(lián)SDK實現(xiàn)篇
配置處理
跳過了鑰匙串生成這部是為什么?
因為:生成cer文件是要選擇文件上傳進行生成,而如果接入銀聯(lián)SDK的話,這個文件是通過銀聯(lián)申請的。

銀聯(lián)配置文件
如上圖的步驟二取代了鑰匙串生成的部分,在選擇文件的時候選擇的是銀聯(lián)那獲取的cer文件。具體銀聯(lián)接入可查看-銀聯(lián)Apple Pay控件接入指引等文件。
然后生成RSA,下載。
代碼實現(xiàn)思路
- 導入相關(guān)文件和依賴
- UPAPayPlugin 調(diào)startPay的類方法
/**
* 支付接口
*
* @param tn 訂單信息
* @param mode 接入模式,標識商戶以何種方式調(diào)用支付控件,00生產(chǎn)環(huán)境,01測試環(huán)境
* @param viewController 啟動支付控件的viewController
* @param delegate 實現(xiàn) UPAPayPluginDelegate 方法的 UIViewController
* @param mID 蘋果公司分配的商戶號,表示調(diào)用Apple Pay所需要的MerchantID;
* @return 返回函數(shù)調(diào)用結(jié)果,成功或失敗
*/
+ (BOOL)startPay:(NSString*)tn
mode:(NSString*)mode
viewController:(UIViewController*)viewController
delegate:(id<UPAPayPluginDelegate>)delegate
andAPMechantID:(NSString* )mID;
- 遵守代理,實現(xiàn)代理方法,獲取支付回調(diào)
#pragma mark 響應控件返回的支付結(jié)果 - 銀聯(lián)Apple Pay <UPAPayPluginDelegate>
- (void)UPAPayPluginResult:(UPPayResult *)result
{
if(result.paymentResultStatus == UPPaymentResultStatusSuccess) {
NSLog(@"付款成功");
//交易成功
}
else if(result.paymentResultStatus == UPPaymentResultStatusFailure) {
NSLog(@"付款失敗")
//交易失敗
}
else if(result.paymentResultStatus == UPPaymentResultStatusCancel) {
NSLog(@"付款取消")
//交易取消
}
else if(result.paymentResultStatus == UPPaymentResultStatusUnknownCancel) {
NSLog(@"支付過程中取消了,請查詢后臺確認訂單");
//交易取消
}
}

支付調(diào)用