美文网首页支付集成
iOS支付三部曲之集成支付宝支付

iOS支付三部曲之集成支付宝支付

作者: 骑马纵天下 | 来源:发表于2018-11-14 15:55 被阅读67次
支付宝支付

一. 开发前的准备

  • 创建应用>申请开通APP支付>签约>审核,等待时间大概一天左右。
  • 秘钥:不过一般用不到(支付时后台会返回),如果要试支付宝的demo可以找后台或者产品要。

二. 支付宝支付流程

  • 安装支付宝支付流程

    1. 用户在商家App中选择商品下单、确认购买,进入支付环节,选择支付宝,用户点击确认支付;
    2. 进入到支付宝页面,调起支付宝支付,出现确认支付界面;
    3. 用户确认收款方和金额,点击立即支付后出现输入密码界面;
    4. 输入正确密码后,支付宝端显示支付结果;
    5. 自动回跳到商家App中,商家根据付款结果个性化展示订单处理结果。
  • 用户未安装支付宝支付流程

    1. 用户在商家App中选择商品下单、确认购买,进入支付环节,选择支付宝,用户点击确认支付;
    2. 用户未安装支付宝客户端,则调起支付宝网页支付收银台,用户登录支付宝账户;
    3. 登录成功后,进入确认付款页面;
    4. 用户点击确认付款,进入支付密码页面;
    5. 用户输入密码,完成支付,展示支付结果。
  • 系统交互流程:

系统交互流程

三. App支付iOS集成流程

1. 导入支付宝SDK:
  • 通过CocoaPods导入,在工程的Podfile里面添加以下代码:
pod 'AlipaySDK-iOS'

保存并执行 pod install

  • 手动导入SDK

支付宝SDK下载地址 新版本
下载完成后,把下面的文件拷贝到项目文件夹下,导入到项目中,并添加依赖库。

AlipaySDK.bundle
AlipaySDK.framework

选择你的工程设置项,选中“TARGETS”一栏,在“Build Phases”标签栏的“Link Binary With Libraries“添加以下依赖库:


依赖库

关于设置URL Types在上篇文章微信支付有写传送门
到此,项目集成SDK完成下面进入代码环节。

2. 代码

代码仅供参考 有所删减

  • 在调用支付宝之前需要创建订单创建订单成功后后台会把调用支付宝的参数返回,如密码APPID等,目前新版是,拿到后台的返回数据后只需全部给支付宝就OK,同时还需要把Scheme传给支付宝。
  • 注意点:支付宝的调用接口有一个支付回调,只有网页支付才会触发,APP走appdelegate。
//点击支付调的方法其中有微信支付
- (void)cd_paymentMeetingTicketsWithPaymentType:(CDPayFeePayStyle)paymentType
                                   paymentState:(CDPaymentState)paymentState
                                        buyType:(CDPaymentType)buyType
                                           view:(UIView *)view
                                     parameters:(NSDictionary *)parameters
                                   successBlock:(void(^)(NSDictionary * resultStatusDic,BOOL flage))successBlock{
      WS(weakSelf);//这个方法是创建订单 返回调用SDK所需参数
    [CdPaymentHttpRequest cd_payInfoWithPayState:paymentState paymentType:paymentType buyType:buyType view:nil parameter:parameters success:^(NSString *payOrderStr) {
            if (paymentType == CDPayFeePayStyleAlibaba) {//支付宝支付 拿到参数调用支付API
                [[AlipaySDK defaultService]payOrder:payOrderStr fromScheme:ZWYJY_SCHEME callback:^(NSDictionary *resultDic) {
                //注意这个回调是在没有装支付宝APP使用的网页支付才会走的回调,通过APP支付会走appdelegate
                    successBlock(resultDic,YES);
                }];
            }else{//微信支付
                if ([payOrderStr isKindOfClass:[NSString class]]) {
                    NSData *data = [payOrderStr mj_JSONData];
                    NSDictionary *weChatDic = [data mj_JSONObject];
                    if (weChatDic != nil) {
                        ////调起微信支付
                        PayReq *weChatReq = [[PayReq alloc]init];
                        weChatReq.openID = weChatDic[@"appid"];
                        weChatReq.partnerId = weChatDic[@"partnerid"];
                        weChatReq.prepayId = weChatDic[@"prepayid"];
                        weChatReq.nonceStr = weChatDic[@"noncestr"];
                        weChatReq.timeStamp = [weChatDic[@"timestamp"] integerValue];
                        weChatReq.package = weChatDic[@"package"];
                        weChatReq.sign = weChatDic[@"sign"];
                        [WXApi sendReq:weChatReq];
                        successBlock(@{},YES);
                    }else{
                        [[CdPaymentCenter sharedCdPaymentCenter].hud hide:YES];
                        [MBProgressHUD showMessage:@"服务器返回错误"];
                    }
                    
                }
        }else{
            successBlock(@{},NO);
        }
        
    } errBlock:^(NSString *errMsg) {
        
    }];
   
    
}
  • 支付回调 使用支付宝APP才会走的回调
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    return  [WXApi handleOpenURL:url delegate:[CdWeChatAPIManager sharedCdWeChatAPIManager]];
}

// 配置系统回调接口
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    BOOL result = [UMSocialSnsService handleOpenURL:url];
    
    if (result == FALSE) {
        //调用其他SDK,例如支付宝SDK等
        if ([url.host isEqualToString:@"safepay"]) {
            //跳转支付宝钱包进行支付,处理支付结果
            [[AlipaySDK defaultService]processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {//这个方法是支付宝支付结果回调
                [kNotificationCenter postNotificationName:kAlibabaPaymentStatus object:resultDic];//发起通知处理支付结果
            }];
            return YES;
        }
        
        return [WXApi handleOpenURL:url delegate:[CdWeChatAPIManager sharedCdWeChatAPIManager]];
        
    }
    
    return result;
}
// NOTE: 9.0以后使用新API接口
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
{
    BOOL result = [UMSocialSnsService handleOpenURL:url];
    if (result == false) {
        if ([url.host isEqualToString:@"safepay"]) {
            //跳转支付宝钱包进行支付,处理支付结果
            [[AlipaySDK defaultService]processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
                [kNotificationCenter postNotificationName:kAlibabaPaymentStatus object:resultDic];//发起通知处理支付结果
            }];
            return YES;
        }
        return [WXApi handleOpenURL:url delegate:[CdWeChatAPIManager sharedCdWeChatAPIManager]];
    }
    return result;
}
  • 支付宝resultStatus结果码含义
返回码 含义
9000 订单支付成功
8000 正在处理中,支付结果未知(有可能已经支付成功),请查询商户订单列表中订单的支付状态
4000 订单支付失败
5000 重复请求
6001 用户中途取消
6002 网络连接出错
6004 支付结果未知(有可能已经支付成功),请查询商户订单列表中订单的支付状态
其它 其它支付错误

关于处理支付结果根据需求来写,这里就不写了。

相关文章

  • iOS Alipay -支付宝

    iOS 集成Alipay -支付宝支付 集成 AliPay - 支付宝

  • 支付宝支付流程(I)

    参考资料:支付宝支付集成支付宝支付集成实现蚂蚁金服iOS支付集成

  • ios支付宝签名

    支付宝: iOS 支付功能概述 - 简书 1.iOS集成支付宝 - 简书 2.iOS 集成支付宝 - 简书 3.i...

  • ## [iOS 支付宝支付]

    [iOS开发系列-支付宝支付] 概述 开发中支付通常都会集成支付宝支付,下面讲解支付宝的整体流程。 集成支付宝支付...

  • ios-支付集成

    iOS开发之第三方支付支付宝支付教程,史上最新最全第三方支付宝支付方式实现、支付宝集成教程,支付宝实现流程 iOS...

  • 文章汇总

    ios iOS 网络篇 网络基础总结 支付宝集成 iOS支付宝支付集成 - demo例子集 - 博客园 理解 iO...

  • iOS支付宝功能集成

    iOS快速集成支付宝详解/支付宝集成获取私钥与公钥 在集成支付宝功能前,我们必须了解下什么支付宝流程,下图是支付宝...

  • iOS集成支付宝-Swift版

    iOS集成支付宝-Swift版 如果要了解整个支付流程可以阅读文章《手机App集成微信支付&支付宝-iOS&And...

  • iOS- 收藏 (专题文章分类)

    支付宝/ 微信 / 银联 1. iOS 支付宝详细集成总结2. 支付宝3. iOS-微信支付和支付宝支付4. ...

  • 集成支付、第三方登录知识总结

    1、玩转iOS开发:集成 WeChat SDK - 支付篇2、玩转iOS开发:集成 AliPay - 支付宝

网友评论

    本文标题:iOS支付三部曲之集成支付宝支付

    本文链接:https://www.haomeiwen.com/subject/avejfqtx.html