微信云开发支付怎么写统一下单
2024-10-24 15:13:44 603浏览
微信云开发支付怎么写统一下单,测试通过,支付问题说一下,submchid是子商户号和商户号,就是指你云控制台关联的那个商户号,支付报错也不一定时代的问题,肯能某些修改没更新
新建云函数,在对应目录创建pay文件夹
安装依耐(例如pay的目录在目录栏输入cmd回车)
image.png

image.png
npm install --save wx-server-sdk@latest

新建pay/index.js
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
})
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
let param={
"body" : event.msg, // 商品描述
"outTradeNo" : event.outTradeNo, // 商户订单号
"spbillCreateIp" : "127.0.0.1", // 终端 IP
"subMchId" : "xxxx", // 商户号
"totalFee" : event.totalFee, // 总金额
"envId": "xxx", // 云函数环境名称
"functionName": "payback" ,// 支付结果通知回调云函数名
// "tradeType":"JSAPI",//交易类型
"openid":wxContext.OPENID
}
console.log("param pay:",param)
const res = await cloud.cloudPay.unifiedOrder(param)
return res
}
如何获取云环境id

如何关联商户号

必须是已绑定已授权才可以
另外说说参数里openid的问题,模拟器不需要openid就可以支付,手机需要写上openid才可以支付成功,否则报错缺少total_fee
回调payback.js
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
})
// 云函数入口函数
exports.main = async (event, context) => {
const outTradeNo = event.outTradeNo; // 订单号
const returnCode = event.returnCode; // 是否支付成功
const resultCode = event.resultCode ; // 是否支付成功
if (returnCode == 'SUCCESS' && resultCode == 'SUCCESS' ) {
// const db = cloud.database();
// 注意:两者都为SUCCESS,支付才算正真成功
return "SUCCESS"
} else {
// 记录错误信息
conslog.log('支付出错:', event)
return "FAIL"
}
}添加云函数,不添加调用不了

创建完云函数记得上传,选择云函数右键

如果想要查看云函数里的console输出和云函数请求,可以开启本地调试,选择云函数-右键-开启本地调试


pages里对应的调用云函数生成支付参数
pay() {
wx.showLoading({
title: '支付中',
mask: 'true'
})
var that = this;
//支付模块*******************************
var orderNum = Date.now() + Math.floor(9 * Math.random()) + ''
that.setData({
orderNum: orderNum
})
let totalFee=Number((that.data.vipInfo.price * that.data.num * 100).toFixed(0));
// totalFee=1;//1分钱测试
console.log(orderNum)
wx.cloud.callFunction({
name: 'pay',
data: {
msg: "购买vip",
outTradeNo: orderNum,
totalFee: totalFee,
},
success(res) {
console.log('统一下单返回值', res);
const payment = res.result.payment
console.log('payment', payment)
that.payOrder(payment)
}
})
//************************************
},
//支付
payOrder(payment) {
var that = this;
wx.requestPayment({
...payment,
success(res) {
console.log('支付成功', res)
that.xuniPay()
},
fail(res) {
console.log('支付失败', res)
wx.showToast({
title: '支付失败',
icon: 'none'
})
},
complete(res) {
console.log('pay complete', res)
}
})
},
好博客就要一起分享哦!分享海报
此处可发布评论
评论(0)展开评论
暂无评论,快来写一下吧
展开评论
您可能感兴趣的博客
他的专栏
他感兴趣的技术

java
vue
springboot
Mysql
ssm
小程序
uniapp
js和jquery