payWeixin(data ={
"timeStamp": "1691715565",
"package": "prepay_id=wx110904396389276e5758748c9a480d0000",
"appid": "wx2a38f8656e9ef3d8",
"nonceStr": "89i62aqlrewekvoqng9oy08pi3inwoez",
"paySign": "751A60B269F8AD4E444B6D73E7C01788"
}){
//data是统一下单接口返回的数据
let that = this
let random = (Math.random()).toString() //这个随机数,就是个坑,一定要变成字符串
let mch_key = 'SDFSDFSDFHFKFJ973N4NNDFG98857739'
//obj里面的key一定要是驼峰名称
let obj = {
appId: data.appid,
nonceStr: random,
package: data.package,
signType:'MD5',
timeStamp:data.timeStamp
}
console.log('obj:',obj)
//参数名ASCII码从小到大排序(字典序)
let arr = Object.keys(obj).sort().map(item => {
return `${item}=${obj[item]}`;
});
console.log('arr:',arr)
//最后拼接上key(商户密钥)得到字符串
let str = arr.join('&') + '&key=' + mch_key;
console.log(str);
//对str进行MD5运算,再将得到的字符串所有字符转换为大写
let paySign = md5(str).toUpperCase()
console.log('paySign:',paySign);
wx.requestPayment({
"timeStamp":data.timeStamp,
"nonceStr": random,
// "package": "prepay_id="+data.prepay_id,
"package": data.package,
"signType": "MD5",
"paySign": paySign,
"success":function(res){
//在支付成功的回调里面,还行执行其他方法就要加setTimeout,不然会报错,我也不知道为什么
wx.showToast({
title: '支付成功',
icon:'success'
})
setTimeout(function(){
wx.switchTab({
url: '/pages/my/index',
})
},1500)
},
"fail":function(res){
console.log(res);
if (res.errMsg==='requestPayment:fail cancel') {
wx.showToast({title: '用户取消支付',icon:'none',duration:2000})
} else {
wx.showToast({title: res.errMsg,icon:'none',duration:2000})
}
},
"complete":function(res){}
})
}