💳 微信小程序支付配置指南
本文档详细介绍如何配置微信小程序支付功能
📋 目录
💡 前提条件
必需条件
| 要求 | 说明 | 状态 |
|---|---|---|
| ✅ 小程序账号 | 已认证的企业小程序 | 必须 |
| ✅ 微信支付商户号 | 已开通并审核通过 | 必须 |
| ✅ 本系统系统 | 已部署运行 | 必须 |
| ✅ 小程序基础配置 | AppID和AppSecret已获取 | 必须 |
说白了: 小程序支付就是在小程序里调起微信支付,必须有商户号!
账号要求
小程序:
- ✅ 企业认证(¥300/年)
- ✅ 服务类目包含"电商平台"或相关
- ✅ 已完成基础配置
微信支付:
- ✅ 已开通商户号
- ✅ 已签约"JSAPI支付"产品
- ✅ 账户状态正常
🏦 开通微信支付
步骤 1:申请微信支付商户号
如果还没有微信支付商户号,需要先申请:
申请入口:
- 方式1:小程序后台 → 微信支付 → 开通
- 方式2:直接访问 https://pay.weixin.qq.com/
所需资料:
| 资料 | 说明 | 要求 |
|---|---|---|
| 营业执照 | 企业营业执照 | 扫描件,JPG/PNG |
| 法人身份证 | 法人身份证正反面 | 清晰可见 |
| 银行账户 | 对公账户或法人银行卡 | 用于结算 |
| 经营场所 | 门店或办公场所照片 | 3-5张 |
| 联系信息 | 联系人、电话、邮箱 | - |
审核周期: 1-5 个工作日
步骤 2:签约产品
必须签约的产品:
| 产品名称 | 说明 | 费率 | 状态 |
|---|---|---|---|
| JSAPI支付 | 小程序内支付 | 0.6% | 必须 |
| Native支付 | 扫码支付 | 0.6% | 可选 |
| H5支付 | 手机浏览器支付 | 0.6% | 可选 |
签约步骤:
1. 登录微信支付商户平台
2. 产品中心 → 我的产品
3. 找到"JSAPI支付" → 开通
4. 阅读协议 → 签约🔗 关联小程序
为什么要关联?
微信支付商户号和小程序是独立的两个账号。
要在小程序里使用微信支付,必须先将它们关联起来。步骤 1:商户平台关联小程序
操作路径: 微信支付商户平台 → 产品中心 → AppID账号管理 → 关联AppID
操作步骤:
- 点击"关联AppID"
- 输入小程序的AppID
- 提交申请
步骤 2:小程序确认关联
操作路径: 小程序后台 → 设置 → 第三方服务 → 微信支付商户号管理
操作步骤:
- 查看待确认的商户号
- 点击"确认"
- 管理员扫码授权
- 完成关联
验证关联成功:
商户平台显示:已关联
小程序后台显示:商户号已绑定🔑 获取配置信息
需要的配置参数
| 参数名称 | 说明 | 获取位置 |
|---|---|---|
| 小程序AppID | 小程序唯一标识 | 小程序后台 → 开发设置 |
| 小程序AppSecret | 小程序密钥 | 小程序后台 → 开发设置 |
| 商户号 | 微信支付商户号 | 商户平台 → 账户中心 |
| 商户密钥 | API密钥(32位) | 商户平台 → API安全 |
| 证书文件 | apiclient_cert.pem | 商户平台 → API安全 |
| 证书密钥 | apiclient_key.pem | 商户平台 → API安全 |
步骤 1:获取小程序AppID和AppSecret
步骤 2:获取商户号
操作路径: 微信支付商户平台 → 账户中心 → 商户信息
商户号格式:
示例:1234567890
说明:10位数字步骤 3:设置商户密钥
操作路径: 微信支付商户平台 → 账户中心 → API安全 → 设置API密钥
密钥要求:
- 长度:32位
- 字符:大小写字母 + 数字
- 强度:高强度随机
生成密钥(推荐):
# Linux/Mac
openssl rand -hex 16
# 或使用在线工具
https://suijimimashengcheng.bmcx.com/设置步骤:
- 点击"设置密钥"
- 输入32位密钥
- 管理员扫码确认
- 保存密钥(仅显示一次)
步骤 4:下载API证书
操作路径: 微信支付商户平台 → 账户中心 → API安全 → 申请API证书
证书文件:
apiclient_cert.pem # 证书文件
apiclient_key.pem # 证书密钥
rootca.pem # 根证书(可选)下载步骤:
- 点击"申请证书"
- 下载证书工具
- 运行工具生成请求串
- 提交请求串
- 管理员扫码确认
- 下载证书压缩包
- 解压获取pem文件
证书存放位置:
项目目录/cert/
├── apiclient_cert.pem
└── apiclient_key.pem⚠️ 重要: 证书文件需要上传到服务器!
⚙️ 本系统系统配置
步骤 1:上传证书文件
方法1:使用FTP/SFTP
# 上传到服务器
sftp user@server
put apiclient_cert.pem /path/to/project/cert/
put apiclient_key.pem /path/to/project/cert/方法2:使用面板上传
- 宝塔面板:文件 → 上传
- 直接上传到
项目目录/cert/
验证上传:
# 检查文件是否存在
ls -la /path/to/project/cert/步骤 2:配置小程序支付参数
操作路径: 本系统后台 → 设置 → 系统设置 → 平台配置 → 支付/充值 → 小程序支付配置
配置参数:
| 配置项 | 填写内容 | 示例 |
|---|---|---|
| 小程序AppID | 小程序AppID | wxabcdef123456 |
| 小程序AppSecret | 小程序AppSecret | abc123...(32位) |
| 微信支付商户号 | 10位商户号 | 1234567890 |
| 微信支付密钥 | 32位API密钥 | def456...(32位) |
| 证书文件路径 | cert文件相对路径 | /cert/apiclient_cert.pem |
| 密钥文件路径 | key文件相对路径 | /cert/apiclient_key.pem |
配置示例:
小程序AppID: wxabcdef123456
小程序AppSecret: abc123def456ghi789jkl012mno345pqr
微信支付商户号: 1234567890
微信支付密钥: def456ghi789jkl012mno345pqr678stu
证书文件路径: /cert/apiclient_cert.pem
密钥文件路径: /cert/apiclient_key.pem⚠️ 注意事项:
- 所有参数不要有多余空格
- 路径使用相对路径(从项目根目录开始)
- 密钥长度必须是32位
步骤 3:提交保存
- 检查所有配置信息
- 点击"提交保存"
- 系统验证配置
- 看到"保存成功"提示
步骤 4:配置充值功能(审核期关闭)
操作路径: 设置 → 系统设置 → 平台配置 → 支付/充值 → 充值配置
⚠️ 重要提示:
小程序审核时,如果带有充值功能可能被要求提供资质。
建议在审核前关闭充值功能,待审核通过后再开启。配置:
小程序充值开关:关闭何时开启:
- ✅ 小程序已审核通过
- ✅ 系统已稳定运行
- ✅ 已准备好充值资质(如需)
✅ 测试验证
测试准备
测试环境:
- 使用真实的小程序(体验版或线上版)
- 准备1元测试金额
- 确保微信内打开小程序
测试步骤
测试1:商品购买支付
步骤:
- 打开小程序
- 选择测试商品(价格设为0.01元)
- 提交订单
- 点击支付
- 输入支付密码
- 完成支付
检查点:
- ✅ 能正常调起微信支付
- ✅ 支付界面显示正确金额
- ✅ 支付成功后跳转成功页面
- ✅ 订单状态更新为"已支付"
测试2:支付回调
验证方式:
1. 后台查看订单状态
2. 检查支付时间
3. 查看交易流水号
4. 确认金额一致测试3:商户平台验证
登录商户平台:
- 交易管理 → 交易记录
- 查找测试订单
- 验证交易金额
- 检查交易状态
成功标志:
本系统系统:订单已支付
商户平台:交易成功
用户端:支付成功通知常见测试问题
问题1:提示"商户号该产品权限未开通"
原因:未签约JSAPI支付
解决:商户平台 → 产品中心 → 签约JSAPI支付问题2:提示"AppID与商户号不匹配"
原因:商户号未关联小程序
解决:按照"关联小程序"步骤重新关联问题3:支付成功但订单未更新
原因:支付回调失败
解决:检查服务器日志和回调地址配置❓ 常见问题
Q1:小程序支付和公众号支付有什么区别?
区别对比:
| 对比项 | 小程序支付 | 公众号支付 |
|---|---|---|
| 支付场景 | 小程序内 | 公众号网页内 |
| 产品类型 | JSAPI支付 | JSAPI支付 |
| AppID | 小程序AppID | 公众号AppID |
| 关联要求 | 商户号关联小程序 | 商户号关联公众号 |
| 配置位置 | 小程序支付配置 | 公众号支付配置 |
说白了: 都是JSAPI支付,但AppID和关联账号不同!
Q2:一个商户号可以关联多个小程序吗?
答案: 可以!
限制:
- 最多关联50个AppID(小程序+公众号合计)
- 每个AppID可以关联5个商户号
使用场景:
多个小程序 → 同一个商户号收款 → 统一财务管理Q3:证书文件丢失了怎么办?
解决方案:
证书可以重新下载:
1. 商户平台 → API安全
2. 证书类型选择"API证书"
3. 点击"重新下载"
4. 重新申请和下载证书
5. 更新服务器上的证书文件⚠️ 注意: 重新下载的证书序列号会变化!
Q4:商户密钥忘记了怎么办?
解决方案:
密钥无法查看,只能重置:
1. 商户平台 → API安全 → API密钥
2. 点击"设置密钥"
3. 输入新的32位密钥
4. 管理员扫码确认
5. 更新本系统系统配置⚠️ 重要: 重置后旧密钥立即失效!
Q5:支付成功但用户余额未到账?
排查步骤:
1. 检查订单状态
2. 查看支付日志
3. 验证回调是否成功
4. 检查业务逻辑代码
5. 查看数据库事务是否提交常见原因:
- 回调处理代码有bug
- 数据库事务回滚
- 余额更新逻辑错误
Q6:支付费率可以降低吗?
官方标准费率: 0.6%
降低费率方式:
| 方式 | 条件 | 费率 |
|---|---|---|
| 普通商户 | 无特殊条件 | 0.6% |
| 服务商模式 | 成为服务商 | 可协商 |
| 大额优惠 | 交易量大(月百万级) | 可申请 |
| 特殊行业 | 教育、医疗等 | 可能优惠 |
申请流程:
1. 提供交易量证明
2. 提交费率优惠申请
3. 等待审核结果🎯 最佳实践
1. 安全配置
密钥管理:
- ✅ 使用高强度随机密钥(32位)
- ✅ 定期更换商户密钥(3-6个月)
- ✅ 不要将密钥提交到代码仓库
- ✅ 使用环境变量存储敏感信息
证书管理:
# 设置证书文件权限(仅所有者可读)
chmod 400 apiclient_cert.pem
chmod 400 apiclient_key.pem
# 定期备份证书
cp apiclient_cert.pem apiclient_cert.pem.bak支付安全:
- ✅ 验证回调签名
- ✅ 记录所有支付日志
- ✅ 设置支付金额上限
- ✅ 异常交易监控和告警
2. 测试建议
测试环境:
开发阶段:使用0.01元测试
测试阶段:使用0.01-1元小额测试
预发布:使用真实金额小范围测试
正式上线:全量开放测试清单:
[ ] 支付流程完整性
[ ] 支付金额准确性
[ ] 订单状态更新
[ ] 支付回调处理
[ ] 异常情况处理(超时、取消)
[ ] 退款流程3. 监控和告警
关键指标:
| 指标 | 正常范围 | 告警阈值 |
|---|---|---|
| 支付成功率 | > 95% | < 90% |
| 支付响应时间 | < 3s | > 5s |
| 回调成功率 | > 99% | < 95% |
| 异常订单比例 | < 1% | > 5% |
告警配置:
支付失败率 > 10% → 立即告警
回调失败率 > 5% → 立即告警
证书即将过期 → 提前30天告警4. 财务对账
对账频率:
每日对账:核对交易笔数和金额
每周对账:核对退款记录
每月对账:财务总账核对对账流程:
- 下载商户平台账单
- 导出本系统系统订单
- 比对交易数据
- 标记差异记录
- 核查原因并调整
对账工具:
# 下载商户平台账单
wget https://api.mch.weixin.qq.com/pay/downloadbill
# 对比系统订单
diff merchant_bill.csv system_orders.csv5. 性能优化
支付性能优化:
1. 使用异步回调处理订单
2. 优化数据库查询
3. 使用Redis缓存支付状态
4. 设置合理的超时时间(30s)并发处理:
低并发(< 100单/小时): 默认配置
中并发(100-500单/小时): 启用队列
高并发(> 500单/小时): 分布式队列 + 缓存📊 总结
配置流程回顾
开通微信支付 → 签约JSAPI支付 → 关联小程序 →
获取配置信息 → 上传证书文件 → 本系统系统配置 →
测试验证 → 上线运营关键要点
| 要点 | 说明 |
|---|---|
| ✅ 商户号 | 必须已开通并签约JSAPI |
| ✅ 关联 | 商户号必须关联小程序 |
| ✅ 证书 | 上传并配置正确路径 |
| ✅ 密钥 | 32位,高强度随机 |
| ✅ 充值 | 审核期必须关闭 |
| ✅ 测试 | 小额测试验证功能 |
配置检查清单
商户号配置:
[ ] 商户号已开通
[ ] JSAPI支付已签约
[ ] 商户号已关联小程序
[ ] 商户密钥已设置(32位)
[ ] API证书已下载
系统配置:
[ ] 证书文件已上传到服务器
[ ] 小程序AppID已配置
[ ] 小程序AppSecret已配置
[ ] 商户号已配置
[ ] 商户密钥已配置
[ ] 证书路径已配置
测试验证:
[ ] 支付流程测试通过
[ ] 支付回调正常
[ ] 订单状态更新正常
[ ] 商户平台显示交易
上线准备:
[ ] 充值功能已关闭(审核期)
[ ] 支付监控已配置
[ ] 告警机制已设置
[ ] 对账流程已建立🔗 相关文档
📚 参考资源
官方文档: