為了節(jié)約開發(fā)成本列肢,很多Native-H5混合App采用手機網(wǎng)站支付的方式去實現(xiàn)支付模塊窝撵。但手機網(wǎng)站支付的網(wǎng)絡依賴比較嚴重左痢,也通常需要經(jīng)過更多的驗證促王,這種種原因導致手機網(wǎng)站支付的成功率比Native支付低腾降,對商戶的利益造成影響拣度。
一:導入sdk流程如下:
1.下載sdk,把iOS包中的壓縮文件中以下文件拷貝到項目文件夾下螃壤,并導入到項目工程中抗果。
AlipaySDK.bundle
AlipaySDK.framework
2.在Build Phases選項卡的Link Binary With Libraries中,增加以下依賴:
注意:
如果是Xcode 7.0之后的版本奸晴,需要添加libc++.tbd冤馏、libz.tbd;
如果是Xcode 7.0之前的版本寄啼,需要添加libc++.dylib逮光、libz.dylib。
二:使用說明:
1.在需要調用AlipaySDK的文件中墩划,增加頭文件引用涕刚。
#import <AlipaySDK/AlipaySDK.h>
2.調用接口
[[AlipaySDK defaultService]fetchOrderInfoFromH5PayUrl:url]
3.實現(xiàn)UIWebViewDelegate協(xié)議,攔截H5的URL(如果使用WKUIDelegate協(xié)議乙帮,請點擊查看)
如果返回的resultCode為9000杜漠,接入方可以提示用戶支付成功;返回結果不是9000的情況,無需做任何處理驾茴。如果returnUrl不為空盼樟,建議接入方跳轉到該returnUrl。
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString* orderInfo = [[AlipaySDK defaultService]fetchOrderInfoFromH5PayUrl:[request.URL absoluteString]];
if (orderInfo.length > 0) {
// 調用支付接口進行支付
[[AlipaySDK defaultService]payUrlOrder:orderInfo fromScheme:@"alisdkdemo" callback:^(NSDictionary* result) {
// 處理返回結果
NSString* resultCode = result[@"resultCode"];
//建議操作: 根據(jù)resultCode做處理
// returnUrl 代表 第三方App需要跳轉的成功頁URL
NSString* returnUrl = result[@"returnUrl"];
//建議操作: 打開returnUrl
}];
return NO;
}
return YES;
}
4.支付寶客戶端返回url處理方法锈至,在AppDelegate.m文件中晨缴,增加頭文件引用
#import <AlipaySDK/AlipaySDK.h>
在@implementation AppDelegate中增加如下代碼:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
//如果極簡開發(fā)包不可用,會跳轉支付寶錢包進行支付裹赴,需要將支付寶錢包的支付結果回傳給開發(fā)包
if ([url.host isEqualToString:@"safepay"]) {
[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
//【由于在跳轉支付寶客戶端支付的過程中喜庞,商戶app在后臺很可能被系統(tǒng)kill了,所以pay接口的callback就會失效棋返,請商戶對standbyCallback返回的回調結果進行處理,就是在這個方法里面處理跟callback一樣的邏輯】
NSLog(@"result = %@",resultDic);
}];
}
if ([url.host isEqualToString:@"platformapi"]){//支付寶錢包快登授權返回authCode
[[AlipaySDK defaultService] processAuthResult:url standbyCallback:^(NSDictionary *resultDic) {
//【由于在跳轉支付寶客戶端支付的過程中延都,商戶app在后臺很可能被系統(tǒng)kill了,所以pay接口的callback就會失效睛竣,請商戶對standbyCallback返回的回調結果進行處理,就是在這個方法里面處理跟callback一樣的邏輯】
NSLog(@"result = %@",resultDic);
}];
}
return YES;
}