首页/生活百态/正文
成为商家及小程序关联商户号注册流程与微信支付业务逻辑解析

 2025年08月31日  阅读 16

摘要:申请商户号要开通微信支付功能,首先需要申请商户号。进入微信支付官网,点击"成为商家",按照页面提示填写资料并提交审核。申请时需要提供营业执照(个体户或公司执照均可),如果没有执照需要先办理。审核通常需要1-3个工作日。关联小程序与商户号商户号申请通过后,...

申请商户号

要开通微信支付功能,首先需要申请商户号。进入微信支付官网,点击"成为商家",按照页面提示填写资料并提交审核。申请时需要提供营业执照(个体户或公司执照均可),如果没有执照需要先办理。审核通常需要1-3个工作日。

关联小程序与商户号

商户号申请通过后,登录微信支付商户平台,进入"产品中心"-"账号管理",找到"关联小程序"功能。选择需要关联的小程序并确认授权,系统会自动完成绑定。

开发工具配置

1. 打开微信开发者工具,进入对应小程序项目

2. 点击左侧"云开发"进入控制台

3. 选择"设置"-"其他设置"

4. 在"支付配置"中添加已申请的商户号

5. 保存配置后需要等待10分钟左右生效

支付业务逻辑实现

支付功能的核心业务流程分为三个关键环节:

1. 前端调用云函数获取支付参数

2. 小程序端发起支付请求

3. 处理支付结果

云函数开发要点

支付云函数(pay)主要职责是:

接收小程序端请求

向微信支付系统获取预支付订单

返回包含时间戳、随机字符串等支付参数的回包

前端调用注意事项

小程序端代码需要:

1. 调用pay云函数获取支付参数

2. 使用wx.requestPayment发起支付

3. 处理支付结果回调

const cloud = require('wx-server-sdk')
cloud.init({
  env: ''  //填入你的云开发环境ID
})
exports.main = async (event, context) => {
  const res = await cloud.cloudPay.unifiedOrder({
    "body": event.body,
    "outTradeNo" : event.outTradeNo, //不能重复,否则报错
    "spbillCreateIp" : "127.0.0.1", //就是这个值,不要改
    "subMchId" : "",  //你的商户号,
    "totalFee" : event.totalFee*100,  //单位为分
    "envId": "",  //填入你的云开发环境ID
    "functionName": "pay_success",  //支付成功的回调云函数
    "nonceStr":event.nonceStr,//随便弄的32位字符串,建议自己生成
    "tradeType":"JSAPI"   //默认是JSAPI
  })
  return res
}

支付后业务处理

特别注意:

不要在wx.requestPayment的回调中处理业务逻辑

支付成功后的订单状态更新应该在云函数中完成

  //使用微信支付
  pay:function(id){
    let that = this;
    wx.showLoading({
      title: '正在支付',
    })
    wx.cloud.callFunction({
      name: 'pay',  //云函数的名称
      data:{
          body:'支付跑腿费',
          outTradeNo:id,      //用记录号来做订单号,因为记录号也是唯一的。
          totalFee:that.data.price,
          nonceStr:'5K8264ILTKCH16CQ2502SI8ZNMTM67VS'
      },
      success: res => {
        console.log(res)
        const payment = res.result.payment
        wx.hideLoading();
        wx.requestPayment({
          ...payment, //...这三点是 ES6的展开运算符,用于对变量、数组、字符串、对象等都可以进行解构赋值。
          success (res) {
             //这里success回调函数只有用户点击了“完成”或者返回键才会被触发
             //所以不要在这里写改变订单为已支付的业务逻辑
             //万一用户支付完成,但不点击"完成"或者返回键,那会造成数据不一致性的问题
             
            console.log('支付成功', res)
            wx.showToast({
              title: '下单成功',
              icon: 'success',
              duration: 2000
            })
          },
          fail (err) {
            console.error('支付失败', err) //支付失败之后的处理函数,写在这后面
            //为了节省数据库的空间,支付失败的订单可以删除
            db.collection('publish').doc(id).remove()
          },
        })
      },
      fail(ere){
          //为了节省数据库的空间,支付失败的订单可以删除
          db.collection('publish').doc(id).remove()
      },
    })
  },

使用云数据库的触发器或定时任务检查支付状态

订单查询时只显示支付状态为true的订单

常见问题解决方案

1. 支付回调不可靠问题:建议使用微信支付通知+主动查询双重校验机制

2. 数据一致性问题:采用事务操作更新订单状态

3. 支付超时问题:设置合理的支付有效期(建议2小时)

开发建议

1. 先在测试环境下完成支付流程验证

2. 做好异常处理和日志记录

3. 支付金额使用分单位(整数)

4. 定期对账确保财务数据准确

const cloud = require('wx-server-sdk')
cloud.init({
  env:''   //填入你的云开发环境ID
})
const db = cloud.database()
// 云函数入口函数
exports.main = async (event, context) => {
  const orderId = event.outTradeNo
  const returnCode = event.returnCode
  if(returnCode == 'SUCCESS'){
    //更新云数据库的订单状态,改为已支付的状态即可
    db.collection('publish').where({
        _id:orderId,
    }).update({
      data:{
        pay_status:true,  //改为已支付状态
      }
    })
    const res = {errcode:0,errmsg:'支付成功'}//需要返回的字段,不返回该字段则一直回调
    return res
  }
}

通过以上步骤和注意事项,可以在小程序云开发中实现稳定可靠的微信支付功能。关键是理解支付业务流程,处理好各个环节的状态同步,确保支付数据的一致性。

版权声明:本文为 “博览广文网” 原创文章,转载请附上原文出处链接及本声明;

原文链接:http://wen.bjhwtx.com/post/36969.html

标签:

博览广文网

博览广文网为所有文学爱好者、新闻爱好者、关注生活多方面内容的观众朋友提供多方位的内容呈现、提升阅读空间、填充碎片时间,开阔读者的视野、增长见识、了解民生、一个让您不出户尽知天下事的网站平台!
热门标签
关于我们
广文舒阅网—让天下读者有家可归!这里汇聚了各类优质文化信息,无论是全球热点、历史故事,还是实用百科、趣味探索,您都能轻松获取。我们希望用阅读点亮您的世界,让每一次浏览都充满收获和乐趣。
导航栏A标题
广文舒阅网
扫码关注
联系方式
全国服务热线:0755-88186625
Q Q:8705332
Email:admin@lanyu.com
地址:深圳市福田区海雅缤纷国际大厦5层501
Copyright 深圳市蓝宇科技有限公司 版权所有 备案号:京ICP备20013102号-1