122 lines
2.9 KiB
JavaScript
122 lines
2.9 KiB
JavaScript
/**
|
|
* 此云对象是演示如何调用微信虚拟支付其他API
|
|
* 通过 const uniPayCo = uniCloud.importObject("uni-pay-co"); 获取云对象
|
|
* 再通过 uniPayCo.requestWxpayVirtualApi 调用微信虚拟支付API
|
|
*/
|
|
|
|
module.exports = {
|
|
_before: function() {
|
|
|
|
},
|
|
/**
|
|
* 查询用户代币余额
|
|
* @param {string} openid - 用户openid
|
|
*/
|
|
async queryUserBalance(data) {
|
|
let {
|
|
openid
|
|
} = data;
|
|
let userIp = this.getClientInfo().clientIP;
|
|
const uniPayCo = uniCloud.importObject("uni-pay-co");
|
|
let res = await uniPayCo.requestWxpayVirtualApi({
|
|
method: "queryUserBalance",
|
|
data: {
|
|
openid, // 用户openid
|
|
userIp, // 用户IP
|
|
}
|
|
});
|
|
return res;
|
|
},
|
|
/**
|
|
* 扣减用户代币
|
|
* @param {string} openid - 用户openid
|
|
*/
|
|
async currencyPay(data) {
|
|
let {
|
|
openid
|
|
} = data;
|
|
let userIp = this.getClientInfo().clientIP;
|
|
let outTradeNo = "test-" + Date.now(); // 商户订单号
|
|
let payitem = JSON.stringify([{ "productid": "test001", "unit_price": 1, "quantity": 1 }]);
|
|
let remark = "备注";
|
|
let amount = 1; // 扣减的代币数量
|
|
|
|
const uniPayCo = uniCloud.importObject("uni-pay-co");
|
|
let res = await uniPayCo.requestWxpayVirtualApi({
|
|
method: "currencyPay",
|
|
data: {
|
|
openid, // 用户openid
|
|
userIp, // 用户IP
|
|
amount, // 扣减的代币数量
|
|
outTradeNo, // 商户订单号
|
|
payitem,
|
|
remark,
|
|
deviceType: 1, // 平台类型1-安卓 仅支持传1
|
|
}
|
|
});
|
|
res.amount = amount;
|
|
return res;
|
|
},
|
|
// // 打开下方注释可体验 撤回的扣减用户代币、赠送用户代币
|
|
|
|
/**
|
|
* 撤回的扣减用户代币
|
|
* @param {string} openid - 用户openid
|
|
*/
|
|
async cancelCurrencyPay(data) {
|
|
let {
|
|
openid,
|
|
outTradeNo
|
|
} = data;
|
|
|
|
let userIp = this.getClientInfo().clientIP;
|
|
let amount = 1; // 撤回扣减的代币数量
|
|
|
|
let timestampStr = Date.now().toString();
|
|
let lastFourDigits = timestampStr.substr(-4);
|
|
|
|
const uniPayCo = uniCloud.importObject("uni-pay-co");
|
|
let res = await uniPayCo.requestWxpayVirtualApi({
|
|
method: "cancelCurrencyPay",
|
|
data: {
|
|
openid, // 用户openid
|
|
userIp, // 用户IP
|
|
amount, // 撤回扣减的代币数量
|
|
outTradeNo, // 商户订单号
|
|
outRefundNo: `${outTradeNo}-${lastFourDigits}`,
|
|
deviceType: 1, // 平台类型1-安卓 仅支持传1
|
|
}
|
|
});
|
|
|
|
return res;
|
|
},
|
|
/**
|
|
* 赠送用户代币
|
|
* @param {string} openid - 用户openid
|
|
*/
|
|
async presentCurrency(data) {
|
|
let {
|
|
openid
|
|
} = data;
|
|
|
|
let userIp = this.getClientInfo().clientIP;
|
|
let outTradeNo = "test-" + Date.now(); // 商户订单号
|
|
let amount = 1; // 赠送用户代币数量
|
|
|
|
const uniPayCo = uniCloud.importObject("uni-pay-co");
|
|
let res = await uniPayCo.requestWxpayVirtualApi({
|
|
method: "presentCurrency",
|
|
data: {
|
|
openid, // 用户openid
|
|
userIp, // 用户IP
|
|
amount, // 赠送用户代币数量
|
|
outTradeNo, // 商户订单号
|
|
deviceType: 1, // 平台类型1-安卓 仅支持传1
|
|
}
|
|
});
|
|
|
|
return res;
|
|
},
|
|
|
|
|
|
} |