iOS支付宝支付集成(2020)

学而时习之,不亦悦乎,大家好,我是张杰。

iOS开发支付模块分为两个部分:

1、调取外部支付,例如支付宝、微信、银联等。

2、苹果内购。

前面我们已经讲过苹果内购,现在有朋友问能不能出一个详细的支付宝支付流程,刚好我也想复习一下,下面我们来实现一下吧。

一、支付宝。

1、登录支付宝开放平台 https://open.alipay.com/platform/home.htm
注册或者登录,然后创建应用,关联商户号,设置签名,拿到密钥和AppID还有商户ID 就可以开始了,这个事情一般是运营或者后台来做,基本轮不到开发来搞,如果没有人搞,老板信任你,账号密码给你了你也可以分分钟搞定。这里我是端着小板凳在监理电脑面前和她一起弄的,就没有截图了。
有疑问看这里:https://opendocs.alipay.com/open

2、现在一般三方库或者SDK用pod管理,如果你的项目不是pod管理的,可以看我的这篇文章:https://www.jianshu.com/p/366eef7c2472
如果你不想用pod或者变换有难度,那就手动导入SDK吧 看这里:https://opendocs.alipay.com/open/204/105295
下面将pod导入,打开项目中的podfile文件

   pod 'AlipaySDK-iOS'

打开终端,项目拖入

   pod install

3、AppDelegate里导入头文件

#import 

设置代码

// NOTE: 9.0以后使用新API接口
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options
{
if ([url.host isEqualToString:@"safepay"]) {
    // 支付跳转支付宝钱包进行支付,处理支付结果
    [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
        NSLog(@"result = %@",resultDic);
    }];
    
    // 授权跳转支付宝钱包进行支付,处理支付结果
    [[AlipaySDK defaultService] processAuth_V2Result:url standbyCallback:^(NSDictionary *resultDic) {
        NSLog(@"result = %@",resultDic);
        // 解析 auth code
        NSString *result = resultDic[@"result"];
        NSString *authCode = nil;
        if (result.length>0) {
            NSArray *resultArr = [result componentsSeparatedByString:@"&"];
            for (NSString *subResult in resultArr) {
                if (subResult.length > 10 && [subResult hasPrefix:@"auth_code="]) {
                    authCode = [subResult substringFromIndex:10];
                    break;
                }
            }
        }
        NSLog(@"授权结果 authCode = %@", authCode?:@"");
    }];
}else{
    return [WXApi handleOpenURL:url delegate:self];
}
return YES;
}

项目设置


551603244534_.pic_hd.jpg

然后在点击支付按钮处调用:

    NSString *appScheme = @"ruichaoalisdk";
    // NOTE: 将签名成功字符串格式化为订单字符串,请严格按照该格式
    NSString *orderString = @"后台给的订单拼接字符串";

    // NOTE: 调用支付结果开始支付
    [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
        NSLog(@"reslut = %@",resultDic);
        
    }];

至此,客户端流程完毕。总结一下:客户端要做的很简单,导入SDK,调用后台接口拿到 "订单拼接字符串",调用SDK,根据返回处理具体业务就好了。

如果有错误或者还有其他问题,可以联系我:[email protected],谢谢

你可能感兴趣的:(iOS支付宝支付集成(2020))