uniapp微信小程序支付
写成pay.js文件可以直接复制文件。需要改的地方主要就是
1.payurl 后端的生成支付配置文件接口url
payurl 接口会返回微信支付发配置文件会返回orderInfo内容,我们对应在requestPayment填进去就可以了
接口返回的签名信息例子
{
"code": "200",
"data": {
"appid": "wx499********7c70e", // 微信开放平台 - 应用 - AppId,注意和微信小程序、公众号 AppId 可能不一致
"noncestr": "c5sEwbaNPiXAF3iv", // 随机字符串
"package": "Sign=WXPay", // 固定值
"partnerid": "148*****52", // 微信支付商户号
"prepayid": "wx202254********************fbe90000", // 统一下单订单号
"timestamp": 1597935292, // 时间戳(单位:秒)
"sign": "A842B45937F6EFF60DEC7A2EAA52D5A0" // 签名,这里用的 MD5/RSA 签名
},
message:"success"
}
2.token 要是项目需要token的话,记得在填好正确的token,我是把token存在base文件里的。
import {payurl,token} from './base.js'
const pay = function(data){
return new Promise((resolve, reject) => {
uni.request({
url:payurl,
data: {
data
},
header:{
authorization:token
},
method :"POST",
success: (res) => {
if(res.data.code==200){
let wxpaly=res.data.data
uni.requestPayment({
provider: 'wxpay',
timeStamp: wxpaly.timeStamp,
nonceStr: wxpaly.nonceStr,
package: wxpaly.package,
signType: wxpaly.signType,
paySign: wxpaly.paySign,
success: function (rest) {
console.log('支付success:' , rest);
resolve(wxpaly);
},
fail: function (err) {
reject(err);
console.log('支付fail:',err);
}
})
}else{
//接口报错
uni.showToast({
title: res.data.message,
duration: 2000,
icon:'none'
});
}
}
});
});
}
module.exports = {
pay
}
使用pay.js
import {pay} from './utils/pay.js'
ordernum 是订单编号,需要传给后端,后端就会生成微信支付配置参数
topay(ordernum){
pay({ordernum}).then(res=>{
console.log(res,"支付成功")
})
},
反正主要是后端能生成正确的支付签名这些参数,就可以了,要是支付报错,大概率问题是后端支付签名这些有问题