最近做個項目需要內建支付,當然選用支付寶,但是過程中發現了巨大的坑
支付完成後,在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