微信云开发支付怎么写统一下单
2024-10-24 15:13:44 133浏览
微信云开发支付怎么写统一下单,测试通过,支付问题说一下,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)展开评论
暂无评论,快来写一下吧
展开评论
他的专栏
他感兴趣的技术