微信云开发支付怎么写统一下单

无敌的宇宙
无敌的宇宙
擅长邻域:Java,HTML,JavaScript,MySQL,支付,退款,图片上传

分类: 微信小程序 标签: 微信云开发支付 云支付

2024-10-24 15:13:44 133浏览

微信云开发支付怎么写统一下单,测试通过,支付问题说一下,submchid是子商户号和商户号,就是指你云控制台关联的那个商户号,支付报错也不一定时代的问题,肯能某些修改没更新

新建云函数,在对应目录创建pay文件夹

安装依耐(例如pay的目录在目录栏输入cmd回车)

 

image.png

image.png

image.png


 


npm install --save wx-server-sdk@latest

image.png

 新建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 

image.png

 

如何关联商户号 

image.png

 必须是已绑定已授权才可以


另外说说参数里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"
       }
     }




添加云函数,不添加调用不了

 

image.png

 

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

1.jpg

 

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

 

image.png

 image.png

 

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展开评论

暂无评论,快来写一下吧

展开评论

您可能感兴趣的博客

客服QQ 1913284695