1. 程式人生 > >支付寶支付詳解

支付寶支付詳解

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處理

支付寶支付其實非常簡單的,常見的問題也不是非常多,當第一次做支付的時候,可能會忽略掉,客戶端調起支付,誤把網頁支付當做通用的,其實呢,兩次兩種調起是分開的。