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

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

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

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

老版本 比如15.0.0

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

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

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

1
2
3
4
5
6
7
8
9
10
/**
* 支付接口
*
* @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

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

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

#####如果安装了客户端,我们需要传参数,调用支付宝,但是支付宝的回调不在这里,我们需要在AppDelegate里进行处理回调,也就是说我们新版本的支付宝回调已经转移到了AppDelegate里,发送通知完成处理即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
- (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];
}
}