在發送數據以驗證數據是否來自PayPal時,我不斷收到PayPal的INVALID
響應。我讀過很多關於SO的其他文章,目前爲止沒有任何幫助。這是我可以驗證的:IPN通知驗證無效
- params的順序是相同的。
- 這個數據與我在請求前加上
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?
您可能想要通過https://www.paypal-techsupport.com/將問題報告給PayPal。根據我的經驗,IPN模擬器的確會引起問題,因爲IPN數據中的編碼不兼容。 – vandershraaf