前言:由于支付宝全面升级,所以相应的从老版本升级到新版本,结果收不到支付回调。
在这里还给自己挖了个坑,因为由于Xcode8的原因,我将系统日志屏蔽掉了,然后导致NSLog打印不出来(因为是复制demo过来的),一直以为收不到支付回调。
原因:发现原来支付宝升级后
//调用支付结果开始支付
[[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
MyLog(@"reslut = %@",resultDic);
}];
这个方法不再处理支付回调,而是转到了AppDelegate
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation;
//9.0以后使用新API接口
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options;
在这边进行处理支付回调。
代码示例
#pragma mark 支付宝支付回调
- (void)alipayProcessOrderWithPaymentResult:(NSDictionary *)resultDic
{
NSString *resultStatus = [resultDic objectForKey:@"resultStatus"];
NSString *memo;
if ([resultStatus intValue] == 9000) {
memo = @"支付成功!";
}else {
switch ([resultStatus intValue]) {
case 4000:
memo = @"失败原因:订单支付失败!";
break;
case 6001:
memo = @"失败原因:用户中途取消!";
break;
case 6002:
memo = @"失败原因:网络连接出错!";
break;
case 8000:
memo = @"正在处理中...";
break;
default:
memo = [resultDic objectForKey:@"memo"];
break;
}
}
[IWAlert singleAlertWithTarget:[UIApplication sharedApplication].keyWindow.rootViewController title:@"支付宝支付" message:memo actionTitle:@"确定" success:nil];
}
支付宝SDK及demo下载地址: https://doc.open.alipay.com/doc2/detail.htm?treeId=54&articleId=104509&docType=1