From 764ed558a1fb1af7f44db128b283e33906be0df9 Mon Sep 17 00:00:00 2001 From: wangjia <809946525@qq.com> Date: Fri, 10 Jul 2026 11:51:33 +0800 Subject: [PATCH] =?UTF-8?q?chore(v2):=20=E7=BB=88=E5=AE=A1=E6=94=B6?= =?UTF-8?q?=E5=B0=BE=E2=80=94=E2=80=94settle-sync=20=E9=9D=9E=E5=B8=B8?= =?UTF-8?q?=E6=80=81=E7=BB=93=E6=9E=9C=E8=90=BD=E6=97=A5=E5=BF=97=20+=20Re?= =?UTF-8?q?try=20=E8=A1=A5=20body=20=E4=B8=8A=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u --- internal/gateway/settle.go | 9 ++++++++- internal/handler/gateway.go | 6 +++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/internal/gateway/settle.go b/internal/gateway/settle.go index e85d5ad..d19476c 100644 --- a/internal/gateway/settle.go +++ b/internal/gateway/settle.go @@ -3,6 +3,7 @@ package gateway import ( "context" "errors" + "log" "time" "github.com/wangjia/pay/internal/model" @@ -131,8 +132,14 @@ func (g *Gateway) SyncPendingAttempts(ctx context.Context, limit int) (int, erro if err != nil || ev == nil { continue } - if res, _ := g.Settle(ctx, ev); res == SettleProcessed { + res, serr := g.Settle(ctx, ev) + switch res { + case SettleProcessed: settled++ + case SettleIgnored, SettleDuplicate: + // 常态:未付/已处理,不刷日志 + default: // not_found / amount_mismatch / failed —— 对账兜底的盲区,必须可见 + log.Printf("[settle-sync] attempt=%s channel=%s result=%s err=%v", att.ProviderRef, att.Channel, res, serr) } } return settled, nil diff --git a/internal/handler/gateway.go b/internal/handler/gateway.go index 6f5fd7e..2a8f09b 100644 --- a/internal/handler/gateway.go +++ b/internal/handler/gateway.go @@ -78,8 +78,12 @@ type retryRequest struct { // Retry POST /api/v2/orders/:order_no/retry func (h *GatewayHandler) Retry(c *gin.Context) { + c.Request.Body = http.MaxBytesReader(c.Writer, c.Request.Body, maxOrderBodyBytes) var req retryRequest - _ = c.ShouldBindJSON(&req) + if err := c.ShouldBindJSON(&req); err != nil { + util.RespondError(c, http.StatusBadRequest, "bad_request", "参数格式错误") + return + } if req.Method == "" { util.RespondError(c, http.StatusBadRequest, "bad_request", "缺少 method") return