iOS Apple Pay開發流程

一:介紹

項目中要用到支付功能,須要支付寶支付、支付寶網頁支付轉客戶端、微信支付、銀聯支付、Apple_pay,因此打算總結一下,方便之後的查閱,也方便你們, 用到的地方避免再次被坑。 今天咱們就主要介紹一下Apple_pay,其餘支付也寫了對應教程,而且給出了鏈接。web

二:支付流程介紹

2.1 Apple Pay 頁面演示

Apple Pay 頁面演示

  1. 買家在手機應用中購買商品或服務,在訂單頁面中展現 Apple Pay 按鈕
  2. 經過銀聯控件,掉起 Apple Pay 支付頁面
  3. 用戶經過支付頁面驗證 Touch ID,輸入銀行卡密碼 是否須要輸入銀行卡密碼取決於交易限額和銀行支持狀況
  4. 支付成功,商戶應用內展現成功頁面 (1)支付成功頁面應參照 UI 示例,展現「銀聯」標識,「雲閃付」標識。 (2)銀聯 SDK 控件支持折扣功能。在折扣活動期間,商戶應用內應參照實例 UI 進行原金 額、折扣金額的展現

2.2 Apple Pay 支付的實現方式

Apple Pay 支付的實現方式

1-2. 商戶生成訂單,經過商戶 SERVER 端將訂單信息發送給銀聯支付網關; 3-4. 銀聯支付網關記錄訂單信息,返回用來標識訂單的 TN 號,經由商戶 SERVER 返回至給 商戶 APP; 5.商戶 APP 調用銀聯 SDK,將 TN 號傳遞給銀聯 SDK 6.銀聯 SDK 向 Apple 公司的 PASSKIT FRAMEWORK 發起支付請求; 7.接口返回加密的支付 Token 信息; 8-9.銀聯 SDK 將支付 Token 傳遞給銀聯支付網關,完成交易認證; 10-12.銀聯將支付結果返回給商戶 APP,商戶 SERVER,商戶 APP 負責提示用戶交易結果。bash

三:工程配置

bundleID設置服務器

bundleID設置

Capability中啓用Apple Pay權限,並選擇merchantID,merchantID申請流程微信

啓用Apple Pay權限

以後項目會多一個Applepay的配置文件ApplePayYasin.entitlementspost

項目文件

四:下載Apple Pay SDK

Apple Pay SDK微信支付

下載以後,找到.h文件和庫文件,使用UPPaymentControl須要將paymentcontrol/inc目錄下UPAPayPlugin.h、UPAPayPluginDelegate.h文件和paymentcontrol/libs目錄下的libUPAPayPlugin.a文件添加到商戶應用的工程中加密

SDK路徑

五:調用支付接口

在調用銀聯支付類裏面,首先增長頭文件引用。spa

#import "UPAPayPlugin.h"

// TODO 商戶須要換用本身的mertchantID
#define kAppleMerchantID @"merchant.com.AgreePay.ApplePayAgree"
複製代碼

在調起支付的方法中代碼以下:3d

//當得到的tn不爲空時,調用支付接口
if (tn != nil && tn.length > 0) {
        [UPAPayPlugin startPay:tn 
        mode:@"01" 
        viewController:ViewController 
        delegate:self andAPMechantID:kAppleMerchantID];
}
複製代碼

方法須要的幾個參數文檔上都寫的有,tn是交易流水號,服務器端傳回來的,客戶端只有憑藉這個參數才能調用支付控件 進行支付的。只須要調用一個方法就行啦!!!code

六:支付結果回調

就在調起支付的ViewController 中寫入下面代碼便可

#pragma mark -
#pragma mark 響應控件返回的支付結果
#pragma mark -
- (void)UPAPayPluginResult:(UPPayResult *)result
{
    if(result.paymentResultStatus == UPPaymentResultStatusSuccess) {
        NSString *otherInfo = result.otherInfo?result.otherInfo:@"";
        NSString *successInfo = [NSString stringWithFormat:@"支付成功\n%@",otherInfo];
        
        NSLog(@"%@",successInfo);
       
    }else if(result.paymentResultStatus == UPPaymentResultStatusCancel){
        
        NSLog(@"支付取消");

    }else if (result.paymentResultStatus == UPPaymentResultStatusFailure) {
        
        NSString *errorInfo = [NSString stringWithFormat:@"%@",result.errorDescription];
        NSLog(@"支付失敗%@",errorInfo);
    }else if (result.paymentResultStatus == UPPaymentResultStatusUnknownCancel)  {
        
        //TODO UPPAymentResultStatusUnknowCancel表示發起支付之後用戶取消,致使支付狀態不確認,須要查詢商戶後臺確認真實的支付結果
//        NSString *errorInfo = [NSString stringWithFormat:@"支付過程當中用戶取消了,請查詢後臺確認訂單"];
//        [self showAlertMessage:errorInfo];
        NSLog(@"支付過程當中用戶取消了,請查詢後臺確認訂單");
        
    }
}
複製代碼

支付調起截圖

關注 【網羅開發】微信公衆號,網羅天下方法,方便你我開發,更多iOS技術乾貨等待領取,全部文檔會持續更新,歡迎關注一塊兒成長!

但願能夠幫助你們

若是哪裏有什麼不對或者不足的地方,還望讀者多多提意見或建議

如需轉載請聯繫我,通過受權方可轉載,謝謝

相關文章
相關標籤/搜索