微信支付包括微信H5支付和微信公众号支付
微信H5支付
官方api:https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_1
一、定义
非微信浏览器H5页面调用微信支付
二、注意事项
1、浏览器一定要关闭无痕模式(否则支付后,返回回调页面,cookie丢失)
2、ios中调用微信支付后,返回回调页面默认会在safari浏览器中打开(chrome浏览器调起支付,完成后会在safari中打开)
三、源码
window.location.href = data.payResponse.mwebUrl + "&redirect_url=" + encodeURIComponent(data.returnUrl);
回调地址redirect_url要url编码
微信公众号支付
官方api:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6
一、注意事项:
1、微信公众平台配置网页授权域名
2、微信支付商户平台,js支付域名设置(可以配置到域名,例如 test.A.com/)
3、注意后台配置的商户平台号(存在多个商户号时,防止填错商户号)
4、放在微信浏览器内打开
5、支付测试要用真机,不能用微信开发者工具(微信开发者工具会报错)
二、源码如下:
weixinPay(data) {
try {
var vm = this;
if(typeof WeixinJSBridge == "undefined") { //微信浏览器内置对象。参考微信官方文档
if(document.addEventListener) {
document.addEventListener('WeixinJSBridgeReady', vm.onBridgeReady(data), false);
} else if(document.attachEvent) {
document.attachEvent('WeixinJSBridgeReady', vm.onBridgeReady(data));
document.attachEvent('onWeixinJSBridgeReady', vm.onBridgeReady(data));
}
} else {
vm.onBridgeReady(data);
}
} catch(e) {
alert(e)
//TODO handle the exception
}
},
onBridgeReady(data) {
var vm = this;
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
// debug: true,
"appId": data.mapResult.appId, //公众号名称,由商户传入
"timeStamp": data.mapResult.timeStamp, //时间戳,自1970年以来的秒数
"nonceStr": data.mapResult.nonceStr, //随机串
"package": data.mapResult.package,
"signType": data.mapResult.signType, //微信签名方式:
"paySign": data.mapResult.paySign, //微信签名
//这里的信息从后台返回的接口获得。
"jsApiList": [
'chooseWXPay'
]
},
function(res) {
// 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
if(res.err_msg == "get_brand_wcpay_request:ok") {
}
}
);
},
网友评论