fix(v2): P4 终审波——歧义渠道错误留 processing(ErrRefundRejected 哨兵)/ 拒绝fixture签名 / 错误映射测试 / GetRefund 日志

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
This commit is contained in:
wangjia
2026-07-10 17:58:42 +08:00
parent 346004adf3
commit e26f995d7f
8 changed files with 277 additions and 6 deletions
+8
View File
@@ -98,6 +98,14 @@ type QueryRequest struct {
var (
ErrUnknownMethod = errors.New("provider: unknown method")
ErrNotSupported = errors.New("provider: capability not supported")
// ErrRefundRejected — 渠道对退款请求的一个"确定性"拒绝(如金额超出可退余额、
// 交易已完结等业务规则拒绝),而非超时/网络错误/5xx 这类结果不确定的失败。
// RefundingProvider.Refund 的实现须在能确认渠道明确拒绝时,让返回的 error 满足
// errors.Is(err, ErrRefundRejected)(errors.Join 或 %w 包裹均可);网关据此区分
// "钱确定没退成可以标 failed 释放额度" vs "退没退不确定,必须留 processing 占额度
// 交人工/对账收敛"(P6 RefundStuckAlertTask)。
ErrRefundRejected = errors.New("provider: refund rejected by channel")
)
// Provider — 每个支付渠道实现的统一接口(设计 §4.1 PaymentProvider)。