All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 10m49s
2.5 KiB
2.5 KiB
Decisions
- 线上充值复用支付单和实际商户路由,成功消费者以支付单/钱包流水唯一约束入账。
- 线下申请保存不可变金额和付款证据快照;审批回调在主钱包锁事务中条件入账。
- 线上未知结果和线下审批未知均保持在途,复用既有查询/恢复,不把重试当作新入账。
配置与充值动作契约
允许方式与查询
GET /agent-self-recharge-payment-methods:代理、平台用户仅返回“全局允许方式 ∩ 当前启用商户池可用方式”的有序wechat/alipay列表;不得返回商户身份、凭证或全局允许范围。交集为空返回空列表。PUT /agent-self-recharge-payment-methods:仅超级管理员,保存wechat_only、alipay_only或wechat_and_alipay;记录操作者、前后值和时间。修改不更新任何已有充值/支付单的支付方式、商户 ID 或快照。
自身店铺充值
POST /agent-recharges的代理在线分支强制shop_id为空且认证店铺为已启用代理自身店铺;传入下级/其他店铺返回无权。线上请求amount、payment_method、request_id,其中方式必须在当前交集内;以request_id与调用者/店铺唯一复用既有支付创建结果,失败预下单不入账。- 在线创建在事务内选择实际商户、冻结支付/商户快照并创建充值记录;渠道成功消费者锁定支付、充值和主钱包,以支付 ID/钱包流水唯一约束一次入账。失败、关闭、退款或未知状态不加余额;未知结果由既有查单/回调恢复,禁止客户端重试直接增加余额。
线下转账
- 线下请求必须包含
amount(正分)、payer_name、transferred_at(带时区时间)、transfer_channel_or_bank、transaction_no、至少一个payment_voucher_key和可选备注;创建时冻结全部字段、状态为待企业微信审批,不增加主钱包。 - 企业微信通过消费者锁定申请、审批实例和主钱包,条件更新一次增加余额和钱包流水;驳回、撤回、关闭不入账。仅未成功申请可修改上述材料并创建新审批实例重提;未知审批保持在途。平台/超级管理员查询和处理一律先应用既有店铺数据范围,审计不记录凭证正文。
Migration Plan
新增线下充值申请、附件快照、审批关联及唯一约束的成对迁移;验证权限、回调重放、未知、驳回重提和 up/down/up。