支付寶支付詳解
阿新 • • 發佈:2019-01-24
1.支付寶支付
在說完了微信支付之後,下面我們來說一說支付寶支付,支付寶支付相對微信支付而言要簡單很多,下面大家就一起來研究一下。
1.1支付寶開放平臺註冊
支付寶開放平臺(支付寶支付是免費的,註冊成功後使用的主要為AppKey/SecretKey,其中SecrectKey交由後臺完成整合)
平臺入口:https://open.alipay.com/platform/home.htm。
1.2下載並使用SDK
支付寶支付SDK可以到支付寶開放平臺下載(附帶文件Demo)
或者您使用的是Pods,直接在Podfile新增你要的SDK版本,Pods Update就可以了(Pods的好處是方便管理三方
這裡使用的是Pods直接下載的:(AliPaySDK-2.0)
1.3專案中操作
同上一篇部落格所說的微信一樣,新增好URL Schemes、新增白名單(這裡就不在附圖說明了)
1.4使用支付
在使用支付的時候,要和後臺溝通好,他需要哪些引數用於生成訂單你就給他哪些引數(他要寫好介面,返回的是你用於調起支付的message)
關於支付寶支付回撥有兩種模式,在這裡要注意一下,一種是在未安裝支付寶客戶端的時候發起的網頁支付,另一種是安裝客戶端由客戶端調起支付。
1)這是對返回引數的操作:(未安裝支付寶客戶端,調起網頁支付)
NSString *mesage = [responseObject objectForKey:@"resultCode" ];
NSString *appScheme = @"alisdkdemo";
[[AlipaySDK defaultService] payOrder:mesage fromScheme:appScheme callback:^(NSDictionary *resultDic) {
int code = [[resultDic objectForKey:@"resultStatus"] intValue];
if(code == 9000){
//SVProgressHUD使用的第三方作為提示
[SVProgressHUD showSuccessWithStatus:@"支付成功"];
}else if (code == 8000){
[SVProgressHUD showInfoWithStatus:@"正在處理中"];
}else if (code == 4000){
[SVProgressHUD showInfoWithStatus:@"訂單支付失敗"];
}else if (code == 6001){
[SVProgressHUD showInfoWithStatus:@"使用者中途取消"];
}else if (code == 6002){
[SVProgressHUD showInfoWithStatus:@"網路連接出錯"];
}
}];
2)這是對返回引數的操作:(安裝支付寶客戶端,調起支付)
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
// 支付寶(有幾種模式這裡只舉例:safepay)
if ([url.host isEqualToString:@"safepay"]) {
//安裝客戶端調起支付和未安裝客戶端調起支付方法是有區別的
[[AlipaySDK defaultService]processOderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
//支付成功(同理可以根據狀態碼判斷其他的狀態)
if([resultDic[@"resultStatus"] floatValue] == 9000){
//返回狀態(有很多人會犯這個錯誤 要注意下)
return YES;
}
}
1.5支付寶支付常見異常Bug處理
支付寶支付其實非常簡單的,常見的問題也不是非常多,當第一次做支付的時候,可能會忽略掉,客戶端調起支付,誤把網頁支付當做通用的,其實呢,兩次兩種調起是分開的。