第一步:先判断当前环境
判断用户所属环境,根据环境不同,执行不同的支付程序。
if (/MicroMessenger/.test(window.navigator.userAgent)) { // alert('微信'); } else if (/AlipayClient/.test(window.navigator.userAgent)) { //alert('支付宝'); } else { //alert('其他浏览器'); }
第二步:如果是微信环境,需要先进行网页授权
网页授权的详细介绍可以查看微信相关文档。这里不做介绍。
第三步:
1、微信支付
微信支付有两种方法: 1:调用微信浏览器提供的内置接口WeixinJSBridge 2:引入微信jssdk,使用wx.chooseWXPay方法,需要先通过config接口注入权限验证配置。 我这里使用的是第一种,在从后台拿到签名、时间戳这些数据后,直接调用微信浏览器提供的内置接口WeixinJSBridge即可完成支付功能。
getRequestPayment(data) {
function onBridgeReady() {
WeixinJSBridge.invoke(
"getBrandWCPayRequest", {
"appId": data.appId, //公众号ID,由商户传入
"timeStamp": data.timeStamp, //时间戳,自1970年以来的秒数
"nonceStr": data.nonceStr, //随机串
"package": data.package,
"signType": data.signType, //微信签名方式:
"paySign": data.paySign //微信签名
},
function(res) {
alert(JSON.stringify(res));
// get_brand_wcpay_request
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();
}
},
2、支付宝支付
支付宝支付相对于微信来说,前端这块工作更简单 ,后台会返回给前端一个form表单,我们要做的就是把这个表单进行提交即可。相关代码如下:
this.$api.alipayPay(data).then((res) => { // console.log('支付宝参数', res.data) if (res.code == 200) { var resData =res.data const div = document.createElement('div') div.id = 'alipay' div.innerHTML = resData document.body.appendChild(div) document.querySelector('#alipay').children[0].submit() // 执行后会唤起支付宝 } }).catch((err) => { })
微信支付文档链接:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6 标签:支付宝,微信,支付,H5,res,document,data From: https://www.cnblogs.com/zhenfeng25/p/17582784.html