iOS Apple Pay 與 銀聯(lián) 的集成

如果需要集成搭配實際項目中,先閱讀一下

Apple Pay Guides and Reference
銀聯(lián) Apple Pay 文檔

1 申請 Merchant ID

正常的情況,需要到銀聯(lián)那邊下一個證書(而不是自己在電腦生成)與Apple Account 的 Merchant ID 加密等一系列操作。由于是測試使用,所以就直接在本地生成了

** 蘋果文檔截圖 **



大致意思為: 在電腦本地請求證書,與 Merchant ID 加密一系列操作,然后在Xcode Capabilities 中,打開 Apple Pay, 勾選剛剛生成的 Merchant ID.

** 這個 Merchant ID 就可以在測試環(huán)境中使用了 **

2 導(dǎo)入銀聯(lián) Apple Pay SDK

銀聯(lián) Apple Pay SDK下載地址

里面的開發(fā)文檔和Demo看一下,有個大概的了解。
這是銀聯(lián) Apple Pay 支付的流程


感嘆一下,銀聯(lián)的Apple Pay文檔寫的蠻好的,頁數(shù)少,講的明確。最后把 ** 銀聯(lián)的Apple Pay SDK ** 導(dǎo)入項目中, 添加 **CFNetwork.framework、libUPAPayPlugin.a、PassKit.framework、 SystemConfiguration.framework **到 App 中,如果編譯有錯誤,
可以查看 開發(fā)問題-IOS控件常見問題

(在我的配置過程中,由于在實際的App集成的時候是OK的,但是在Demo中會報一些亂七八糟的錯誤,而我實際的App中又集成了支付寶支付,所以在測試Demo 中我額外導(dǎo)入了 ** libz.tbd, libc++.tbd, libsqlite3.0.tbd** 解決的問題,我也不知道是怎么回事,如果有知道的可以留言??)

3 實際代碼集成

根據(jù)銀聯(lián)的Apple Pay文檔說的,當(dāng)用戶點擊蘋果支付的時候,商戶App 會請求商戶服務(wù)器,然后商戶服務(wù)器會請求銀聯(lián)支付網(wǎng)關(guān),銀聯(lián)支付網(wǎng)關(guān)返回一個標(biāo)識訂單的 TN 號(全稱: transaction number ?),商戶服務(wù)器把 TN 號返回給商戶 App,這個TN號在商戶App調(diào)用銀聯(lián)SDK的時候需要傳遞過去。在Demo測試的時候可以自己請求銀聯(lián)提供的測試地址獲取一個測試的標(biāo)識訂單的 TN 號。

1 銀聯(lián) Apple Pay SDK 支付接口說明

/**
 *  支付接口
 *
 *  @param tn             訂單信息
 *  @param mode           接入模式,標(biāo)識商戶以何種方式調(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;

Demo中調(diào)用情況:

        if tn != nil && tn.characters.count > 0 {
            UPAPayPlugin.startPay(tn,
                                  mode: mode,
                                  viewController: self,
                                  delegate: self,
                                  andAPMechantID: merchantID)
        } else {
            showAlert("獲得交易單號失敗")
        }

2 處理支付結(jié)果

    // MARK: UPAPay Delegate
    func upaPayPluginResult(_ payResult: UPPayResult!) {
        if let status = payResult?.paymentResultStatus {
            switch status {
            case .success:
                print("success")
                let otherInfo = payResult.otherInfo ?? ""
                let successInfo = "支付成功\n\(otherInfo)"
                showAlert(successInfo)
            case .failure:
                print("failure")
                let errorInfo = payResult.errorDescription ?? "支付失敗"
                showAlert(errorInfo)
            case .cancel:
                print("cancel")
                showAlert("支付取消")
            case .unknownCancel:
                print("unknownCancel")
                let errorInfo = ""
                // TODO: get [errorInfo] from server, may success or failure
                showAlert(errorInfo)
            }
        }
    }

如果一切OK,會在App中看到一個類似這樣的支付結(jié)果:

當(dāng)然在實際的的集成到App中,需要:

1:到銀聯(lián)認(rèn)證,到銀聯(lián)下載證書配置蘋果賬號生成的 Merchant ID ;
2:請求商戶server生成實際的標(biāo)識訂單的 TN 號;
3:測試測試測試

Demo 地址

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

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

  • Apple Pay正式在國內(nèi)上線的那天,一起工作的小伙伴就走進(jìn)了Starbucks,7-11等帶有銀聯(lián)閃付的店進(jìn)行...
    TonyDuan閱讀 1,716評論 0 4
  • 運行環(huán)境## iphone 6 以及以上,iOS 9.2 以上。目前不支持企業(yè)證書添加。支持模擬器測試。 環(huán)境配置...
    烏龍謙閱讀 9,402評論 10 18
  • Apple Pay 一個方便 & 安全的移動支付技術(shù),讓用戶完成他們的支付環(huán)節(jié)并把支付相關(guān)的信息告訴你 只可以購買...
    skingtree閱讀 2,292評論 0 4
  • 首先理解 Apple Pay 的支付流程,其中最關(guān)鍵一點就是:Apple 不處理跟扣款相關(guān)的邏輯,它只負(fù)責(zé)支付信息...
    kayling閱讀 2,409評論 0 3
  • 由于足總杯的火熱本輪英超稍顯冷清,但是本輪聯(lián)賽中依舊有很多有趣的數(shù)據(jù)和評點值得一看。 坐鎮(zhèn)金士頓運動場的赫爾城迎戰(zhàn)...
    哈里巴踢球閱讀 357評論 0 0

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