更新记录
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:开通云开发
- 打开微信开发者工具,打开本项目
- 点击工具栏的「云开发」按钮
- 点击「开通」,创建云开发环境
- 选择「免费版」(按需可后续升级)
- 创建完成后,记下环境ID(在设置页面可见)
步骤2:绑定微信支付商户号
- 在云开发控制台 → 设置 → 全局设置中
- 找到「微信支付」→ 点击「添加商户号」
- 输入你的微信支付商户号
- 完成以下授权(需商户号超级管理员操作):
- 账号绑定:在「微信支付商家助手」小程序上确认授权给「1800008281 小程序云开发」服务商
- JSAPI权限:在微信支付商户平台 → 我的授权产品中确认授权
- API退款权限:同上
步骤3:配置前端支付参数
编辑 config/pay-config.js:
module.exports = {
cloudEnvId: '你的云开发环境ID', // 步骤1获取的环境ID
mchId: '你的微信支付商户号', // 步骤2绑定的商户号
enabled: true // 设为 true 启用真实支付
};
注意:
mchId填在配置文件中便于前端识别,但云函数优先从环境变量读取商户号(更安全)。
步骤3.5:设置云函数环境变量(重要)
- 打开微信开发者工具 → 云开发控制台
- 点击左侧「云函数」→ 点击
createOrder函数名 - 切换到「配置」Tab → 找到「环境变量」→ 点击「编辑」
- 添加环境变量:
- 变量名:
MCH_ID - 变量值:你的微信支付商户号(如
1747287609)
- 变量名:
- 点击「确定」保存
- 对
queryOrder和payCallback也建议配置(可选)
环境变量配置后,云函数代码中通过
process.env.MCH_ID读取,无需每次部署都修改代码。
步骤4:部署云函数
- 在微信开发者工具中,右键点击
cloudfunctions/createOrder文件夹 - 选择「上传并部署:云端安装依赖」
- 对
queryOrder和payCallback重复同样操作 - 等待三个云函数都部署完成
步骤5:验证配置
- 在开发者工具的控制台中执行:
require('utils/pay-config-check.js').checkPayConfig() - 确认没有错误
六、支付流程说明
用户下单
│
▼
前端创建本地订单 (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.js中enabled为false- 未配置
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 时使用模拟支付,无需任何配置即可测试完整下单→支付→发货流程。
真实支付测试
- 确保云开发环境已开通,三个云函数已部署
- 在
config/pay-config.js中配置cloudEnvId、mchId并设enabled: true - 使用真实金额测试(建议先用 0.01 元)
- 在云开发控制台 → 云函数 → 日志中查看运行日志
正式上线
- 确认云函数已部署到生产环境
- 确认商户号授权已完成
- 将
enabled设为true - 重新编译小程序并发布
十、常见问题
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数码、盲盒、服饰内衣、海淘、美妆、酒类、家用电器、玩具、箱包皮具、鞋靴、运动户外等商品的在线销售及配送服务,不可使用云调用支付,需使用工作流接入。详见交易类小程序运营规范。

收藏人数:
下载插件并导入HBuilderX
下载插件ZIP
赞赏(0)
下载 0
赞赏 0
下载 12549057
赞赏 1947
赞赏
京公网安备:11010802035340号