通过jssdk调用
微信开发文档--微信支付
//立即支付
pay(val) {
//唤醒jssdk
this._apis.jssdk
.getJssdk({
channelInfoId:2,
currentUrl:escape(window.location.href)//获取当前页面的url
})
.then(response => {
//console.log(response, "订单支付成功");
wx.config({
debug:false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: response.appId, // 必填,公众号的唯一标识
timestamp: response.timestamp, // 必填,生成签名的时间戳
nonceStr: response.nonceStr, // 必填,生成签名的随机串
signature: response.signature, // 必填,签名,见附录1
jsApiList: ["chooseWXPay"]// 必填,需要使用的JS接口列表,所有JS接口列表见附录2
});
//确认支付
this._apis.shop
.getPageOrderPay({
id: val.id,
payWay:"1",
replacePayWay: val.replacePayWay,
memberInfoId: val.memberInfoId,
channelInfoId:"2"
})
.then(r => {
wx.ready(function () {
wx.chooseWXPay({
// appId:response.appId,
timestamp: r.payParams.timeStamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
nonceStr: r.payParams.nonceStr, // 支付签名随机串,不长于 32 位
package: r.payParams.package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*)
signType: r.payParams.signType, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
paySign: r.payParams.paySign, // 支付签名
success:function (res) {
this.onLoad();
window.location.href=`/orderDetailed?id=${val.id}`;
}
});
});
})
.catch(e => {
console.error(e);
});
})
.catch(error => {
console.error(error);
});
}
H5支付
//立即支付
pay(val) {
this._apis.shop
.getPageOrderPay({
id: val.id,
payWay:"1",
replacePayWay: val.replacePayWay,
memberInfoId: val.memberInfoId,
channelInfoId:"2"
})
.then(response => {
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 {
this.onBridgeReady(response);
}
})
.catch(e => {
console.error(e);
});
},
onBridgeReady(val) {
let _this =this;
WeixinJSBridge.invoke(
"getBrandWCPayRequest",
{
appId: val.payParams.appId, //公众号名称,由商户传入
timeStamp: val.payParams.timeStamp, //时间戳,自1970年以来的秒数
nonceStr: val.payParams.nonceStr, //随机串
package: val.payParams.package,
signType: val.payParams.signType, //微信签名方式:
paySign: val.payParams.paySign //微信签名
},
function (res) {
if (res.err_msg =="get_brand_wcpay_request:ok") {
_this.status ="";
}
}
);
},