这是友盟 UMSocialSnsService.h
里的一个处理回调的方法
/**
Deprecated API
处理app的URL方法
@param url 传入的url
@return wxApiDelegate 实现微信代理对象
*/
+(BOOL)handleOpenURL:(NSURL *)url wxApiDelegate:(id<WXApiDelegate>)wxApiDelegate;
使用发现这个 wxApiDelegate
即使设置了也不会执行 <WXApiDelegate>
里的方法。
所以在微信支付的时候需要进行判断,使用微信SDK的方法设置代理。
/**
* 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`:
[url.absoluteString isEqualToString:@"wx000000000://pay]"
别学我。