最近做个项目需要集成支付,当然选用支付宝,但是过程中发现了巨大的坑
支付完成后,在appdelegate中作回调,但是这个是不会执行
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
NSString *str1 = [url absoluteString];
NSLog(@"url %@",[str1 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]);
//urle
//跳转支付宝钱包进行支付,处理支付结果
//妈的这是个坑,下面这个函数根本就不会执行
//如果极简 SDK 不可用,会跳转支付宝钱包进行支付,需要将支付宝钱包的支付结果回传给 SDK
if ([url.host isEqualToString:@"safepay"]) {
NSLog(@"url %@",url.host);
[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
NSLog(@"safepay = %@",resultDic);
}];
}
if ([url.host isEqualToString:@"platformapi"]){//支付宝钱包快登授权返回 authCode
[[AlipaySDK defaultService] processAuthResult:url standbyCallback:^(NSDictionary *resultDic) {
NSLog(@"platformapi = %@",resultDic);
}];
}
return YES;
}
回调操作在下面代码中
[[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
NSLog(@"reslut 这里回调? = %@",resultDic);
[self aLiPayCallBack:resultDic tradeNO:_product.orderId];
}];
特别注意一点:在appdelegate中的回调是不能删除的,删除后,调用支付宝客户端支付后不能回调。
支付宝Sdk版本:2.2.3