0%

友盟微信支付不回调

这是友盟 UMSocialSnsService.h 里的一个处理回调的方法

1
2
3
4
5
6
7
8
9
10
11
12

/**
 
 Deprecated API
 
 处理app的URL方法
 
 @param url 传入的url
 
 @return wxApiDelegate 实现微信代理对象
 */
+(BOOL)handleOpenURL:(NSURL *)url wxApiDelegate:(id<WXApiDelegate>)wxApiDelegate;

使用发现这个 wxApiDelegate 即使设置了也不会执行 <WXApiDelegate> 里的方法。

所以在微信支付的时候需要进行判断,使用微信SDK的方法设置代理。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

/**
 *  AppDelegate 中 支付回调信息处理
 */
+ (BOOL)payCommleteWithOpenURL:(NSURL *)url
{
    GPPayTool * payTool = [GPPayTool shareGPPayTool];

    if ([url.host isEqualToString:@"uppayresult"]) {
        [payTool unionPayOpenURL:url];
    } else if ([url.host isEqualToString:@"safepay"]) {
        [payTool aliPayOpenURL:url];
    } else if ([url.host isEqualToString:@"pay"]) {
       return [WXApi handleOpenURL:url delegate:payTool];
    }else {
       return [UMSocialSnsService handleOpenURL:url];
    }
    return YES;
}

这里我直接判断 host 是否为 pay,可能会跟别的第三方回调重复,保险起见你应该打印一下 这个 url ,可以看到微信支付的 url 格式为 wx000000000://pay/?code=031i50Wd2tYa3R0cL9Ud2bGYVd2i50WE&state=wx000000000 这里是你的微信的 AppId,你应该判断是否等于 ``wx000000000://pay`:

1
[url.absoluteString isEqualToString:@"wx000000000://pay]"

别学我。