重置项目上下文与规范文档

This commit is contained in:
2026-08-07 16:18:07 +08:00
parent 6611ca5226
commit 79e2d9ff92
1900 changed files with 1552 additions and 348365 deletions

View File

@@ -0,0 +1,34 @@
# 微信生态接入契约
## 元数据
- Owner支付与微信生态维护人
- 实现:`pkg/wechat/`
- SDK`github.com/ArtisanCloud/PowerWeChat/v3 v3.4.38`
- 核验日期2026-08-07
## 当前实际使用范围
系统使用公众号 OAuth、小程序 `code2session`、微信支付 JSAPI/H5 下单、查单、关单和支付通知。支付同时存在 PowerWeChat/v3 适配与仅配置 APIv2 Key 时使用的 v2 XML 适配;不得仅凭 SDK 文档推断其他微信能力。
## 端点、配置与关键字段
- 小程序:`GET https://api.weixin.qq.com/sns/jscode2session`,参数为 AppID、AppSecret、临时 code 和固定 `authorization_code`;响应必须含 OpenID、SessionKey可选 UnionID超时 10 秒。
- 支付 v2`POST https://api.mch.weixin.qq.com/pay/unifiedorder``/pay/orderquery`XML + MD5 签名关键字段为商户订单号、金额、OpenID、交易类型、通知地址和客户端 IP。
- 支付 v3/SDK使用 AppID、商户号、APIv3 Key、证书序列号、私钥及通知地址支持 JSAPI/H5、Query、Close 和 Notify。
配置来自支付配置记录不在本文列出具体值。v2 下单同时要求 `return_code=SUCCESS``result_code=SUCCESS`;查单以商户订单号关联本地支付。
## 回调、幂等、失败与重试
v2 按 API Key 验签v3 按平台证书验签并解密通知。商户订单号是渠道幂等标识;通知还需核对金额、配置和本地状态,并以状态条件更新避免重复入账。小程序 `errcode!=0`、关键字段缺失、HTTP/解析失败均映射统一微信错误。
适配器没有对创建支付做盲目自动重试;查单可由业务流程补偿,关单和回调按原商户订单号及状态保持幂等。
## 安全与验证
AppSecret、API Key、私钥、证书内容、SessionKey、完整 OpenID 和通知原文不得进入文档或普通日志。可复现静态证据:`pkg/wechat/miniapp.go``pkg/wechat/payment.go``pkg/wechat/payment_v2.go``internal/handler/callback/payment.go`。真实验收需隔离商户验证 JSAPI/H5、查关单、签名失败、金额不符与重复通知本次不调用真实渠道。
官方参考:<https://pay.weixin.qq.com/doc/v3/merchant/4012065342>
SDK、API 版本、认证、通知或重试语义变化时更新本文。