For XXFor XX

作为一个高手
我习惯了孤独

ios 支付宝支付老版本与新版本的比较

关乎支付宝支付,支付宝官方表示订单信息的加签过程放在客户端完成。商户的privatekey等数据严禁放在客户端。

本文主要针对老版本和新版本的支付回调做一些简单的记录。

需要配置的就是一些依赖库的配置以及appScheme

老版本 比如15.0.0

老版本的支付是调用下面的接口,在回调里面处理。

   [[AlipaySDK defaultService] payOrder: 加签订单字符串 fromScheme:KAppScheme callback:^(NSDictionary *resultDic) {
       NSLog(@"reslut = %@",resultDic);
  }];

但是新版的支付sdk是这么说明的(又变成了网页支付,有一句mmp不知当讲不当讲):

/**
 *  支付接口
 *
 *  @param orderStr       订单信息
 *  @param schemeStr      调用支付的app注册在info.plist中的scheme
 *  @param completionBlock 支付结果回调Block,用于wap支付结果回调(非跳转钱包支付)
 */
- (void)payOrder:(NSString *)orderStr
      fromScheme:(NSString *)schemeStr
      callback:(CompletionBlock)completionBlock;

新版本的支付 版本15.5.0

老样子:我们还是需要调用原来的接口:

   [[AlipaySDK defaultService] payOrder: 加签订单字符串 fromScheme:KAppScheme callback:^(NSDictionary *resultDic) {
       NSLog(@"reslut = %@",resultDic);
  }];
如果安装了客户端,我们需要传参数,调用支付宝,但是支付宝的回调不在这里,我们需要在AppDelegate里进行处理回调,也就是说我们新版本的支付宝回调已经转移到了AppDelegate里,发送通知完成处理即可。
- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {
    
    if ([url.host isEqualToString:@"safepay"]) {
        //跳转支付宝钱包进行支付,处理支付结果
        FTWS(weakSelf);
        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
            [weakSelf dealPayBack:resultDic];
            
        }];
    }
    return YES;
}

// NOTE: 9.0以后使用新API接口
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
{
    if ([url.host isEqualToString:@"safepay"]) {
        //跳转支付宝钱包进行支付,处理支付结果
        
//        NSLog(@"%@",url);
         FTWS(weakSelf);
        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
            [weakSelf dealPayBack:resultDic];
            
        }];
    }
    return YES;
}
-(void)dealPayBack:(NSDictionary *)resultDic{
    BOOL isOilCardPay =[NCUserInfoManager isReadyOilCardPay];
    
    if (isOilCardPay) {
        [LXNotificationCenter postNotificationName:FTBuyOilCardAliPay object:resultDic];
    }
    
    BOOL isGrabOrderPay =[NCUserInfoManager isReadyGraPay];
    
    if (isGrabOrderPay) {
        [LXNotificationCenter postNotificationName:FTGrabOrderAliPay object:resultDic];
    }
    
}
转载请注明出处:For XX » ios 支付宝支付老版本与新版本的比较
标签:iOS
分享到: 更多