微信支付相关
原文地址
发现很久之前写的微信支付内容,整理下发出来
静默授权
用户入口链接,每次进入项目都会需要授权,先去检查当前 URL 下面是否有code, 如果没有就把当前URL传给微信授权的链接,微信授权会回调这个URL并把code附加到url里面
获取code的value后传给后台,后台返回相对应的 业务ID
参考链接:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842
TIP
注意:传给微授权的url一定要编码
const oauthCallbackUrl = encodeURIComponent('http://newpay.tunnel.qydev.com/VAOrderH5')
IOS 和 Android 认为当前页的 URL
当前页 和 着陆页:
TIP
着陆页:当我们从微信别的地方点击链接呼出微信浏览器时所落在的页面、或者点击微信浏览器的刷新按钮时所刷新的页面,我们叫做 Landing Page。
当前页:当前浏览器的页面首先把当前页面叫做 Current Page。
举个例子:
我们从任何地方点击链接进入页面A,然后依次浏览到 B、C、D
那么 Current Page 就是D,而 Landing Page 是 A,
如果此时我们在 D 页面点击一下浏览器的刷新按钮,那么 Landing Page 就变成了 D
不同系统的判断规则不一样
问题来了,在iOS和安卓下呼出微信支付的时候,微信支付判断当前路径的规则分别是:
IOS:Landing Page
安卓:Current Page
这就意味着,在 ios 环境下,任何一个页面都有可能成为支付页面
解决方法:
URL上在 #
前面加个 ?
原有3个页面用到微信支付:
http://xxxxx.com/#/cart/pay1
http://xxxxx.com/#/order/pay2
http://xxxx.com/#/order/pay3
现在:
http://xxxx.com/?#/order/orderinfo
微信浏览器会把?后面省略了。
最主要的:只需要把授权目录配置到:http://xxxx.com/
即可,在微信开发者平台上配置支付域名