iOS最新快速集成支付寶支付并支付成功(2022年版)

關(guān)于集成支付寶支付網(wǎng)上也有很多流程和教程了 ,不過(guò)可能有些是以前的版本,大家也可以自行參考一下,不過(guò)接下來(lái)我要說(shuō)的是2022年版本目前最新的流程,使用的是cocopods快速集成的方式。同時(shí)這里也說(shuō)明一下為什么使用cocopods的方式,而不是采用手動(dòng)集成的方式:
1、cocopods方式相比較而言,更簡(jiǎn)單和省時(shí)省力,比如手動(dòng)集成的話,需要手動(dòng)添加很多庫(kù)和文件,容易出錯(cuò);
2、cocopods方式對(duì)于項(xiàng)目的后續(xù)維護(hù)和升級(jí)提供了便利,升級(jí)SDK只需要執(zhí)行一下cocopods命令就可以了。

那接下來(lái)閑話不敘,直接開(kāi)搞,步驟如下:

1、Podfile文件中加入如下內(nèi)容:

pod  'AlipaySDK-iOS'

然后在終端里執(zhí)行命令

pod update --no-repo-update

2、在AppDelegate.m文件中導(dǎo)入頭文件,其他地方需要引用的地方也是這么引入

# import <AlipaySDK/AlipaySDK.h>

3、在AppDelegate.m文件的 @implementation AppDelegate 中加入以下代碼,并且把其中的 NSLog 改為實(shí)際業(yè)務(wù)處理代碼:

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {
    if ([url.host isEqualToString:@"safepay"]) {
        //跳轉(zhuǎn)支付寶錢(qián)包進(jìn)行支付,處理支付結(jié)果
        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
            NSLog(@"result = %@",resultDic);
        }];
    }
    return YES;
}
// NOTE: 9.0以后使用新API接口
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
{
    if ([url.host isEqualToString:@"safepay"]) {
        //跳轉(zhuǎn)支付寶錢(qián)包進(jìn)行支付,處理支付結(jié)果
        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
            NSLog(@"result = %@",resultDic);
        }];
    }
    return YES;
}

4、點(diǎn)擊項(xiàng)目名稱(chēng),點(diǎn)擊 Info 選項(xiàng)卡,在“URL Types”選項(xiàng)中,點(diǎn)擊“+”,在“URL Schemes”中輸入一串獨(dú)特而唯一的字符串,比如:“alisdkdemo”。個(gè)人建議可以使用bundleid去掉點(diǎn)號(hào)(.)后的字符串,比如bundleid為:com.baidu.niubi,那么這里我們就可以使用combaiduniubi,因?yàn)閎undleid已經(jīng)保證了了唯一性,所以使用這個(gè)就不太會(huì)重復(fù)。
注意:這里的 URL Schemes 中輸入的 alisdkdemo,為測(cè)試 demo,實(shí)際商戶(hù)的 app 中要填寫(xiě)?yīng)毩⒌?scheme,建議跟商戶(hù)的 app 有一定的標(biāo)示度,要做到和其他的商戶(hù) app 不重復(fù),否則可能會(huì)導(dǎo)致支付寶返回的結(jié)果無(wú)法正確跳回商戶(hù) app。

5、發(fā)起支付,組裝請(qǐng)求信息,這個(gè)階段需要把后臺(tái)把信息組裝好,這個(gè)應(yīng)在 商戶(hù)服務(wù)端 完成,商戶(hù)服務(wù)端直接將組裝和簽名后的請(qǐng)求串 orderString 傳給客戶(hù)端,客戶(hù)端直接傳給 SDK 發(fā)起請(qǐng)求。示例代碼如下:

 NSString *appScheme = @"combaiduniubi";
        // NOTE: 將簽名成功字符串格式化為訂單字符串,請(qǐng)嚴(yán)格按照該格式
        NSString *orderString = [response stringWithKey:@"pay_apptrade"];

        // NOTE: 調(diào)用支付結(jié)果開(kāi)始支付
        [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
            
            DLog(@"reslut = %@",resultDic);
            
            NSInteger resultStatus = [[resultDic stringWithKey:@"resultStatus"] integerValue];
            
            switch (resultStatus) {
                case 9000:{//訂單支付成功
                    
                    [MBProgressHUD showSuccess:XMFLI(@"支付成功") toView:[kApplication.windows lastObject]];
                    
                }
                    break;
                case 8000:{//正在處理中,支付結(jié)果未知
                    
                    [MBProgressHUD showError:XMFLI(@"正在處理中...") toView:[kApplication.windows lastObject]];
                    
                }
                    break;
                case 4000:{//訂單支付失敗
                    
                    [MBProgressHUD showError:XMFLI(@"支付失敗") toView:[kApplication.windows lastObject]];
                    
                }
                    break;
                case 5000:{//重復(fù)請(qǐng)求
                    
                    [MBProgressHUD showError:XMFLI(@"重復(fù)請(qǐng)求") toView:[kApplication.windows lastObject]];
                }
                    break;
                case 6001:{//用戶(hù)中途取消
                        
                    [MBProgressHUD showError:XMFLI(@"中途取消") toView:[kApplication.windows lastObject]];
                }
                    break;
                case 6002:{//網(wǎng)絡(luò)連接出錯(cuò)
                        
                    [MBProgressHUD showError:XMFLI(@"網(wǎng)絡(luò)連接出錯(cuò)") toView:[kApplication.windows lastObject]];
                    
                }
                    break;
                case 6004:{//支付結(jié)果未知
                        
                    [MBProgressHUD showError:XMFLI(@"支付結(jié)果未知") toView:[kApplication.windows lastObject]];
                    
                }
                    break;
                    
                default:{//其他支付錯(cuò)誤
                    
                    [MBProgressHUD showError:XMFLI(@"支付出錯(cuò)了") toView:[kApplication.windows lastObject]];
                }
                    break;
            }
            
            
            
            
        }];

注意:經(jīng)官方確認(rèn),實(shí)現(xiàn)這個(gè)方法喚起支付寶錢(qián)包app支付的時(shí)候,是不會(huì)走callback這個(gè)回調(diào)的,會(huì)走AppDelegate里面實(shí)現(xiàn)的回調(diào)方法。只有在調(diào)起h5網(wǎng)頁(yè)支付的時(shí)候,才會(huì)走callback這個(gè)回調(diào)方法。

6、回調(diào)處理

- (BOOL)application:(UIApplication*)app openURL:(NSURL*)url options:(NSDictionary *)options

{

    if ([url.host isEqualToString:@"safepay"]) { //支付寶支付的回調(diào)

        //跳轉(zhuǎn)支付寶錢(qián)包進(jìn)行支付,處理支付結(jié)果

        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {

            QDLog(@"支付結(jié)果 = %@",resultDic);

            NSIntegerresCode = [resultDic[@"resultStatus"]integerValue];

            if(resCode ==9000) {//支付成功

                //發(fā)送支付成功的通知

                [[NSNotificationCenter defaultCenter] postNotificationName:NoticePaySuccess object:nil];

            }elseif(resCode ==6001){//用戶(hù)中途取消

                //發(fā)送支付取消的通知

                [[NSNotificationCenter defaultCenter] postNotificationName:NoticePayCancel object:nil];

            }else{

                 [[NSNotificationCenter defaultCenter] postNotificationName:NoticePayFailure object:nil];

            }

        }];

    }

    return YES;

}

到此為止,支付寶支付的集成和使用就算完成了。
最后也附上支付寶官方的開(kāi)放文檔地址:https://opendocs.alipay.com/open/204/105295

如果以上的方法幫助到你了,歡迎分享,歡迎私信和我交流。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 學(xué)而時(shí)習(xí)之,不亦悅乎,大家好,我是張杰。 iOS開(kāi)發(fā)支付模塊分為兩個(gè)部分: 1、調(diào)取外部支付,例如支付寶、微信、銀...
    杰小冷_4957閱讀 1,942評(píng)論 0 2
  • 最近項(xiàng)目用到支付寶支付,第一次自己做支付,簡(jiǎn)直無(wú)從下手,一路瞎闖 總算是成功了. 這里記錄一下,以備后用 首先兩個(gè)...
    LinkStart閱讀 1,877評(píng)論 0 3
  • 前期準(zhǔn)備 接入前期準(zhǔn)備工作包括商戶(hù)簽約和密鑰配置,已完成商戶(hù)可略過(guò)。 下載支付寶SDK支付寶SDK下載地址 SDK...
    TianBai閱讀 3,568評(píng)論 16 104
  • 實(shí)現(xiàn)支付寶支付的準(zhǔn)備工作: 1.向支付寶簽約,成為支付寶的商戶(hù) 簽約完成后,支付寶會(huì)提供一些必要的數(shù)據(jù)給我們 商戶(hù)...
    Anson楊春安閱讀 8,613評(píng)論 0 6
  • 這次是一個(gè)新項(xiàng)目,集成支付寶和微信支付,客戶(hù)端集成其實(shí)非常簡(jiǎn)單,主要參數(shù)和配置都是可以在后臺(tái)完成。不過(guò)還是碰到了一...
    善良的karl閱讀 1,449評(píng)論 0 1

友情鏈接更多精彩內(nèi)容