天天看點

IOS內建支付寶回調的坑

最近做個項目需要內建支付,當然選用支付寶,但是過程中發現了巨大的坑

支付完成後,在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

繼續閱讀