銀聯(lián)控件接入流程:
根據(jù)提供的流程圖滨彻,作為app端搔确,我們需要做的四件事如下:
1.調(diào)用后端的接口傳入?yún)?shù)發(fā)起訂單請(qǐng)求绝页,并接收tn
2.調(diào)銀聯(lián)的startpay方法
3.實(shí)現(xiàn)UPAPayPluginDelegate的方法民泵,根據(jù)result處理邏輯
以上,就是銀聯(lián)sdk的集成捍壤,在此之前需要去銀聯(lián)官網(wǎng)注冊(cè)登錄完善商戶信息骤视,大概需要兩三個(gè)工作日就好,第6步需要一點(diǎn)時(shí)間白群,但是等就行了尚胞。
官網(wǎng)注冊(cè)地址:https://open.unionpay.com/tjweb/index
demo地址:https://open.unionpay.com/ajweb/help/file/techFile?productId=80
銀聯(lián)的集成可以說是非常簡(jiǎn)單的硬霍,下面介紹一下原生iOS支付處理帜慢;
直接上代碼:
// MARK: - applepay原生支付
extension Demo: PKPaymentAuthorizationViewControllerDelegate {
func payaction(){
let request = PKPaymentRequest()
if #available(iOS 9.2, *) {
request.supportedNetworks = [PKPaymentNetwork.amex, PKPaymentNetwork.masterCard, PKPaymentNetwork.visa, PKPaymentNetwork.chinaUnionPay]
} else {
request.supportedNetworks = [PKPaymentNetwork.amex, PKPaymentNetwork.masterCard, PKPaymentNetwork.visa]
}
if PKPaymentAuthorizationViewController.canMakePayments(usingNetworks: request.supportedNetworks) {
noticeOnlyText("可以支付,開始建立支付請(qǐng)求")
request.countryCode = "CN"
request.currencyCode = "CNY"
request.merchantIdentifier = "merchant.com.xxxx"
request.merchantCapabilities = PKMerchantCapability.capability3DS
let wax = PKPaymentSummaryItem(label: "訂單金額", amount: NSDecimalNumber(string: "\(self.allPrice)"))
let total = PKPaymentSummaryItem(label: "xxx", amount: wax.amount)
request.paymentSummaryItems = [wax, total]
let vc = PKPaymentAuthorizationViewController(paymentRequest: request)
vc?.delegate = self
present(vc!, animated: true, completion: nil)
}
else {
noticeOnlyText("您沒有綁定任何銀行卡或者當(dāng)前設(shè)備不支持ApplePay")
}
}
func paymentAuthorizationViewControllerDidFinish(_ controller: PKPaymentAuthorizationViewController) {
noticeOnlyText("支付結(jié)束")
dismiss(animated: true, completion: nil)
}
func paymentAuthorizationViewController(_ controller: PKPaymentAuthorizationViewController, didAuthorizePayment payment: PKPayment, completion: @escaping (PKPaymentAuthorizationStatus) -> Void) {
// 調(diào)后端接口返回success或者fail
completion(PKPaymentAuthorizationStatus.success)
//訂單ID 暫時(shí)
let vc = KeMyTicketVc.init(orderId: "")
navigationController?.pushViewController(vc, animated: true)
}
}