小程序怎么通过小程序云实现微信支付功能
创始人
2024-12-24 07:41:49
0次

一、开通微信支付

 1.1 关联商户号

微信公众号平台功能微信支付商户号管理关联商户号

小程序怎么通过小程序云实现微信支付功能

1.2 添加商户号

云开发平台设置其他设置微信支付配置添加商户号

小程序怎么通过小程序云实现微信支付功能

1.3 管理员授权

1.2那张图上,点击授权。管理员的微信就会跳出提示,点击确定授权即可。

否则使用的时候,会出现sub_mch_id与sub_appid不匹配的报错!

二、云函数开发

2.1 新建云函数

小程序怎么通过小程序云实现微信支付功能

小程序怎么通过小程序云实现微信支付功能

2.2 云函数代码

payindex.js

const cloud = require("wx-server-sdk")
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})

exports.main = async (event, context) => {    
const res = await cloud.cloudPay.unifiedOrder({
    "body" : event.body,
    "outTradeNo" : event.outTradeNo,
    "spbillCreateIp" : "127.0.0.1",
    "subMchId" : "0000000000",               //这里要注意:虽然key是子商户id,实际上就是普通商户id
    "totalFee" : parseInt(event.totalFee),   //第二个坑:注意必须是数字,如果不是数字,则会报错unifiedOrder:fail wx api error: -202
    "envId": "ooo-xxxxxxxxxxxxxxxx",                //这里是回调函数所属的的云环境id
    "functionName": "payCallBack",        //这个是回调函数名
    "nonceStr":event.nonceStr,            //第三个坑:官方文档中相关云函数代码没有nonceStr和tradeType,测试的时候会报nonceStr不存在的错,翻看文档才发现这个是必填项,直接粘过来以后还需要加上这两个参数
    "tradeType":"JSAPI"
  })
  return res
}

2.3 云函数上传并部署

小程序怎么通过小程序云实现微信支付功能

小程序怎么通过小程序云实现微信支付功能

三、小程序调用

3.1 统一下单

  • 微信下单后获得的数据,最好先保存到数据库,留底

  • 再去调起微信支付界面

//调用云函数,微信统一下单
  cloudPay(){
    var _this = this
    this.setData({
      body: "账单支付-xxxxx",
      outTradeNo: this.data.id+"-"+util.uuid(16),
      totalFee: this.data.totalCost*100 //支付单位:分
    })
    app.showLoading(true)
    wx.cloud.callFunction({
      name: "pay",
      data: {
        body: _this.data.body,
        outTradeNo: _this.data.outTradeNo,
        totalFee: _this.data.totalFee,
        nonceStr:util.uuid(32)//调用自己的uuid函数
      },
      success(res) {
        // errCode: 0
        // errMsg: "cloudPay.unifiedOrder:ok"
        // returnCode: "FAIL"
        // returnMsg: "total_fee is empty. "
        console.log("提交成功", res.result)
        if(res.result.returnCode!="SUCCESS"){
          app.showToast(res.result.returnMsg)
          return
        }
        _this.unifiedOrder(res.result)
        // _this.requestPayment(res.result)
      },
      fail(res) {
        console.log("提交失败", res)
      }
    })
  },

3.2 调起微信支付界面

  //官方标准的支付方法,调起支付界面
  requestPayment(payData) {
    var _this = this;
    const payment = payData.payment//这里注意,上一个函数的result中直接整合了这里要用的参数,直接展开即可使用
    wx.requestPayment({
      ...payment,   //...是展开变量的语法 
      success(res) {
        console.log("支付成功", res)
        _this.paySuccess()
      },
      fail(res) {
        console.log("支付失败", res)
      }
    })
  },

3.2 支付成功回调

  • 不太建议直接在requestPayment的success回调函数中,执行支付成功的操作

  • 最好在另外建一个云函数payCallBack

  • 这个云函数payCallBack,调用我们自建服务器的接口,执行支付成功的操作

  • 这边涉及到如何在云函数中调用http接口,卖个关子,后续讲

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...