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

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

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

   

ios 支付 支付宝支付流程图 ios支付宝支付设置在哪里_支付宝支付


支付功能的交互流程


第二步: 集成 SDK


1 . 将 SDK 拖进 工程


ios 支付 支付宝支付流程图 ios支付宝支付设置在哪里_支付宝支付_02


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

     

ios 支付 支付宝支付流程图 ios支付宝支付设置在哪里_服务器_03


                                                                 添加SDK依赖的类库



3 . 设置为URL Schemes 




设置为URL Schemes


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

AppDelegate.m

#import <AlipaySDK/AlipaySDK.h>//支付宝支付
#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];

    }
// 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];

    }
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{

[WXApi handleOpenURL:url delegate:self];