uniapp app 端调微信支付接口
uni-app 官方文档支付接口如下:
uni.requestPayment({
provider: provider, // wxpay、alipay
orderInfo: 'orderInfo', //微信、支付宝订单数据
success: function (res) {
console.log('success:' + JSON.stringify(res));
},
fail: function (err) {
console.log('fail:' + JSON.stringify(err));
}
});
文档中 orderInfo 的格式没写清楚,今天刚好在研究支付,发现调起微信支付接口的 orderInfo 可以是对象,也可以是对象字符串,比如:
let obj = {
appid: 应用ID,
noncestr: 随机字符串,
package: 'Sign=WXPay', // 固定值,以微信支付文档为主
partnerid: 商户号,
prepayid: 预支付交易会话ID,
timestamp: 时间戳,
sign: 签名 // 根据签名算法生成签名
}
// 第一种写法,传对象
let orderInfo = obj
// 第二种写法,传对象字符串
let orderInfo = JSON.stringify(obj)
uni.requestPayment({
provider: 'wxpay',
orderInfo: orderInfo, //微信、支付宝订单数据
success: function (res) {
console.log('success:' + JSON.stringify(res));
},
fail: function (err) {
console.log('fail:' + JSON.stringify(err));
}
});
—
小程序支付DEMO(前端部分)
<template>
<view>
<button @click="paymini">小程序支付</button>
<button @click="payapp">app支付</button>
</view>
</template>
<script>
export default {
data() {
return {
};
},
methods: {
payapp: function() {
// 请求后台数据 prepay_id paySign nonceStr timeStamp
uni.request({
url: '',
data: {
code: code,
payMoney: 1,
uid: '',
type: '1'
},
header: {
'custom-header': '' //自定义请求头信息
},
success: (res) => {
console.log(res);
// 调起支付
uni.requestPayment({
provider: 'alipay',
orderInfo: {
"dealId": res.dealId,
"appKey": res.appKey,
"totalAmount": res.totalAmount,
"tpOrderId": res.tpOrderId,
"dealTitle": res.dealTitle,
"rsaSign": res.rsaSign,
"bizInfo": res.bizInfo
}, //订单数据
success: function(res) {
console.log('success:' + JSON.stringify(res));
},
fail: function(err) {
console.log('fail:' + JSON.stringify(err));
}
});
}
});
},
paymini: function() {
uni.login({
provider: 'weixin',
success: function(loginRes) {
let code = loginRes.code;
// 请求后台数据 prepay_id paySign nonceStr timeStamp
uni.request({
url: '',
data: {
code: code,
payMoney: 1,
uid: '',
type: '1'
},
header: {
'custom-header': '' //自定义请求头信息
},
success: (res) => {
console.log(res);
// 调起支付
uni.requestPayment({
provider: 'wxpay',
timeStamp: String(Date.now()),
nonceStr: res.nonceStr,
package: res.package,
signType: 'MD5',
paySign: res.paySign,
success: function(res) {
console.log('success:' + JSON.stringify(res));
},
fail: function(err) {
console.log('fail:' + JSON.stringify(err));
}
});
}
});
}
});
}
}
}
</script>
<style>
</style>