diff --git a/backend/cmd/server/VERSION b/backend/cmd/server/VERSION index 0e73dee820..a5eed0930c 100644 --- a/backend/cmd/server/VERSION +++ b/backend/cmd/server/VERSION @@ -1 +1 @@ -0.1.108.151 +0.1.108.152 diff --git a/backend/internal/payment/provider/easypay.go b/backend/internal/payment/provider/easypay.go index c54aba6aa9..40667ec094 100644 --- a/backend/internal/payment/provider/easypay.go +++ b/backend/internal/payment/provider/easypay.go @@ -176,10 +176,12 @@ func (e *EasyPay) VerifyNotification(_ context.Context, rawBody string, _ map[st if err != nil { return nil, fmt.Errorf("parse notify: %w", err) } - // url.ParseQuery already decodes values — no additional decode needed. + // ParseQuery decodes percent-encoding once, but some EasyPay providers + // send values that still need a second decode pass (e.g. Chinese characters + // in the "name" field). Apply decodeURLValue to normalise. params := make(map[string]string) for k := range values { - params[k] = values.Get(k) + params[k] = decodeURLValue(values.Get(k)) } sign := params["sign"] if sign == "" {