今天说一下 微信支付遇到的坑
接到项目就麻溜写,对微信一无所知以为最后和支付宝一样接支付就好, 谁知道一直不通,最后请教别人才知道 所有公众号里微信网页一进来就是要微信授权获得openid 的 以备后面支付其用户信息使用。
- 判断浏览器
如果有两个支付及以上接口,首先判断打开页面的是微信浏览器还是其他浏览器;若只有微信支付即不需要判断。
判断浏览器
if(ua.match(/MicroMessenger/i) == "micromessenger") {
//微信浏览器
}else{
//其他浏览器
}
- 请求接口 获取code
(1)一进页面跳转此连接 获取code
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE&connect_redirect=1#wechat_redirect
参数意义:
(2)接着连接就会变为
https://xxxxx.com/wap/payOrder.html/?code=abc677adaduiadi7838&state=STATE
此处有两个坑:
a、正常情况下我们不能在网页中调试,只能在真机或则微信开发工具上;但是切勿在在真机的本页复制本页地址,这样是获取不到code的,(实际是存在的,但是复制不出来;可以用alert(window.location.href)显示出来)
如下图错误❌提示:
b、获取的的URL参数拼接的有问题(待解决)
如:
正常:https://abc.com/index.html#/test?code=safeiaw8329jknfdsakfna&scode=1
实际情况是:https://abc.com/index.html?code=safeiaw8329jknfdsakfna&scode=1/test
不知道是什么情况 无语了 难受
难道是#号 地址的问题
我们就可以自行在URL中获取code
(3)把code 返给后台 得到openid 以及用户登录成功的token,后续就可以正常支付
注:openid可以后台返给前台 我们用openid获取token ;也可以后台自己获取code 最后给我们token 前台不需要任何操作
菜鸟一枚 有错误望提出来 勿喷 谢谢 一起加油