diff --git a/backend/internal/handler/payment_webhook_handler.go b/backend/internal/handler/payment_webhook_handler.go index 6d8540d80b..b923a2a9a2 100644 --- a/backend/internal/handler/payment_webhook_handler.go +++ b/backend/internal/handler/payment_webhook_handler.go @@ -95,8 +95,7 @@ func (h *PaymentWebhookHandler) handleNotify(c *gin.Context, providerKey string) if len(truncatedBody) > webhookLogTruncateLen { truncatedBody = truncatedBody[:webhookLogTruncateLen] + "...(truncated)" } - slog.Error("[Payment Webhook] verify failed", "provider", providerKey, "error", err, "method", c.Request.Method, "bodyLen", len(rawBody)) - slog.Debug("[Payment Webhook] verify failed body", "provider", providerKey, "rawBody", truncatedBody) + slog.Error("[Payment Webhook] verify failed", "provider", providerKey, "error", err, "method", c.Request.Method, "bodyLen", len(rawBody), "rawBody", truncatedBody) c.String(http.StatusBadRequest, "verify failed") return } diff --git a/backend/internal/payment/provider/easypay.go b/backend/internal/payment/provider/easypay.go index c54aba6aa9..a203aaf615 100644 --- a/backend/internal/payment/provider/easypay.go +++ b/backend/internal/payment/provider/easypay.go @@ -9,6 +9,7 @@ import ( "encoding/json" "fmt" "io" + "log/slog" "net/http" "net/url" "sort" @@ -186,6 +187,8 @@ func (e *EasyPay) VerifyNotification(_ context.Context, rawBody string, _ map[st return nil, fmt.Errorf("missing sign") } if !easyPayVerifySign(params, e.config["pkey"], sign) { + expected := easyPaySign(params, e.config["pkey"]) + slog.Error("[EasyPay] sign mismatch", "expected", expected, "got", sign, "pkeyLen", len(e.config["pkey"]), "instanceID", e.instanceID, "paramCount", len(params)) return nil, fmt.Errorf("invalid signature") } status := payment.ProviderStatusFailed