銀聯(lián) Apple Pay 接入指南

前言
ApplePay是蘋果公司推出的一種線上/線下的便捷支付方式,根據(jù)TouchId來(lái)驗(yàn)證支付卡持卡人身份,ApplePay并不參與資金流動(dòng),最終還是讓銀行完成扣款處理,目前據(jù)Apple介紹只配備在iphone6以上和新款的ipad Air2和ipad mini3上,中國(guó)地區(qū)最低系統(tǒng)要求為iOS9.2.

注意:Apple Pay功能支持的是iPhone6以上,iOS9.2以上. 且目前企業(yè)級(jí)證書(shū)是不支持的,只有個(gè)人開(kāi)發(fā)者證書(shū)才支持.

一、 Apple Pay 支付流程介紹

1、買家在手機(jī)應(yīng)用中購(gòu)買商品或服務(wù),在訂單頁(yè)面中展示 Apple Pay 按鈕

2、通過(guò)銀聯(lián)控件,掉起 Apple Pay 支付頁(yè)面

3、用戶通過(guò)支付頁(yè)面驗(yàn)證 Touch ID,輸入銀行卡密碼 ,是否需要輸入銀行卡密碼取決于交易限額和銀行支持情況

4、支付成功,商戶應(yīng)用內(nèi)展示成功頁(yè)面

(1)支付成功頁(yè)面應(yīng)參照 UI 示例,展示“銀聯(lián)”標(biāo)識(shí),“云閃付”標(biāo)識(shí)。

(2)銀聯(lián) SDK 控件支持折扣功能。在折扣活動(dòng)期間,商戶應(yīng)用內(nèi)應(yīng)參照實(shí)例 UI 進(jìn)行原金額、折扣金額的展示

二、銀聯(lián)支付控件 SDK 模式 Apple Pay 支付的實(shí)現(xiàn)方式

  • 獲取訂單信息tn編號(hào)

1-2、 商戶生成訂單,通過(guò)商戶 SERVER 端將訂單信息發(fā)送給銀聯(lián)支付網(wǎng)關(guān);

3-4、銀聯(lián)支付網(wǎng)關(guān)記錄訂單信息,返回用來(lái)標(biāo)識(shí)訂單的 TN 號(hào),經(jīng)由商戶 SERVER 返回至給 商戶 APP;

  • 調(diào)用銀聯(lián)SDK方法發(fā)起支付請(qǐng)求

5、 商戶 APP 調(diào)用銀聯(lián) SDK,將 TN 號(hào)傳遞給銀聯(lián) SDK

6、 銀聯(lián) SDK 向 Apple 公司的 PASSKIT FRAMEWORK 發(fā)起支付請(qǐng)求;

  • 支付驗(yàn)證

7、 接口返回加密的支付 Token 信息;

8-9、銀聯(lián) SDK 將支付 Token 傳遞給銀聯(lián)支付網(wǎng)關(guān),完成交易認(rèn)證;

  • 返回支付結(jié)果

10-12、銀聯(lián)將支付結(jié)果返回給商戶 APP,商戶 SERVER,商戶 APP 負(fù)責(zé)提示用戶交易結(jié)果。

三、銀聯(lián) SDK 模式下商戶接入銀聯(lián) Apple Pay 在線支付流程

步驟一、成為銀聯(lián)手機(jī)支付入網(wǎng)商戶

(1)注冊(cè)銀聯(lián)開(kāi)放平臺(tái)賬號(hào)(https://open.unionpay.com/ajweb/index

(2)填寫商戶信息并申請(qǐng)成為入網(wǎng)商戶


步驟二、登錄銀聯(lián)商戶服務(wù)平臺(tái),通過(guò)商戶服務(wù)平臺(tái)申請(qǐng) CSR文件

  • 關(guān)于商戶 CSR

接入銀聯(lián) Apple Pay 在線支付的商戶,須生成 Apple Pay 專用的 CSR 文件并提交至 Apple 開(kāi)發(fā)者網(wǎng)站進(jìn)行簽名,以簽署證書(shū),取得 Apple Pay 的訪問(wèn)權(quán)限。

在銀聯(lián) SDK 模式中,銀聯(lián)代為商戶生成 CSR 文件,商戶可直接登錄銀聯(lián)商戶服務(wù)平臺(tái)獲取。

  • 商戶 CSR 申請(qǐng)方式:

a、 成為銀聯(lián)商戶服務(wù)平臺(tái)用戶。

在申請(qǐng)銀聯(lián) Apple Pay 接入時(shí),銀聯(lián)的聯(lián)系人會(huì)分配商戶服務(wù)平臺(tái)的登錄權(quán)限及 CSR 的申請(qǐng)權(quán)限。存量商戶應(yīng)確認(rèn)是否開(kāi)通了 Apple Pay 接入權(quán)限。

b、 通過(guò)銀聯(lián)商戶服務(wù)平臺(tái)申請(qǐng) CSR

銀聯(lián)在商戶服務(wù)平臺(tái) (https://merchant.unionpay.com/) 中提供 Apple Pay 的CSR文件下載
功能。

登錄商戶服務(wù)平臺(tái),進(jìn)入安全管理-CSR 文件下載,點(diǎn)擊“生成 CSR”按鈕,并將 獲取的 CSR 保存。
CSR 文件與商戶代碼一一對(duì)應(yīng),是交易安全保護(hù)的重要環(huán)節(jié),請(qǐng)勿將 CSR 透漏給無(wú)關(guān)人員。

步驟三、將 CSR 提交至 Apple,生成 Merchant ID 和 描述文件

  • 1、創(chuàng)建AppID

登錄開(kāi)發(fā)者中心,創(chuàng)建App ID,填寫描述及Bundle ID。


  • 2、在App Services里勾選 Apple Pay Payment Processing 以開(kāi)啟該功能
002.png

點(diǎn)擊Continue后,會(huì)發(fā)現(xiàn)概覽該App ID時(shí),Apple Pay服務(wù)是等待配置狀態(tài)的,接下來(lái)點(diǎn)擊Register繼續(xù)

003.png
  • 3、創(chuàng)建 Merchant ID,并綁定到相關(guān)App ID
004.png
  • 4、由于加密需要證書(shū),所以還要對(duì)剛創(chuàng)建的Merchant ID添加證書(shū)(加密根據(jù)證書(shū)來(lái)的),Merchant ID點(diǎn)Edit


    005.png

點(diǎn)擊 Create Certificate, 這里詢問(wèn)是否支持中國(guó)以外的地區(qū)處理支付,這里要根據(jù)實(shí)際需求選擇

006.png

Continue后,需要上傳一個(gè)CSR文件(銀聯(lián)在商戶服務(wù)平臺(tái)下載的那個(gè)CSR文件)

007.png

把生成的cer文件下載到本地,雙擊安裝
此時(shí)查看鑰匙串發(fā)現(xiàn)該證書(shū)顯示 “此證書(shū)是由未知頒發(fā)機(jī)構(gòu)簽名的”
解決辦法:重新下載系統(tǒng)證書(shū) Worldwide Developer Relations - G2 Certificate 并雙擊安裝
http://www.apple.com/certificateauthority/

  • 5、配置 App ID中Apple Pay服務(wù)

由于剛才創(chuàng)建的App ID中Apple Pay服務(wù)仍處于待配置狀態(tài),在App IDs列表中找到剛才創(chuàng)建的App ID展開(kāi),點(diǎn)擊Edit對(duì)其進(jìn)行編輯。

008.png

在彈出的界面中勾選對(duì)應(yīng)的Merchant ID,Continue

009.png

然后Assign,此時(shí)就完成了為App ID添加 Merchant ID。可以點(diǎn)開(kāi)該App ID進(jìn)行確認(rèn),可看到Apple Pay服務(wù)已可用

010.png
  • 6、生成開(kāi)發(fā)和發(fā)布描述文件并下載添加到Xcode

步驟四、創(chuàng)建Xcode工程并為其開(kāi)啟Apple Pay

  • 1、使用Xcode創(chuàng)建工程,設(shè)置相關(guān)Bundle ID:


    011.png
  • 2、開(kāi)啟Apple Pay功能:

到Xcode的Capabilities中,找到Apple Pay開(kāi)關(guān),打開(kāi)

012.png
  • 3、添加銀聯(lián)SDK 并加入依賴的庫(kù)文件

a、添加 Apple Pay 版本靜態(tài)庫(kù)文件
包含文件:
UPAPayPlugin.h
UPAPayPluginDelegate.h
libUPAPayPlugin.a

b、添加 CFNetwork.framework 、 libUPAPayPlugin.a 、 PassKit.framework 、 SystemConfiguration.framework 到商戶 App 工程中

c、http 請(qǐng)求設(shè)置,設(shè)置NSAllowsArbitraryLoads 屬性值為 YES

注意:如果工程的 compile source as 選項(xiàng)的值不是 Objective–C++,則引用此頭文件的文件類型都要 改為.mm

  • 4、接口調(diào)用

a、商戶 App 從商戶服務(wù)器獲取 tn,當(dāng) tn 不為空時(shí),調(diào)用支付接口。

//當(dāng)獲得的tn不為空時(shí),調(diào)用支付接口
if (tn != nil && tn.length > 0) {
if([PKPaymentAuthorizationViewController canMakePaymentsUsingNetworks:@[PKPaymentNetworkChinaUnionPay]] )
{
//調(diào)用銀聯(lián)支付控件
[UPAPayPlugin startPay:tn mode:self.testMode viewController:self delegate:self andAPMechantID:kAppleMechantID]; }
}

b、處理支付結(jié)果

銀聯(lián)手機(jī)支付控件結(jié)果回調(diào)函數(shù)有四個(gè)支付狀態(tài)返回值,在 UPPayResult 類中有關(guān)于 UPPaymentResultStatus 的詳細(xì)說(shuō)明。

商戶 App 通過(guò)在工程中添加頭文件 “UPAPayPluginDelegate.h”,然后在處理交易結(jié)果界面中根據(jù)該頭文件中定義的回調(diào)函數(shù):-(void)UPAPayPluginResult:(UPPayResult *)result 來(lái)實(shí)現(xiàn)回調(diào)方法,從而根據(jù)支付結(jié)果的不同進(jìn)行相應(yīng)的處理。

結(jié)果回調(diào)函數(shù)示例代碼:

-(void)UPAPayPluginResult:(UPPayResult *)result
{
    if(result.paymentResultStatus == UPPaymentResultStatusSuccess) {
        NSString *otherInfo = result.otherInfo?result.otherInfo:@"";
        NSString *successInfo = [NSString stringWithFormat:@"支付成功\n%@",otherInfo];
        [self showAlertMessage:successInfo];
    }
    else if(result.paymentResultStatus == UPPaymentResultStatusCancel){

        [self showAlertMessage:@"支付取消"];
    }
    else if (result.paymentResultStatus == UPPaymentResultStatusFailure) {
        
        NSString *errorInfo = [NSString stringWithFormat:@"%@",result.errorDescription];
        [self showAlertMessage:errorInfo];
    }
    else if (result.paymentResultStatus == UPPaymentResultStatusUnknownCancel)  {
        
        //TODO UPPAymentResultStatusUnknowCancel表示發(fā)起支付以后用戶取消,導(dǎo)致支付狀態(tài)不確認(rèn),需要查詢商戶后臺(tái)確認(rèn)真實(shí)的支付結(jié)果
        NSString *errorInfo = [NSString stringWithFormat:@"支付過(guò)程中用戶取消了,請(qǐng)查詢后臺(tái)確認(rèn)訂單"];
        [self showAlertMessage:errorInfo];
        
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Apple Pay 一個(gè)方便 & 安全的移動(dòng)支付技術(shù),讓用戶完成他們的支付環(huán)節(jié)并把支付相關(guān)的信息告訴你 只可以購(gòu)買...
    skingtree閱讀 2,132評(píng)論 0 4
  • 運(yùn)行環(huán)境## iphone 6 以及以上,iOS 9.2 以上。目前不支持企業(yè)證書(shū)添加。支持模擬器測(cè)試。 環(huán)境配置...
    烏龍謙閱讀 9,191評(píng)論 10 18
  • 首先理解 Apple Pay 的支付流程,其中最關(guān)鍵一點(diǎn)就是:Apple 不處理跟扣款相關(guān)的邏輯,它只負(fù)責(zé)支付信息...
    kayling閱讀 2,271評(píng)論 0 3
  • 1.About Apple Pay Apple Pay是一種移動(dòng)支付技術(shù),讓使用者把它們對(duì)真實(shí)的物品和服務(wù)的支付信...
    NEWWORLD閱讀 5,244評(píng)論 14 51
  • 生活是殘忍的,冷冰冰 但人是有溫度的,可以融化生活的堅(jiān)冰 如果你對(duì)生活哭,它只會(huì)更殘忍 如果你夠霸道,它也會(huì)為你讓...
    攝影師強(qiáng)子閱讀 168評(píng)論 0 0