微信公众号支付/微信浏览器支付(JSAPI)
一:获取微信支付四大参数
官方链接:pay.weixin.qq.com/wiki/doc/ap…
步骤二:平台配置
- 配置支付目录:商户平台。
配置此目录是代码中“微信支付”所在页面的地址,一级域名需ICP备案。
- 配置授权域名:微信公众平台。
支付过程中需要获取用户openid,必须经过网页授权配置才可以,不然获取不到openid。
中间遇到的小问题: 在放置MP...v4kGCjvXcmR4X90w.txt文件时,已经放置在了服务器下,但在微信公众号配置页面仍提醒未上传。
解决方案:
参考链接:blog.csdn.net/u010634066/…
步骤三:开发流程
微信支付原理即调用官方文档的“统一下单”接口,将微信服务器返回的参数进行加工后返回到前台页面。所有参数解释请参考官方文档:pay.weixin.qq.com/wiki/doc/ap…
官方文档: pay.weixin.qq.com/wiki/doc/ap…
关于获取openid:
- window.location.href = 'open.weixin.qq.com/connect/oau…'
点击该路径跳转后,链接内带有参数:code
- 获取到code后请求以下链接获取access_token: api.weixin.qq.com/sns/oauth2/… 拿到我们需要的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();
}
复制代码
遇到的坑
- 签名错误。 显示签名错误,即后台传输的签名有误。按照官方文档:pay.weixin.qq.com/wiki/doc/ap… 重新生成传输即可。如果还不行,先检查微信公众平台内ip白名单是否添加了服务器IP和线上域名IP,如果都添加了再次生成一次API秘钥。
- 商户平台开发配置,支付授权目录内地址需明确至支付的当前页面 eg:www.baidu.com/payNow/