按照支付寶開放平臺的文檔來開發(fā)
基本流程如下:
1 下載支付寶支付SDK,導(dǎo)入到xcode,并添加依賴庫
2 按照文檔配置請求字符串(請求字符串可由server端配置好然后返回給客戶端)隅肥,尤其對既支持支付寶支付又支持微信支付的客戶端褥伴,由于微信支付需要先生成prepay_id,然后在客戶端用這個(gè)參數(shù)及其他的一些參數(shù)向微信發(fā)送支付請求解阅,可以統(tǒng)一向server端發(fā)起支付請求,server端根據(jù)支付寶和微信返回不同的json數(shù)據(jù)筹裕,既如果是微信支付則返回支付所需的字段泛啸,詳見微信api文檔,如果是支付寶則返回orderStr,客戶端調(diào)用支付寶提供的接口- (void)payOrder:(NSString*)orderStr
fromScheme:(NSString*)schemeStr
callback:(CompletionBlock)completionBlock;直接發(fā)起支付請求
orderStr:訂單信息,在這里有服務(wù)器端返回
fromScheme:調(diào)用支付的app注冊在info.plist中的scheme
callBack:支付結(jié)果回調(diào)Block
另外可能app被后臺進(jìn)程kill掉,此時(shí)需要在這個(gè)方法寫入支付結(jié)果回掉處理函數(shù)
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
//如果極簡開發(fā)包不可用藐窄,會(huì)跳轉(zhuǎn)支付寶錢包進(jìn)行支付,需要將支付寶錢包的支付結(jié)果回傳給開發(fā)包
if ([url.host isEqualToString:@"safepay"]) {
[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
//【由于在跳轉(zhuǎn)支付寶客戶端支付的過程中酬土,商戶app在后臺很可能被系統(tǒng)kill了枷邪,所以pay接口的callback就會(huì)失效,請商戶對standbyCallback返回的回調(diào)結(jié)果進(jìn)行處理,就是在這個(gè)方法里面處理跟callback一樣的邏輯】
NSLog(@"result = %@",resultDic);
}];
}
if ([url.host isEqualToString:@"platformapi"]){//支付寶錢包快登授權(quán)返回authCode
[[AlipaySDK defaultService] processAuthResult:url standbyCallback:^(NSDictionary *resultDic) {
//【由于在跳轉(zhuǎn)支付寶客戶端支付的過程中,商戶app在后臺很可能被系統(tǒng)kill了东揣,所以pay接口的callback就會(huì)失效践惑,請商戶對standbyCallback返回的回調(diào)結(jié)果進(jìn)行處理,就是在這個(gè)方法里面處理跟callback一樣的邏輯】
NSLog(@"result = %@",resultDic);
}];
}
return YES;
}