今天開始做銀聯(lián)支付啦,從頭開始記錄一下好啰。
1赡磅、下載sdk
下載地址:https://open.unionpay.com/ajweb/help/file(不好找啊)
下載后是.rar的壓縮文件暗甥,自己找個工具解壓就行了喜滨,將paymentcontrol/inc目錄下UPPaymentControl.h文件和paymentcontrol/libs目錄下的libPaymentControl.a文件添加到商戶應用的工程中
2、工程配置
1)添加依賴庫CFNetwork.framework撤防、SystemConfiguration.framework 虽风、libz、libPaymentControl.a到工程中.
2)在工程info.plist設置中添加一個URL Types回調(diào)協(xié)議(在UPPayDemo工程中使用“UPPayDemo”作為協(xié)議)寄月,用于在支付完成后返回商戶客戶端焰情。
3)http請求設置,在Xcode7.0之后的版本中進行http請求時剥懒,需要在工程對應的plist文件中添加NSAppTransportSecurity Dictionary 并同時設置里面NSAllowsArbitraryLoads 屬性值為 YES
4内舟、添加協(xié)議白名單
5)加-ObjC宏,選擇工程targets——》build settings ->Linking->other linker flags
6)調(diào)用插件:
在需要調(diào)用支付控件接口的代碼文件內(nèi)引用頭文件UPPaymentControl.h初橘。
(注意:如果工程的compile source as 選項的值不是Objective–C++验游,則引用此頭文件的文件類型都要改為.mm)
商戶App從商戶服務器獲取tn(注:先通過調(diào)用后臺接口獲取訂單信息)
* @param tn 訂單信息
* @param schemeStr 調(diào)用支付的app注冊在info.plist中的scheme
* @param mode 支付環(huán)境"00"代表接入生產(chǎn)環(huán)境(正式版本需要);"01"代表接入開發(fā)測試環(huán)境
* @param viewController 啟動支付控件的viewController
* @return 返回成功失敗
7)返回結(jié)果接口調(diào)用
支付控件結(jié)果處理函數(shù)handlePaymentResult: completeBlock:需要在工程AppDelegate文件的application: openURL: sourceApplication: annotation: 方法中進行調(diào)用充岛。
支付控件結(jié)果處理函數(shù)handlePaymentResult: completeBlock:包含兩個參數(shù),參數(shù)1url為支付結(jié)果串耕蝉,由handlePaymentResult: completeBlock:方法解析url內(nèi)容;參數(shù)2completionBlock為商戶APP定義的結(jié)果處理方法崔梗,包含兩個傳入?yún)?shù)code和data,其中code表示支付結(jié)果垒在,取值為suceess,fail,cancel分別表示支付成功蒜魄、支付失敗和支付取消,data表示結(jié)果簽名數(shù)據(jù)场躯,商戶使用銀聯(lián)公鑰驗證結(jié)果真實性谈为。
completeBlock中的NSDictionary *data結(jié)構(gòu)如下:
sign —— 簽名后做Base64的數(shù)據(jù)
data —— 用于簽名的原始數(shù)據(jù),結(jié)構(gòu)如下:
pay_result —— 支付結(jié)果success踢关,fail伞鲫,cancel
tn —— 訂單號
3、常見問題可以參考這篇文章blog.csdn.net/lxlzy/article/details/53338278签舞,我是根據(jù)這篇文章的步驟來的秕脓,后續(xù)還會根據(jù)我的情況補進去一些內(nèi)容
我的支付做好啦,轉(zhuǎn)載清注明出處