From 8bf91c0915af3f491460ee40e1fae8c10e843328 Mon Sep 17 00:00:00 2001 From: erio Date: Fri, 10 Apr 2026 14:34:50 +0800 Subject: [PATCH] revert: remove double URL decode, provider-side encoding issue --- backend/internal/payment/provider/easypay.go | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/backend/internal/payment/provider/easypay.go b/backend/internal/payment/provider/easypay.go index 5d3c4b8bfb..c54aba6aa9 100644 --- a/backend/internal/payment/provider/easypay.go +++ b/backend/internal/payment/provider/easypay.go @@ -176,12 +176,10 @@ func (e *EasyPay) VerifyNotification(_ context.Context, rawBody string, _ map[st if err != nil { return nil, fmt.Errorf("parse notify: %w", err) } - // EasyPay callbacks may arrive with double-encoded values (e.g. via redirect - // chains), so url.ParseQuery decodes once, then decodeURLValue decodes again. - // If a value is NOT double-encoded, QueryUnescape returns it unchanged. + // url.ParseQuery already decodes values — no additional decode needed. params := make(map[string]string) for k := range values { - params[k] = decodeURLValue(values.Get(k)) + params[k] = values.Get(k) } sign := params["sign"] if sign == "" {