因业务需要,移除项目中支付宝支付SDK和微信支付的SDK,改为网页支付。通过H5网页调起微信和支付宝的客户端进行支付,支付完成返回客户端,做到调用SDK一样的体验。
支付宝和微信建议以App的方式集成, 都不建议在app内部使用网页来支付,但也没有不允许,目前可行,不过也说不好以后会不会禁止这种方式。
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
NSString* url = navigationAction.request.URL.absoluteString;
if ([url hasPrefix:@"alipays://"] || [url hasPrefix:@"alipay://"]) {
BOOL success = [[UIApplication sharedApplication]openURL:navigationAction.request.URL]; if (success) {
}
}
if ([url hasPrefix:@"weixin://wap/pay"]) {
BOOL success = [[UIApplication sharedApplication]openURL:navigationAction.request.URL];
if (success) {
}
}
decisionHandler(WKNavigationActionPolicyAllow); }
|
微信支付回调问题
TARGETS → Info → URL Types 增加一项 URL Schemes 填写回调的url www.xxx.com
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:self.urlstring]]; NSDictionary *headers = [request allHTTPHeaderFields]; BOOL hasReferer = [headers objectForKey:@"Referer"] != nil; if (!hasReferer) { [request setValue:@"www.xxx.com://" forHTTPHeaderField: @"Referer"]; } [self.webView loadRequest:request];
|
注意:
- 在iOS系统中,唤起支付宝App支付完成后,不会自动回到浏览器或商户App。用户可手工切回到浏览器或商户App。
- 审核过程中,除了隐藏入口,代码和注释里面一些包含 支付宝支付 alipay 微信支付 weixinpay weichatpay 类似这样的字段要屏蔽掉,否则在审核期间扫描代码的时候因为隐藏功能而拒审核,最好还是老老实实接苹果支付。
参考链接:
https://docs.open.alipay.com/203/107091/
https://docs.open.alipay.com/203
https://nearwmy.github.io/2017/12/04/%E5%BE%AE%E4%BF%A1H5%E6%94%AF%E4%BB%98%E4%B9%8B%E5%9B%9E%E8%B7%B3%20safari%20%E6%B5%8F%E8%A7%88%E5%99%A8/
https://github.com/mjl123iOS/iOS_WXh5
https://github.com/cheenbee/cheenbee.github.io/issues/1