Apple Pay支付從0到1

常識篇

  • 版本要求: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ā)卡機構(gòu)

  • 其他要求:安全隱私

證書篇

登錄開發(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)的證書、再次雙擊安裝

WWDR Certificate 證書

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)用

博客地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容