IPN 通知验证无效
IPN Notification Verfication INVALID
我在发回数据以验证数据来自他们时,不断收到来自 PayPal 的 INVALID
响应。到目前为止,我已经阅读了很多关于 SO 的其他 posts,但没有任何帮助。这是我可以验证的:
- 参数顺序相同
- 除了我在请求前添加
cmd=_notify-validate&
之外,数据是相同的。
这是一些 post 数据的快速 hacky 代码:
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()
数据验证了这是正确的。
我已经尝试 post 使用其他几种方法,但得到了相同的 INVALID
结果。
我已阅读有关将 paypal 首选项中的语言编码更改为 UTF-8
的信息,但我使用的是 IPN 模拟器,因此不确定这将如何应用。
我好像在兜圈子,不知如何是好。
编辑
我刚刚通过进入 IPN 历史记录并重新发送一个,从我的沙盒贝宝帐户中尝试了这一点,它工作正常。我收到已验证状态。
这意味着只是 IPN 模拟器无法正常工作,因此我认为这与编码有关。是否可以查看/更改模拟器的编码为 UTF-8?
我遇到了同样的问题。看来是模拟器出错了。
尝试清除模拟器中的所有日期字段,使它们为空。似乎是表单中的某些特殊字符导致了问题。
这只是 IPN 模拟器中的一个错误,真实的 IPN 消息不会受到同样的影响。
我在发回数据以验证数据来自他们时,不断收到来自 PayPal 的 INVALID
响应。到目前为止,我已经阅读了很多关于 SO 的其他 posts,但没有任何帮助。这是我可以验证的:
- 参数顺序相同
- 除了我在请求前添加
cmd=_notify-validate&
之外,数据是相同的。
这是一些 post 数据的快速 hacky 代码:
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()
数据验证了这是正确的。
我已经尝试 post 使用其他几种方法,但得到了相同的 INVALID
结果。
我已阅读有关将 paypal 首选项中的语言编码更改为 UTF-8
的信息,但我使用的是 IPN 模拟器,因此不确定这将如何应用。
我好像在兜圈子,不知如何是好。
编辑 我刚刚通过进入 IPN 历史记录并重新发送一个,从我的沙盒贝宝帐户中尝试了这一点,它工作正常。我收到已验证状态。
这意味着只是 IPN 模拟器无法正常工作,因此我认为这与编码有关。是否可以查看/更改模拟器的编码为 UTF-8?
我遇到了同样的问题。看来是模拟器出错了。
尝试清除模拟器中的所有日期字段,使它们为空。似乎是表单中的某些特殊字符导致了问题。
这只是 IPN 模拟器中的一个错误,真实的 IPN 消息不会受到同样的影响。