小程序调用微信支付代码
时间: 2023-05-24 10:05:34 浏览: 319
以下是小程序调用微信支付的代码示例:
1. 获取支付参数
在调用微信支付前,需要先获取预支付订单号和其他支付参数,可以通过调用后端接口实现。以下是一个简单的示例:
```
wx.request({
url: 'https://your-backend-url.com/api/getPaymentParams',
method: 'POST',
data: {
amount: 100, // 支付金额,单位为分
openid: 'xxxxxxxx', // 用户的openid
body: '订单描述', // 订单描述
nonceStr: '随机字符串', // 随机字符串
timeStamp: '时间戳', // 时间戳
outTradeNo: '商户订单号', // 商户订单号
signType: 'MD5', // 签名方式
appId: '微信开放平台应用ID',
mchId: '商户号'
},
success: res => {
// 获取到后端返回的支付参数,调用微信支付
wx.requestPayment({
timeStamp: res.data.timeStamp,
nonceStr: res.data.nonceStr,
package: res.data.package,
signType: res.data.signType,
paySign: res.data.paySign,
success: res => {
// 支付成功后的回调函数
},
fail: res => {
// 支付失败后的回调函数
}
})
},
fail: res => {
// 获取支付参数失败的回调函数
}
})
```
2. 后端生成预支付订单号和签名
在后端服务器使用SDK生成预支付订单号和签名,示例:
```
const wxPay = require('wx-pay-sdk')
// 初始化SDK
const config = {
appid: '微信开放平台应用ID',
mch_id: '商户号',
key: '商户支付密钥',
nonceStr: '随机字符串'
}
const wxpay = new wxPay(config)
// 生成预支付订单号和签名
wxpay.unifiedOrder({
body: '订单描述',
out_trade_no: '商户订单号',
total_fee: 100, // 订单金额,单位为分
spbill_create_ip: '127.0.0.1',
notify_url: 'https://your-backend-url.com/api/notify', // 支付完成通知回调地址
trade_type: 'JSAPI',
openid: 'xxxxxxxx' // 用户的openid
}, (err, result) => {
if (err) {
console.log(err)
return
}
// 返回预支付订单号和签名
const paymentParams = {
timeStamp: Date.now().toString(),
nonceStr: '随机字符串',
package: `prepay_id=${result.prepay_id}`,
signType: 'MD5'
}
paymentParams.paySign = wxpay.sign(paymentParams, 'MD5') // 对支付参数进行签名
res.json(paymentParams)
})
```