让代理充值复用现有网页支付能力
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m7s

微信按当前 v2/v3 配置分别生成 MWEB/H5 链接,支付宝复用 C 端 WAP 链接,并让可用支付方式基于生效配置判断。

Constraint: 支付链接统一通过 qr_content 返回,由前端渲染二维码;按要求不运行测试

Rejected: 微信 Native 与支付宝当面付 | 会引入非当前商户配置所需的额外产品开通

Confidence: high

Scope-risk: moderate

Directive: 微信 H5/MWEB 二维码仅承诺系统相机或外部浏览器扫码链路

Tested: 相关 Go 包编译通过;gofmt 与 git diff --check 通过

Not-tested: 按用户要求未运行自动化测试及真实支付联调
This commit is contained in:
2026-07-30 11:41:50 +08:00
parent 0f4f0d1176
commit 8fc667daee
24 changed files with 692 additions and 352 deletions

View File

@@ -9,7 +9,7 @@
1. **同一个创建接口有两条业务路径**:代理账号使用 `wechat|alipay` 在线自充;平台或超级管理员使用 `offline` 线下代充。
2. **前端必须使用 `recharge_source` 区分来源**`platform_offline` 是平台线下代充,`agent_online` 是代理在线自充;不要根据账号名称、备注或审批字段猜测。
3. **代理不能选择充值店铺**:在线充值的店铺和主钱包由登录上下文确定,请求不得发送 `shop_id`、支付凭证或备注。
4. **二维码由前端渲染**:后端返回支付渠道原始 `qr_content`,不返回二维码图片。
4. **二维码由前端渲染**:后端 `qr_content` 返回支付 HTTPS URL,不返回二维码图片。
5. **网络重试不能创建新请求 ID**:同一次提交重试复用原 `request_id`;用户主动发起下一笔充值时生成新的 `request_id`
6. **支付和钱包到账是两个阶段**`status=2` 表示第三方已收款、钱包入账处理中;只有 `status=3` 才表示钱包到账完成。
7. **页面轮询只调用本地状态接口**:前端不得直接调用微信、支付宝查单,也不要反复调用创建接口查询状态。
@@ -20,7 +20,7 @@
| 能力 | 后端实现 | 前端要做什么 |
| --- | --- | --- |
| 可用支付方式 | 根据当前有效支付配置返回真正可用的 `wechat``alipay` | 打开充值弹窗时先查询;只展示返回数组中的方式 |
| 代理在线自充 | 从登录账号取得当前店铺和主钱包,创建充值单、支付单并向第三方预下单 | 只提交金额、支付方式和请求 ID`qr_content` 渲染二维码 |
| 代理在线自充 | 从登录账号取得当前店铺和主钱包,创建充值单、支付单并按配置生成微信 v3 H5/v2 MWEB 或支付宝 WAP 支付 URL | 只提交金额、支付方式和请求 ID`qr_content` 渲染二维码 |
| 平台线下代充 | 保留既有目标店铺、凭证和企业微信审批流程 | 平台页面继续提交 `offline` 请求并只读展示审批状态 |
| 充值来源 | 根据受控创建方式返回稳定来源枚举 | 列表、详情和支付状态统一展示 `recharge_source_name` |
| 支付确认 | 微信/支付宝回调确认第三方收款事实 | 前端无需调用回调接口 |
@@ -124,7 +124,7 @@ Content-Type: application/json
"recharge_source": "agent_online",
"recharge_source_name": "代理在线自充",
"amount": 10000,
"qr_content": "weixin://wxpay/bizpayurl?pr=...",
"qr_content": "https://pay.example.com/...",
"status": 1,
"status_name": "待支付"
},
@@ -320,7 +320,7 @@ GET /api/admin/agent-recharges/{id}
## 十、联调和验收边界
- OpenAPI 已包含 `/payment-methods`、在线创建、列表来源筛选、详情来源字段和 `/payment-status`
- 后端已完成微信 Native、支付宝 PreCreate、支付确认、异步钱包入账和回调丢失恢复的代码装配。
- 后端已完成微信 v3 H5/v2 MWEB、支付宝 WAP 支付 URL、支付确认、异步钱包入账和回调丢失恢复的代码装配。
- 当前交付已通过 `go build ./...``go vet ./...` 和 OpenSpec 严格校验。
- 按需求方要求,本次未启动 API/Worker未连接 PostgreSQL/Redis未调用真实支付渠道未发送真实回调也未运行自动化测试。
- 前端联调环境需具备完整支付配置;至少确认微信和支付宝创建响应分别返回非空 `qr_content`