微信公众号支付/微信浏览器支付(JSAPI)
一:获取微信支付四大参数
官方链接:
步骤二:平台配置
- 配置支付目录:商户平台。
配置此目录是代码中“微信支付”所在页面的地址,一级域名需ICP备案。
- 配置授权域名:微信公众平台。
支付过程中需要获取用户openid,必须经过网页授权配置才可以,不然获取不到openid。
中间遇到的小问题: 在放置MP...v4kGCjvXcmR4X90w.txt文件时,已经放置在了服务器下,但在微信公众号配置页面仍提醒未上传。
解决方案:
参考链接:
步骤三:开发流程
微信支付原理即调用官方文档的“统一下单”接口,将微信服务器返回的参数进行加工后返回到前台页面。所有参数解释请参考官方文档:
官方文档:
关于获取openid:
- window.location.href = ''
点击该路径跳转后,链接内带有参数:code
- 获取到code后请求以下链接获取access_token: 拿到我们需要的openid
function onBridgeReady(){ WeixinJSBridge.invoke( 'getBrandWCPayRequest', { "appId": appId, //公众号名称,由商户传入 "timeStamp":timeStamp, //时间戳,自1970年以来的秒数 "nonceStr":nonceStr, //随机串 "package":package, "signType":signType, //微信签名方式: "paySign":paySign //微信签名 }, function(res){ if(res.err_msg == "get_brand_wcpay_request:ok" ){ // 使用以上方式判断前端返回,微信团队郑重提示: //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。 } });}if (typeof WeixinJSBridge == "undefined"){ if( document.addEventListener ){ document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false); }else if (document.attachEvent){ document.attachEvent('WeixinJSBridgeReady', onBridgeReady); document.attachEvent('onWeixinJSBridgeReady', onBridgeReady); }}else{ onBridgeReady();}复制代码
遇到的坑
- 签名错误。 显示签名错误,即后台传输的签名有误。按照官方文档: 重新生成传输即可。如果还不行,先检查微信公众平台内ip白名单是否添加了服务器IP和线上域名IP,如果都添加了再次生成一次API秘钥。
- 商户平台开发配置,支付授权目录内地址需明确至支付的当前页面 eg: