ios浏览器微信支付回调页面_iOS微信系列,WKWebview加载H5进行微信支付返回浏览器解决方案!...

本文详细介绍了在iOS应用中,使用WKWebView集成第三方网页的微信支付功能时,如何实现支付完成后回调到App的解决方案。通过拦截URL、修改redirect_url并设置Referer,确保支付成功后能够正确返回App而不是浏览器。
摘要由CSDN通过智能技术生成

问题描述:项目内接入了第三方的web页面,此页面带有微信支付功能,跳转到微信后返回的是浏览器并非App。

ps:博主解决过程坎坷的不行,遇到这个问题首先去微信的开发论坛看了下,结果看到微信开发人员说不支持,扎心惹。

微信

但是理论上应该是可以的,网上查阅了一下也有人说可以。

思路:h5唤起微信支付应该也是通过一条链接传值给微信进行支付的,这条链接是否带有支付完返回的地址呢,答案是肯定的,记录一下。

解决方案:

1、在wkwebview的代理: - (void)webView:(WKWebView*)webViewdecidePolicyForNavigationAction:(WKNavigationAction*)navigationActiondecisionHandler:(void(^)(WKNavigationActionPolicy))decisionHandler;

中拦截到唤起微信的链接,示例链接:

https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx27154434905468de41757e925ea0f40000&package=1303961194&redirect_url=https%3A%2F%2Fms.czb365.com%2Fpay

redirect_url 就是微信支付完成后/支付失败/取消支付 后返回的地址,我们新建一个URL Schemes,格式为:aaa.bbb.com (aaa我们自定义,bbb.com为该网页在微信平台所填写的域名,如果是第三方的web页面,可以通过唤起微信支付时,打印链接出来尝试使用),示例中的bbb.com是 ms.czb365.com.

2、将示例链接转字典,再判断是否带有redirect_url ,(2.1)在redirect_url中拼接上我们的URL Schemes。得到 新链接https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx27154434905468de41757e925ea0f40000&package=1303961194&redirect_url=aaa.bbb.com://https%3A%2F%2Fms.czb365.com%2Fpay

3、设置Referer。直接贴代码

NSString*urlStr;

if ([[dic allKeys] containsObject:@"redirect_url"]) {

urlStr = // 进行(2.1)

NSMutableURLRequest *requestTest = [[NSMutableURLRequest alloc]initWithURL:[NSURL URLWithString:@"2中得到的新链接"]];

[request3setValue:@"aaa.bbb.com://" forHTTPHeaderField:@"Referer"];

[self.webViewloadRequest:requestTest];

decisionHandler(WKNavigationActionPolicyCancel);

}

else

{

urlStr = navigationAction.request.URL.absoluteString;

decisionHandler(WKNavigationActionPolicyAllow);

}

4、 唤起微信:

if ([webView.URL.absoluteString containsString:@"https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb"])

{

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:absoluteString]];

}

基本步骤就是这样。如果出现参数错误联系商家,请仔细阅读。

很少写文章,希望能帮助到你。

也可以参考:https://www.cnblogs.com/Life-Record/p/8472319.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值