Skip to content
On this page

微信支付相关

发现很久之前写的微信支付内容,整理下发出来

静默授权

用户入口链接,每次进入项目都会需要授权,先去检查当前 URL 下面是否有code, 如果没有就把当前URL传给微信授权的链接,微信授权会回调这个URL并把code附加到url里面

获取code的value后传给后台,后台返回相对应的 业务ID

参考链接:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842

TIP

注意:传给微授权的url一定要编码

js
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/ 即可,在微信开发者平台上配置支付域名