uniapp 调起微信支付的实例代码
时间: 2023-08-22 09:08:15 浏览: 96
以下是一个调起微信支付的示例代码:
```javascript
// 支付方法
function pay() {
const params = {
// 微信支付分配的商户号
mch_id: '1234567890',
// 微信支付分配的终端设备号
device_info: 'WEB',
// 随机字符串,不长于 32 位
nonce_str: '5K8264ILTKCH16CQ2502SI8ZNMTM67VS',
// 商品描述
body: '测试商品',
// 商户订单号
out_trade_no: '20150806125346',
// 订单总金额,单位为分
total_fee: 100,
// 终端 IP
spbill_create_ip: '123.12.12.123',
// 通知地址,接收微信支付结果通知的回调地址
notify_url: 'https://wxpay.wxutil.com/pub_v2/pay/notify.v2.php',
// 交易类型
trade_type: 'JSAPI',
// 用户的 OpenID
openid: 'oUpF8uMuAJO_M2pxb1Q9zNjWeS6o'
}
// 生成签名
const sign = generateSign(params)
// 添加签名
params.sign = sign
// 发起支付请求
uni.requestPayment({
provider: 'wxpay',
timeStamp: String(Math.floor(Date.now() / 1000)),
nonceStr: params.nonce_str,
package: `prepay_id=${params.prepay_id}`,
signType: 'MD5',
paySign: sign,
success(res) {
console.log('支付成功', res)
},
fail(err) {
console.log('支付失败', err)
}
})
}
// 生成签名
function generateSign(params) {
const keys = Object.keys(params).sort()
const arr = []
for (let i = 0; i < keys.length; i++) {
const key = keys[i]
const value = params[key]
if (value === '') continue
arr.push(`${key}=${value}`)
}
arr.push(`key=你的商户密钥`)
const str = arr.join('&')
return md5(str).toUpperCase()
}
```
注意:这里使用了第三方库 `md5`,需要先安装并导入才能使用。
阅读全文