转载---iOS微信H5支付无法返回APP解决方案

本文只讨论已成功调起微信支付后,无法返回自己的APP的问题,iOS微信H5支付不在讨论范围内。提供下列参考:
微信H5支付官方文档
微信H5支付官方Demo

知道你们都喜欢看结论,先放结论吧!此方案支付多APP

解决方案:

  1. 在微信支付管理后台注册一级域名,比如 company.com
  2. 在APP工程配置中设置URL Scheme,比如 A.company.com(A你可以随便写,后面的域名得和1.中一致)
  3. webView拦截微信下单请求,前缀https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb,追加或修改参数 redirect_url=URLEncode(A.company.com://)
  4. (可选)微信支付结束(可能不是真正结束后面会细说)会发起redirect_url的重定向,webView拦截 request.URL.scheme 包含 company.com:// 的请求,在这里可以做一些后续操作,比如 刷新页面,通知前端支付完成等。

需要注意的问题:

  1. 微信H5下单接口(https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb)请求header中有个Referer字段,如果这个请求中没有redirect_url参数,微信支付结束后默认回调Referer字段中地址
  2. Referer头和redirect_url中的域名,都必须在微信后台注册过
  3. redirect_url回调并不可靠,可能微信支付还没结束就回调了。

微信官方文档对redirect_url的描述:
由于设置redirect_url后,回跳指定页面的操作可能发生在:1,微信支付中间页调起微信收银台后超过5秒 2,用户点击“取消支付“或支付完成后点“完成”按钮。因此无法保证页面回跳时,支付流程已结束,所以商户设置的redirect_url地址不能自动执行查单操作,应让用户去点击按钮触发查单操作

另附,iOS支付宝H5无法返回APP解决方案

作者:CocoaKier
链接://www.greatytc.com/p/c1973aacc774
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容