h5调起微信支付一系列问题
2018-09-06 本文已影响69人
印第安的老斑鸠
h5 无法调起微信支付错误:商家参数格式有误
1.商家参数格式有误,请联系商家解决 参考微信官方文档罗列的常见错误
- APP里调起H5支付,需要在 webview 中手动设置referer, referer的作用是验证是否为安全支付来源, 代码如下: (本文以UIWebView为例)
- (BOOL) webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType) navigationType
{
NSDictionary *headers = [request allHTTPHeaderFields];
BOOL hasReferer = [headers objectForKey:@"Referer"]!=nil;
if (hasReferer) {
// .. is this my referer?
return YES;
} else {
// relaunch with a modified request
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
dispatch_async(dispatch_get_main_queue(), ^{
NSURL *url = [request URL];
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
[request setHTTPMethod:@"GET"];
[request setValue:@"https://whatever.com" forHTTPHeaderField: @"Referer"];
[self.webView loadRequest:request];
});
});
return NO;
}
}
iOS h5 支付从微信返回直接跳转到 Safari 浏览器无法跳转到 app
修改 Referer 和配置 scheme 进行跳转
-
设置 Referer 值为:
[request setValue:@"whatever.com://" forHTTPHeaderField: @"Referer"];
-
在Xcode项目Target->Info->URL Types 添加一个scheme
image -
Referer 去除 http:// 或 https:// 依然可以进行支付
也可以在 Safari 浏览器中进行 scheme 跳转回app
-
h5支付完成会配置一个回调地址,在此网页中再次进行scheme跳转
window.location.href = "scheme://whatever.com"
-
在 Safari 中可以通过scheme打开指定 app, 经过浏览器迂回跳转到 app,也可以配置scheme进行指定页面跳转
参考: