更新记录

1.2.0(2026-09-01) 下载此版本

1.2.0(2026-08-30) 更新版本1.0

1.1.0(2026-07-30) 更新版本1.1,修复系统中的bug

1.0.0(2026-08-30) 更新版本1.0


平台兼容性

微信支付对接部署指南(云开发版)

本文档说明如何将"爱轻"小程序的模拟支付切换为真实微信支付(基于微信云开发 CloudPay 云调用)。

一、方案优势(对比服务器方案)

对比项 服务器方案 云开发方案(本方案)
服务器 需自建Express服务器 无需服务器
商户证书 需下载pem文件 无需证书
签名计算 需手写RSA-SHA256 云调用自动签名
openid获取 需wx.login+jscode2session cloud.getWXContext()自动获取
支付回调 需HTTPS公网地址 云函数自动接收
AppSecret 必须配置 不需要
部署复杂度 高(服务器+域名+证书+Nginx) 低(开发者工具一键部署)
费用 服务器费用 免费版即可

二、架构说明

小程序前端                     云开发                     微信支付
    │                           │                          │
    │── wx.cloud.callFunction ──│                          │
    │   name: 'createOrder'     │                          │
    │                           │── cloud.getWXContext()   │
    │                           │   自动获取 openid         │
    │                           │                          │
    │                           │── cloud.cloudPay          │
    │                           │   .unifiedOrder()         │
    │                           │   自动签名+下单 ──────────│
    │                           │                          │
    │<── 返回 payment 参数 ─────│                          │
    │                           │                          │
    │── wx.requestPayment() ────│                          │
    │   拉起微信支付             │                          │
    │                           │                          │
    │                           │<── payCallback 云函数 ───│
    │                           │   自动接收支付回调         │
    │                           │                          │
    │── wx.cloud.callFunction ──│                          │
    │   name: 'queryOrder'      │── cloud.cloudPay          │
    │   验证支付结果             │   .queryOrder() ─────────│

三、前置条件

条件 说明
微信小程序认证 小程序需已通过微信认证(非个人主体)
微信支付商户号 pay.weixin.qq.com 申请
开通云开发 在微信开发者工具中开通云开发(免费版即可)

注意:云开发免费版每月包含 2GB 数据库、5GB 存储、1000 GBs 云函数资源,足够开发和小规模使用。

四、文件结构

ai-weight-loss-miniapp/
├── config/
│   └── pay-config.js              # 前端支付配置(填入云环境ID和商户号)
├── utils/
│   ├── pay.js                     # 前端支付工具(调用云函数)
│   └── pay-config-check.js        # 配置检查工具
├── app.js                         # 小程序入口(wx.cloud.init 初始化)
├── project.config.json            # 项目配置(cloudfunctionRoot)
├── cloudfunctions/                # ★ 云函数目录
│   ├── createOrder/               # 统一下单云函数
│   │   ├── index.js
│   │   └── package.json
│   ├── queryOrder/                # 查询订单云函数
│   │   ├── index.js
│   │   └── package.json
│   └── payCallback/               # 支付回调云函数
│       ├── index.js
│       └── package.json
└── docs/
    └── 微信支付部署指南.md          # 本文档

五、配置步骤

步骤1:开通云开发

  1. 打开微信开发者工具,打开本项目
  2. 点击工具栏的「云开发」按钮
  3. 点击「开通」,创建云开发环境
  4. 选择「免费版」(按需可后续升级)
  5. 创建完成后,记下环境ID(在设置页面可见)

步骤2:绑定微信支付商户号

  1. 在云开发控制台 → 设置 → 全局设置中
  2. 找到「微信支付」→ 点击「添加商户号」
  3. 输入你的微信支付商户号
  4. 完成以下授权(需商户号超级管理员操作):
    • 账号绑定:在「微信支付商家助手」小程序上确认授权给「1800008281 小程序云开发」服务商
    • JSAPI权限:在微信支付商户平台 → 我的授权产品中确认授权
    • API退款权限:同上

步骤3:配置前端支付参数

编辑 config/pay-config.js

module.exports = {
  cloudEnvId: '你的云开发环境ID',     // 步骤1获取的环境ID
  mchId: '你的微信支付商户号',         // 步骤2绑定的商户号
  enabled: true                        // 设为 true 启用真实支付
};

注意mchId 填在配置文件中便于前端识别,但云函数优先从环境变量读取商户号(更安全)。

步骤3.5:设置云函数环境变量(重要)

  1. 打开微信开发者工具 → 云开发控制台
  2. 点击左侧「云函数」→ 点击 createOrder 函数名
  3. 切换到「配置」Tab → 找到「环境变量」→ 点击「编辑」
  4. 添加环境变量:
    • 变量名:MCH_ID
    • 变量值:你的微信支付商户号(如 1747287609
  5. 点击「确定」保存
  6. queryOrderpayCallback 也建议配置(可选)

环境变量配置后,云函数代码中通过 process.env.MCH_ID 读取,无需每次部署都修改代码。

步骤4:部署云函数

  1. 在微信开发者工具中,右键点击 cloudfunctions/createOrder 文件夹
  2. 选择「上传并部署:云端安装依赖」
  3. queryOrderpayCallback 重复同样操作
  4. 等待三个云函数都部署完成

步骤5:验证配置

  1. 在开发者工具的控制台中执行:
    require('utils/pay-config-check.js').checkPayConfig()
  2. 确认没有错误

六、支付流程说明

用户下单
  │
  ▼
前端创建本地订单 (pending_payment)
  │
  ▼
调用云函数 createOrder
  │  → 云函数自动获取 openid(cloud.getWXContext)
  │  → 云函数自动签名 + 调用微信支付统一下单(cloud.cloudPay.unifiedOrder)
  │  → 返回 payment 参数 { timeStamp, nonceStr, package, signType, paySign }
  │
  ▼
前端调用 wx.requestPayment(payment)
  │  → 拉起微信支付界面
  │  → 用户输入密码/指纹确认
  │
  ├─ 支付成功
  │   ▼
  │   微信支付服务器 → payCallback 云函数(异步回调)
  │   ▼
  │   前端调用 queryOrder 云函数验证
  │   ▼
  │   更新本地订单为 paid
  │   ▼
  │   扣除积分,清空购物车
  │
  ├─ 用户取消
  │   ▼
  │   订单保持 pending_payment 状态
  │   ▼
  │   提示"已取消支付"
  │
  └─ 支付失败
      ▼
      提示错误信息

七、降级机制

当以下任一条件不满足时,系统自动降级为模拟支付(1.5秒延时模拟):

  • config/pay-config.jsenabledfalse
  • 未配置 cloudEnvId
  • 云函数调用失败
  • 云函数返回错误

降级时会在控制台输出警告日志,前端体验与模拟支付完全一致。

八、云函数说明

createOrder(统一下单)

  • 入参:{ orderId, amount, description }
  • 自动获取 openid(无需前端传入)
  • 调用 cloud.cloudPay.unifiedOrder() 自动签名下单
  • 返回:{ success: true, payment: { timeStamp, nonceStr, package, signType, paySign } }

queryOrder(查询订单)

  • 入参:{ orderId }
  • 调用 cloud.cloudPay.queryOrder() 查询订单状态
  • 返回:{ success: true, tradeState: "SUCCESS", transactionId: "xxx" }

payCallback(支付回调)

  • 由微信支付服务器在支付完成后自动调用
  • createOrder 中的 functionName: 'payCallback' 指定
  • 必须返回 { errcode: 0 },否则微信会重复通知
  • 可在此更新数据库订单状态

九、测试

测试模式(默认)

enabled: false 时使用模拟支付,无需任何配置即可测试完整下单→支付→发货流程。

真实支付测试

  1. 确保云开发环境已开通,三个云函数已部署
  2. config/pay-config.js 中配置 cloudEnvIdmchId 并设 enabled: true
  3. 使用真实金额测试(建议先用 0.01 元)
  4. 在云开发控制台 → 云函数 → 日志中查看运行日志

正式上线

  1. 确认云函数已部署到生产环境
  2. 确认商户号授权已完成
  3. enabled 设为 true
  4. 重新编译小程序并发布

十、常见问题

Q: 提示"商户号未配置(MCH_ID)"

A: 需要在云函数中配置环境变量。打开云开发控制台 → 云函数 → createOrder → 配置 → 环境变量,添加 MCH_ID = 你的商户号,然后重新部署云函数。

Q: 提示"云函数 createOrder 未上传"

A: 在开发者工具中右键点击 cloudfunctions/createOrder 文件夹,选择「上传并部署:云端安装依赖」。三个云函数(createOrder、queryOrder、payCallback)都需要上传。

Q: 统一下单返回"商户号未绑定"

A: 在云开发控制台 → 设置 → 全局设置 → 微信支付中绑定商户号,并完成授权。

Q: 云函数调用返回"权限错误"

A: 确保商户号超级管理员已在「微信支付商家助手」小程序中授权给「1800008281 小程序云开发」服务商。

Q: wx.cloud.init 报错

A: 检查 config/pay-config.js 中的 cloudEnvId 是否正确(在云开发控制台 → 设置中获取)。

Q: 小程序提示"请先开通云开发"

A: 在微信开发者工具中点击「云开发」按钮开通,选择免费版即可。

Q: 交易类商品是否可以用云调用支付

A: 珠玉石、3C数码、盲盒、服饰内衣、海淘、美妆、酒类、家用电器、玩具、箱包皮具、鞋靴、运动户外等商品的在线销售及配送服务,不可使用云调用支付,需使用工作流接入。详见交易类小程序运营规范

十一、相关文档

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

用户的位置

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。