# 微信支付配置说明 ## 配置项说明 根据[微信支付官方文档](https://pay.weixin.qq.com/doc/v3/merchant/4012791897),以下是简化的微信支付配置说明(仅包含必填参数): ### 1. 基础配置 ```yaml wechat: pay: # 子商户配置 sub-app-id: wx3c06d9dd4e56c58d # 子商户APPID sub-mch-id: 1900000100 # 子商户号 # API密钥(32位字符串) api-key: your-32-character-api-key-here # 证书序列号 cert-serial-no: your-cert-serial-number # 私钥文件路径 private-key-path: classpath:cert/apiclient_key.pem # 支付回调地址 notify-url: https://your-domain.com/api/payment/wechat/callback ``` ### 2. 参数说明 | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| | sub-app-id | String | 是 | 子商户APPID | | sub-mch-id | String | 是 | 子商户号 | | api-key | String | 是 | API密钥,32位字符串 | | cert-serial-no | String | 是 | 证书序列号 | | private-key-path | String | 是 | 私钥文件路径 | | notify-url | String | 是 | 支付成功回调地址 | ### 3. 证书配置 1. 将微信支付商户私钥文件 `apiclient_key.pem` 放置在 `src/main/resources/cert/` 目录下 2. 确保证书序列号与私钥文件匹配 3. 私钥文件格式应为 PEM 格式 ### 4. 回调地址配置 - 支付回调地址:用于接收支付成功通知 - 退款回调地址:用于接收退款成功通知 - 回调地址必须是 HTTPS 协议 - 回调地址需要能够接收 POST 请求 ### 5. 安全注意事项 1. **API密钥安全**: - API密钥是32位字符串,请妥善保管 - 不要将API密钥提交到代码仓库 - 建议使用环境变量或配置中心管理 2. **证书安全**: - 私钥文件不要提交到代码仓库 - 确保证书文件权限设置正确 - 定期更新证书 3. **回调地址安全**: - 使用HTTPS协议 - 验证回调签名 - 处理重复通知 ### 6. 环境配置 #### 开发环境 (application-dev.yml) ```yaml wechat: pay: # 使用测试商户号和测试APPID sub-app-id: wx3c06d9dd4e56c58d sub-mch-id: 1900000100 api-key: your-test-api-key cert-serial-no: your-test-cert-serial private-key-path: classpath:cert/test_apiclient_key.pem notify-url: https://test-domain.com/api/payment/wechat/callback ``` #### 生产环境 (application-prod.yml) ```yaml wechat: pay: # 使用正式商户号和正式APPID sub-app-id: wx3c06d9dd4e56c58d sub-mch-id: 1900000100 api-key: ${WECHAT_PAY_API_KEY} cert-serial-no: ${WECHAT_PAY_CERT_SERIAL} private-key-path: classpath:cert/prod_apiclient_key.pem notify-url: https://your-domain.com/api/payment/wechat/callback ``` ### 7. 常见问题 1. **证书序列号获取**: - 登录微信支付商户平台 - 在"账户中心" -> "API安全" -> "API证书"中查看 2. **API密钥设置**: - 在微信支付商户平台设置32位API密钥 - 确保与代码中配置的密钥一致 3. **回调地址配置**: - 确保回调地址可以正常访问 - 使用HTTPS协议 - 处理跨域问题 4. **测试环境**: - 使用微信支付沙箱环境进行测试 - 测试商户号和正式商户号不同 - 测试环境需要特殊配置