某些用户名的 PayPal 验证失败

PayPal validation fails for some usernames

我通过使用以下方法将 ASP 网页发回 PayPal 来验证在 ASP 网页中收到的 PayPal 请求:

    public bool ValidateRequest(HttpRequest request)
    {
        var sb = new StringBuilder();
        sb.Append("cmd=_notify-validate");
        foreach (string paramName in request.Form)
        {
            var paramValue = UrlEncode(request.Form[paramName]);
            sb.AppendFormat("&{0}={1}", paramName, paramValue);
        }
        var parameters = sb.ToString();
        var data = Encoding.UTF8.GetBytes(parameters);

        var webClient = new WebClient();
        webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
        var uploadData = webClient.UploadData(validatingUrl, "POST", data);
        var message = Encoding.UTF8.GetString(uploadData);

        return message == "VERIFIED";
    }

这段代码在过去两年中一直运行良好,直到我收到了一位名叫 Ramón Martín 的用户的付款。这是从 IPN 记录他的名字的方式:

last_name=Mart�n&first_name=Ram�n

上述方法适用于中文、日文和俄文名称。有什么想法可以解决当前的问题吗?

您是否尝试过将编码格式更改为windows-1252?在您的代码中,您已将其设置为 UTF-8,并且我可以看到 Ó 和 í 的名称。尝试使用 windows-1252 编码,看看它是否能给你另一种解脱。

问题是 PayPal 按钮的默认编码是 windows-1252。 必须改成UTF-8.

您可以从 PaPal -> 我的资料 -> 我的销售工具 -> PayPal 按钮语言编码 -> 更多选项 -> UTF-8