ios支付宝支付失败不回调_iOS集成支付宝,支付成功之后"收不到回调"解决

这篇博客主要介绍了iOS应用在升级支付宝SDK到v15.1.0及以上版本后,遇到支付成功但无法接收到回调的问题。文章详细解析了新版本SDK的回调机制变化,并提供了在iOS 9.0之前和之后的解决方案,包括在AppDelegate中处理`application:openURL:options:`和`application:openURL:sourceApplication:annotation:`方法,确保在不同iOS版本下都能正确处理支付结果。
摘要由CSDN通过智能技术生成

iOS集成支付宝,支付成功之后"收不到回调"解决

以下方法仅适用于支付宝sdk从 v15.1.0之前的版本 升级到 v15.1.0版本及之后

看下官方更新日志

IOS版本号:v15.1.0

修改时间:2016-4-28

更新点:

1. 支付结果返回统一,便于用户接入。

原有方案:payOrder:fromScheme:callback接口,业务传入callback1,用于支付结果返回;

processOrderWithPaymentReulst:standbyCallback接口,业务传入callback2,用于支付结果返回;

一般一次支付中(跳支付宝客户端支付),都会涉及到这两个接口;原有的规则是callback1存在,则统一调用callback1返回支付结果给业务方,若callback1不存在(app被杀掉的情况),则调用callback2返回支付结果给业务方。

现有方案:payOrder:fromScheme:callback接口,业务会传入CompletionBlock1(本地没有安装支付宝客户端的情况下(走H5收银台),会通过该CompletionBlock1反馈结果); processOrderWithPaymentResult:standByCallback接口,业务会传入CompletionBlock2(本地安装了支付宝客户端的情况下,会通过该CompletionBlock2反馈结果)。

可以发现在 v15.1.0 之后回调机制发生变化,调用支付宝客户端支付不会走payOrder:fromScheme:callback 的回调,只会走Appdelegate 的方法:

注:iOS 9.0之后方法的变更

//可以看到该方法适用于iOS 4.2 - > iOS 9.0

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation NS_DEPRECATED_IOS(4_2, 9_0, "Please use application:openURL:options:") __TVOS_PROHIBITED;

//iOS 9.0 之后使用下面方法

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options NS_AVAILABLE_IOS(9_0);

使用如下:

#ifdef IOS9

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options

{

if ([url.host isEqualToString:@"safepay"]) {

//一般只需要调用这一个方法即可

[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {

NSLog(@"result = %@",resultDic);

[[NSNotificationCenter defaultCenter] postNotificationName:kAliPayCallBack object:resultDic];

}];

[[AlipaySDK defaultService] processAuth_V2Result:url

standbyCallback:^(NSDictionary *resultDic) {

NSLog(@"result = %@",resultDic);

NSString *resultStr = resultDic[@"result"];

NSLog(@"result = %@",resultStr);

}];

}

else if ([url.host isEqualToString:@"platformapi"]){//支付宝钱包快登授权返回 authCode

[[AlipaySDK defaultService] processAuthResult:url standbyCallback:^(NSDictionary *resultDic) {

NSLog(@"result = %@",resultDic);

}];

}

return YES;

}

#else

-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{

if ([url.host isEqualToString:@"safepay"]) {

[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {

NSLog(@"result = %@",resultDic);

}];

[[AlipaySDK defaultService] processAuth_V2Result:url

standbyCallback:^(NSDictionary *resultDic) {

NSLog(@"result = %@",resultDic);

NSString *resultStr = resultDic[@"result"];

NSLog(@"result = %@",resultStr);

}];

}

else if ([url.host isEqualToString:@"platformapi"]){//支付宝钱包快登授权返回 authCode

[[AlipaySDK defaultService] processAuthResult:url standbyCallback:^(NSDictionary *resultDic) {

NSLog(@"result = %@",resultDic);

}];

}

return YES;

}

#endif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值