2016-07-11 79 views
0

在發送數據以驗證數據是否來自PayPal時,我不斷收到PayPal的INVALID響應。我讀過很多關於SO的其他文章,目前爲止沒有任何幫助。這是我可以驗證的:IPN通知驗證無效

  1. params的順序是相同的。
  2. 這個數據與我在請求前加上cmd=_notify-validate&的例外是一樣的。

這是一些快速哈克代碼發佈數據了:

using (WebClient client = new WebClient()) 
{ 
    var nvc = new NameValueCollection { {"cmd", "_notify-validate"} }; 
    foreach (var f in formCollectionData.AllKeys) 
     nvc.Add(f, formCollectionData[f]); 

    try 
    { 
     ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; 
     client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded"; 
     var response = client.UploadValues(_urls[payPalResponse.test_ipn], "POST", nvc); 
     var result = System.Text.Encoding.UTF8.GetString(response); //returns "INVALID" 
    } 
    catch (Exception e) 
    { 
     ; 
    } 
} 

formCollectionData是通過輸送到我的行動(使用MVC)的數據。我通過查看Request.Form.ToString()數據驗證了這一點。

我已經嘗試使用其他一些方法發佈,但得到相同的INVALID結果。

我已閱讀關於將PayPal偏好設置中的語言編碼更改爲UTF-8,但我正在使用IPN模擬器,因此不確定這將如何應用。

我似乎在圈圈,不知道該怎麼做。

編輯 我剛剛通過進入IPN歷史和重新發送一個和它工作正常試過這個從我的沙箱的PayPal帳戶。我得到了驗證的狀態。

這意味着它只是IPN模擬器不能正常工作,所以我認爲這是與編碼有關。是否可以看到/更改模擬器的編碼爲UTF-8?

+1

您可能想要通過https://www.paypal-techsupport.com/將問題報告給PayPal。根據我的經驗,IPN模擬器的確會引起問題,因爲IPN數據中的編碼不兼容。 – vandershraaf

回答

1

我遇到了同樣的問題。它似乎是模擬器的錯誤。

嘗試清除模擬器中的所有日期字段,以使它們爲空。這似乎是表格中的一些特殊字符引起了問題。

這只是IPN模擬器中的一個錯誤,真實的IPN消息不會以相同的方式受到影響。

+0

我剛剛在過去一週中對此進行了測試,因此對於延遲標記作爲答案表示歉意。它的確解決了這個問題。 – webnoob