让代理充值复用现有网页支付能力
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

@@ -65,7 +65,7 @@
| D-16 | 数据同步保留轮询兜底关键业务事件按立即、3 分钟、5 分钟触发;超频不建立退避状态 | 数据同步 |
| D-17 | 企微发起身份按账号类型分流:平台/超级管理员必须扫码绑定并使用本人 `userid`,代理使用部署配置中的固定企微账号代提交;真实业务提交人始终独立进入审批表单、通知和审计 | 企微审批 |
| D-18 | 全系统审计本次一次性切换到 Audit Event + Integration Log多视角 API 和前端同时发布 | 全局 |
| D-19 | 代理在线充值最低 100 元,支持微信 Native 和支付宝 PreCreate,支付成功直接入主钱包且不审批 | 21、新增充值 |
| D-19 | 代理在线充值最低 100 元,按配置使用微信 v3 H5/v2 MWEB 和支付宝 WAP 支付 URL,支付成功直接入主钱包且不审批 | 21、新增充值 |
| D-20 | 资产层只展示一个预计最终到期时间;当前套餐和全部排队主套餐共同参与推算,临期也使用同一结果 | 06、11、22 |
| D-21 | 换货完成时新资产自动继承旧资产店铺;旧资产保留原店铺用于历史查询和权限追踪 | 禅道 #98 |
| D-22 | 店铺可选绑定一个平台业务员该字段只表达业务归属不恢复需求16的分销和佣金关系 | 禅道 #96 |
@@ -1179,7 +1179,7 @@ CHECK (
|------|------|
| 修改角色默认额度 | 只更新角色模板和审计,不扫描、不修改任何已有店铺钱包 |
| 创建店铺 | 在创建事务中读取默认角色模板并初始化代理主钱包实际额度 |
| 修改额度 | 拒绝代理账号;校验平台独立权限、加载主钱包、校验新可用金额、按 `version` 条件更新、写信用变更审计 |
| 修改额度 | 拒绝代理账号;校验平台独立权限、加载主钱包、校验新可用金额、按服务端读取的 `version` 条件更新、写信用变更审计 |
| 钱包扣款 | 使用有效额度计算可用金额,同事务更新余额、版本和资金流水 |
| 查询/导出 | Query 返回 `credit_enabled``credit_limit``available_balance``is_in_debt``debt_amount` |
@@ -1190,7 +1190,7 @@ PUT /api/admin/shops/{id}/credit-limit 独立调整信用额度
GET /api/admin/shops/fund-summary 返回信用和可用金额
```
角色页面显示“新建代理默认信用额度”,并明确提示“修改后不会影响已有店铺”。店铺资金页面独立显示和修改实际信用额度。前端只展示接口返回的可用金额,不自行重新计算;额度调整弹框显示修改前后金额预览,并发冲突时刷新最新钱包版本
角色页面显示“新建代理默认信用额度”,并明确提示“修改后不会影响已有店铺”。店铺资金页面独立显示和修改实际信用额度。前端只展示接口返回的可用金额,不自行重新计算;额度调整弹框显示修改前后金额预览,乐观锁版本由后端读取和校验
资金概况中的 `is_in_debt` 表示 `balance < 0``debt_amount = max(-balance, 0)`;冻结金额只影响现金可用金额和总可用金额,不直接记为欠款。额度调整只改变资金边界,不伪造一条金额为零的钱包交易流水;变更前后值进入全局 Audit Event。
@@ -1344,7 +1344,7 @@ sequenceDiagram
#### 代理在线扫码充值
- 代理只能为当前店铺主钱包充值,最低 `10000`100 元)。
- 支持微信 Native 和支付宝 `alipay.trade.precreate`,创建本地充值单和 `tb_payment(order_type=agent_recharge)`再预下单
- 按当前配置使用微信 v3 H5 或 v2 MWEB并复用支付宝 `alipay.trade.wap.pay` 支付 URL,创建本地充值单和 `tb_payment(order_type=agent_recharge)`生成链接
- 每次主动创建都生成新的充值单和支付单;`request_id` 只防同一次 HTTP 提交重试,不按金额或已有待支付单复用。后端原样返回第三方 `qr_content`,前端使用二维码组件渲染,不生成后端图片文件。
- 不返回 `expires_at`,也不展示本地推算的精确倒计时;支付是否成功、关闭或失效以第三方回调和受控查单结果为准。前端每 3 秒轮询的轻量接口只读取本地状态,不直接触发第三方查单。
- 微信/支付宝回调按支付单类型分发,校验渠道、支付配置、金额、第三方交易号和业务单关联。
@@ -1426,7 +1426,7 @@ POST /api/admin/agent-recharges/{id}/reject
- 统计待审批退款、平台员工线下充值和历史终态记录数量。
- 轮换用户 demo 中泄露的企微 Secret、Token 和 EncodingAESKey配置可信域名、应用可见范围和回调地址。
- 发布并验证退款、线下充值企微模板控件映射,验证代理固定代提交成员可用,并要求会发起审批的平台/超级管理员完成扫码绑定。
- 验证微信 Native、支付宝 PreCreate 配置和回调地址,确认代理充值支付渠道可用。
- 验证微信 v3 H5/v2 MWEB、支付宝 WAP 配置和回调地址,确认代理充值支付渠道可用且支付宝无需开通当面付
- 盘点旧账号、资产、轮询日志的写入口和查询入口,确认统一审计切换清单。
- 停机窗口内由业务使用超级管理员配置普通角色导出字段并抽样验证;不运行默认授权迁移,永久禁止导出的字段不进入代码目录。