項目最近需要集成銀聯,在網上搜了一下發現都并不是最新版的銀聯集成教程,自己摸索了一下,總結寫了下來。
附上3.3.0的下載網址https://open.unionpay.com/upload/download/手機控件支付開發包(IOS版)3.3.3.rar文件解壓后在 /app開發包/控件使用指南/ 可以得到官方寫的開發文檔, /app開發包/控件開發包/ 下可以得到demo和SDK,個人感覺官方文檔寫的很詳細了……大家也可以自己結合文檔和Demo自己試下。
一:環境配置
1、3.3.0的銀聯SDK和之前發生了變化,之前是UPPayPlugin.h UPPayPluginDelegate.h libUPPayPlugin.a一共三個文件,現在精簡成UPPaymentControl.h libPaymentControl.a兩個文件,當然方法也會有改變。新建工程的話直接將payment control文件夾導入。
_//順便說一句,我下的Demo會報錯的,原因是SDK并沒有導入,大家遇到同樣的問題可以將 /app開發包/控件開發包/upmpiphone/paymentcontrol 文件夾直接加到Demo里。
導入之后要在Build Settings --> Library Search Paths里對 libPaymentControl.a 路徑設置,可以參考 demo,$(PROJECTDIR)/(這里寫libs的上層文件夾,所有的==)/libs
2、添加:CFNetwork.framework、SystemConfiguration.framework 、lib系統框架到工程中;
3、 在工程info.plist設置中添加一個URL Types回調協議,用于在支付完成后返回商戶客戶端;
4、 在Xcode7.0之后的版本中進行開發,需要在工程對應的plist文件中,添加LSApplicationQueriesSchemes Array并加入uppaysdk、uppaywallet、uppayx1、uppayx2、uppayx3五個item。
<key>LSApplicationQueriesSchemes</key>
<array>
<string>uppaysdk</string>
<string>uppaywallet</string>
<string>uppayx1</string>
<string>uppayx2</string>
<string>uppayx3</string>
</array>
5、如果工程的compile source as 選項的值不是Objective–C++,則引用此頭文件的文件類型都要改為.mm
二、支付方法:
1、- (BOOL)isPaymentAppInstalled 判斷設備上是否安裝了銀聯客戶端。
2、 - (BOOL)startPay:(NSString)tn fromScheme:(NSString)schemeStr mode:(NSString)mode viewController:(UIViewController)viewController
tn是交易流水號,從商戶后臺得到,商戶把用戶的訂單信息提交給銀聯,銀聯返回交易流水號,我們只要從后臺得到流水好,調用方法就行; schemeStr:完成支付后,返回自己的應用,在info里的URL types里設置; mode:固定字符串,測試環境@"01",正式軟件版本@"00"; viewController:一般self就行。
3、- (void)handlePaymentResult:(NSURL*)url completeBlock:(UPPaymentResultBlock)completionBlock;
支付過程結束后在AppDelegate里使用,具體見Demo; code:字符串,success,cancel,fail簡單易懂; data:用來校驗簽名。
-(BOOL) application:(UIApplication)application openURL:(NSURL)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
[[UPPaymentControl defaultControl] handlePaymentResult:url completeBlock:^(NSStringcode, NSDictionarydata) {
//結果code為成功時,先校驗簽名,校驗成功后做后續處理
if([code isEqualToString:@"success"]) {
//判斷簽名數據是否存在
if(data == nil){
//如果沒有簽名數據,建議商戶app后臺查詢交易結果
return;
}
//數據從NSDictionary轉換為NSString
NSData *signData = [NSJSONSerialization dataWithJSONObject:data
options:0
error:nil];
NSString *sign = [[NSString alloc] initWithData:signData encoding:NSUTF8StringEncoding];
//驗簽證書同后臺驗簽證書
//此處的verify,商戶需送去商戶后臺做驗簽
if([self verify:sign]) {
//支付成功且驗簽成功,展示支付成功提示
}
else {
//驗簽失敗,交易結果數據被篡改,商戶app后臺查詢交易結果
}
}
else if([code isEqualToString:@"fail"]) {
//交易失敗
}
else if([code isEqualToString:@"cancel"]) {
//交易取消
}
}];
return YES; }
開發文檔還提供了試用卡號、手機號等信息(此類信息僅供測試使用,不會發生真實交易)
招商銀行借記卡:6226090000000048 手機號:18100000000 密碼:111101 短信驗證碼:123456(先點獲取驗證碼之后再輸入) 證件類型:01身份證 證件號:510265790128303 姓名:張三 華夏銀行貸記卡:6226388000000095 手機號:18100000000 CVN2:248 有效期:1219 短信驗證碼:123456(先點獲取驗證碼之后再輸入) 證件類型:01身份證 證件號:510265790128303 姓名:張三 以上就是銀聯的集成,很簡單。
水平所限,有錯誤求指正。
如果這篇文章對您有些許幫助 請給我點個心吧。