某些用户名的PayPal验证失败

时间:2015-11-30 20:55:06

标签: c# .net utf-8 paypal-ipn asp.net-webpages

我通过使用以下方法将其回传到PayPal来验证在ASP WebPage中收到的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ónMartín的用户的付款之前,此代码在过去两年中运行良好。这是他的名字从IPN记录的方式:

  

姓氏=马丁&安培;如first_name = RAMN

上述方法适用于中文,日文和俄文名称。任何想法如何解决当前案件?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

问题是PayPal按钮的默认编码是windows-1252。 必须将其更改为UTF-8。

你可以从PaPal那里做到 - >我的个人资料 - >我的销售工具 - > PayPal按钮语言编码 - >更多选项 - > UTF-8

enter image description here

enter image description here

enter image description here