Skip to content

💳 微信小程序支付配置指南

本文档详细介绍如何配置微信小程序支付功能


📋 目录


💡 前提条件

必需条件

要求说明状态
小程序账号已认证的企业小程序必须
微信支付商户号已开通并审核通过必须
本系统系统已部署运行必须
小程序基础配置AppID和AppSecret已获取必须

说白了: 小程序支付就是在小程序里调起微信支付,必须有商户号!

账号要求

小程序:

  • ✅ 企业认证(¥300/年)
  • ✅ 服务类目包含"电商平台"或相关
  • ✅ 已完成基础配置

微信支付:

  • ✅ 已开通商户号
  • ✅ 已签约"JSAPI支付"产品
  • ✅ 账户状态正常

🏦 开通微信支付

步骤 1:申请微信支付商户号

如果还没有微信支付商户号,需要先申请:

申请入口:

所需资料:

资料说明要求
营业执照企业营业执照扫描件,JPG/PNG
法人身份证法人身份证正反面清晰可见
银行账户对公账户或法人银行卡用于结算
经营场所门店或办公场所照片3-5张
联系信息联系人、电话、邮箱-

审核周期: 1-5 个工作日

步骤 2:签约产品

必须签约的产品:

产品名称说明费率状态
JSAPI支付小程序内支付0.6%必须
Native支付扫码支付0.6%可选
H5支付手机浏览器支付0.6%可选

签约步骤:

1. 登录微信支付商户平台
2. 产品中心 → 我的产品
3. 找到"JSAPI支付" → 开通
4. 阅读协议 → 签约

🔗 关联小程序

为什么要关联?

微信支付商户号和小程序是独立的两个账号。
要在小程序里使用微信支付,必须先将它们关联起来。

步骤 1:商户平台关联小程序

操作路径: 微信支付商户平台 → 产品中心 → AppID账号管理 → 关联AppID

操作步骤:

  1. 点击"关联AppID"
  2. 输入小程序的AppID
  3. 提交申请

步骤 2:小程序确认关联

操作路径: 小程序后台 → 设置 → 第三方服务 → 微信支付商户号管理

操作步骤:

  1. 查看待确认的商户号
  2. 点击"确认"
  3. 管理员扫码授权
  4. 完成关联

验证关联成功:

商户平台显示:已关联
小程序后台显示:商户号已绑定

🔑 获取配置信息

需要的配置参数

参数名称说明获取位置
小程序AppID小程序唯一标识小程序后台 → 开发设置
小程序AppSecret小程序密钥小程序后台 → 开发设置
商户号微信支付商户号商户平台 → 账户中心
商户密钥API密钥(32位)商户平台 → API安全
证书文件apiclient_cert.pem商户平台 → API安全
证书密钥apiclient_key.pem商户平台 → API安全

步骤 1:获取小程序AppID和AppSecret

详见微信小程序配置指南

步骤 2:获取商户号

操作路径: 微信支付商户平台 → 账户中心 → 商户信息

商户号格式:

示例:1234567890
说明:10位数字

步骤 3:设置商户密钥

操作路径: 微信支付商户平台 → 账户中心 → API安全 → 设置API密钥

密钥要求:

  • 长度:32位
  • 字符:大小写字母 + 数字
  • 强度:高强度随机

生成密钥(推荐):

bash
# Linux/Mac
openssl rand -hex 16

# 或使用在线工具
https://suijimimashengcheng.bmcx.com/

设置步骤:

  1. 点击"设置密钥"
  2. 输入32位密钥
  3. 管理员扫码确认
  4. 保存密钥(仅显示一次)

步骤 4:下载API证书

操作路径: 微信支付商户平台 → 账户中心 → API安全 → 申请API证书

证书文件:

apiclient_cert.pem    # 证书文件
apiclient_key.pem     # 证书密钥
rootca.pem            # 根证书(可选)

下载步骤:

  1. 点击"申请证书"
  2. 下载证书工具
  3. 运行工具生成请求串
  4. 提交请求串
  5. 管理员扫码确认
  6. 下载证书压缩包
  7. 解压获取pem文件

证书存放位置:

项目目录/cert/
├── apiclient_cert.pem
└── apiclient_key.pem

⚠️ 重要: 证书文件需要上传到服务器!


⚙️ 本系统系统配置

步骤 1:上传证书文件

方法1:使用FTP/SFTP

bash
# 上传到服务器
sftp user@server
put apiclient_cert.pem /path/to/project/cert/
put apiclient_key.pem /path/to/project/cert/

方法2:使用面板上传

  • 宝塔面板:文件 → 上传
  • 直接上传到 项目目录/cert/

验证上传:

bash
# 检查文件是否存在
ls -la /path/to/project/cert/

步骤 2:配置小程序支付参数

操作路径: 本系统后台 → 设置 → 系统设置 → 平台配置 → 支付/充值 → 小程序支付配置

配置参数:

配置项填写内容示例
小程序AppID小程序AppIDwxabcdef123456
小程序AppSecret小程序AppSecretabc123...(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:提交保存

  1. 检查所有配置信息
  2. 点击"提交保存"
  3. 系统验证配置
  4. 看到"保存成功"提示

步骤 4:配置充值功能(审核期关闭)

操作路径: 设置 → 系统设置 → 平台配置 → 支付/充值 → 充值配置

⚠️ 重要提示:

小程序审核时,如果带有充值功能可能被要求提供资质。
建议在审核前关闭充值功能,待审核通过后再开启。

配置:

小程序充值开关:关闭

何时开启:

  • ✅ 小程序已审核通过
  • ✅ 系统已稳定运行
  • ✅ 已准备好充值资质(如需)

✅ 测试验证

测试准备

测试环境:

  • 使用真实的小程序(体验版或线上版)
  • 准备1元测试金额
  • 确保微信内打开小程序

测试步骤

测试1:商品购买支付

步骤:

  1. 打开小程序
  2. 选择测试商品(价格设为0.01元)
  3. 提交订单
  4. 点击支付
  5. 输入支付密码
  6. 完成支付

检查点:

  • ✅ 能正常调起微信支付
  • ✅ 支付界面显示正确金额
  • ✅ 支付成功后跳转成功页面
  • ✅ 订单状态更新为"已支付"

测试2:支付回调

验证方式:

1. 后台查看订单状态
2. 检查支付时间
3. 查看交易流水号
4. 确认金额一致

测试3:商户平台验证

登录商户平台:

  1. 交易管理 → 交易记录
  2. 查找测试订单
  3. 验证交易金额
  4. 检查交易状态

成功标志:

本系统系统:订单已支付
商户平台:交易成功
用户端:支付成功通知

常见测试问题

问题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个月)
  • ✅ 不要将密钥提交到代码仓库
  • ✅ 使用环境变量存储敏感信息

证书管理:

bash
# 设置证书文件权限(仅所有者可读)
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. 财务对账

对账频率:

每日对账:核对交易笔数和金额
每周对账:核对退款记录
每月对账:财务总账核对

对账流程:

  1. 下载商户平台账单
  2. 导出本系统系统订单
  3. 比对交易数据
  4. 标记差异记录
  5. 核查原因并调整

对账工具:

bash
# 下载商户平台账单
wget https://api.mch.weixin.qq.com/pay/downloadbill

# 对比系统订单
diff merchant_bill.csv system_orders.csv

5. 性能优化

支付性能优化:

1. 使用异步回调处理订单
2. 优化数据库查询
3. 使用Redis缓存支付状态
4. 设置合理的超时时间(30s)

并发处理:

低并发(< 100单/小时):  默认配置
中并发(100-500单/小时): 启用队列
高并发(> 500单/小时):  分布式队列 + 缓存

📊 总结

配置流程回顾

开通微信支付 → 签约JSAPI支付 → 关联小程序 →
获取配置信息 → 上传证书文件 → 本系统系统配置 →
测试验证 → 上线运营

关键要点

要点说明
商户号必须已开通并签约JSAPI
关联商户号必须关联小程序
证书上传并配置正确路径
密钥32位,高强度随机
充值审核期必须关闭
测试小额测试验证功能

配置检查清单

商户号配置:
[ ] 商户号已开通
[ ] JSAPI支付已签约
[ ] 商户号已关联小程序
[ ] 商户密钥已设置(32位)
[ ] API证书已下载

系统配置:
[ ] 证书文件已上传到服务器
[ ] 小程序AppID已配置
[ ] 小程序AppSecret已配置
[ ] 商户号已配置
[ ] 商户密钥已配置
[ ] 证书路径已配置

测试验证:
[ ] 支付流程测试通过
[ ] 支付回调正常
[ ] 订单状态更新正常
[ ] 商户平台显示交易

上线准备:
[ ] 充值功能已关闭(审核期)
[ ] 支付监控已配置
[ ] 告警机制已设置
[ ] 对账流程已建立

🔗 相关文档


📚 参考资源

官方文档: