iOS-支付宝支付的实现

来源:互联网 发布:人工智能 梗 编辑:程序博客网 时间:2024/05/16 07:25

关于支付宝支付, 首先了解一下, 支付流程:

1.用户点击支付
2.客户端请求服务器用户支付
3.服务器接收请求生成金额订单等要给第三方支付的一切信息,并生成回调参数传给客户端
4.客户端接收信息(一般会再让用户确认支付或者干脆购买后是生成订单,然后才是付款)并将服务器给的信息分别传入SDK需要的参数中,调用SDK的支付方法
5.由支付宝SDK向支付宝自己的服务器发出支付请求,支付宝的服务器接收支付请求处理成功后,给客户端本身与公司的后台都发送一条支付成功的消息,客户端与后台根据这条消息再做处理.

开发步骤
第一步: 仔细看开发文档, 并 下载 SDK
开发文档 很重要, 建议先把开发文档仔仔细细看一遍, 可以避免很多坑, 特别是交互流程:

   

支付功能的交互流程

第二步: 集成 SDK

1 . 将 SDK 拖进 工程


2 . 在Build Phases 选项卡的 Link Binary With Libraries 中,增加以下依赖:

     

                                                                 添加SDK依赖的类库


3 . 设置为URL Schemes 


设置为URL Schemes

4 . 添加支付逻辑代码,完成支付过程

在 AppDelegate.m 中, 

#import <AlipaySDK/AlipaySDK.h>//支付宝支付

API调用说明

  • 发起支付: orderString由后端统一生成,appScheme就是环境配置中设置的URLScheme 

    [[AlipaySDK defaultService] payOrder:orderString                           fromScheme:appScheme                             callback:^(NSDictionary *resultDic) {                                                                                                                                                                                                                  //支付结果返回                                                  NSLog(@"reslut = %@",resultDic);                                                                                         //成功                                                                                                                                                                                                                                                                                                                                                                      //失败                                                                               }];
  • 处理支付结果:在AppDelegate的以下三个方法中调用,这里调用方法单独封装出来

    - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { 
    NSString *urlStr = [NSString stringWithFormat:@"%@",url];    if ([url.host isEqualToString:@"safepay"]) {  //判断支付宝回调        //跳转支付宝钱包进行支付,处理支付结果        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {            //TY_Log(@"result = %@",resultDic);            //处理支付结果        }];    }else if ([sourceApplication isEqualToString:@"com.tencent.xin"] && [urlStr containsString:@"pay"]){ //判断微信回调        TYLLog(@"跳转微信支付处理支付方式结果");        return [WXApi handleOpenURL:url delegate:self];    }
    return YES;}
    // NOTE: 9.0以后使用新API接口- (BOOL)application:(UIApplication *)app         openURL:(NSURL *)url         options:(NSDictionary<NSString*, id> *)options {
    NSString *urlStr = [NSString stringWithFormat:@"%@",url];    if ([url.host isEqualToString:@"safepay"]) {  //判断支付宝回调        //跳转支付宝钱包进行支付,处理支付结果        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {            //TY_Log(@"result = %@",resultDic);            //处理支付结果        }];    }else if ([sourceApplication isEqualToString:@"com.tencent.xin"] && [urlStr containsString:@"pay"]){ //判断微信回调        TYLLog(@"跳转微信支付处理支付方式结果");        return [WXApi handleOpenURL:url delegate:self];    }
    return YES;}
    - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
    [WXApi handleOpenURL:url delegate:self];
    }




0 0