【发布时间】:2014-11-05 22:18:51
【问题描述】:
我正在使用 PayPal 自己的 .NET 库来验证 IPN,特别是 PayPalCoreSDK 1.5.0 中的 IPNMessage.cs 可通过 NuGet 获得(2014 年 9 月 9 日发布)。
这是我的使用方法:
[HttpPost]
public ActionResult Ipn()
{
try
{
byte[] bytes = Request.BinaryRead(Request.ContentLength);
IPNMessage message = new IPNMessage(bytes);
string description = string.Format("PayPal IPN {0} {1} {2}",
message.IpnValue("txn_id"),
message.IpnValue("payment_type"),
message.IpnValue("payment_status"));
Trace.TraceInformation(description + " Received");
if (message.Validate())
{
Trace.TraceInformation(description + " Valid");
// do work here
}
else
{
Trace.TraceError(description + " Invalid");
}
}
catch (Exception e)
{
Trace.TraceError("PayPal IPN Exception: " + e.Message);
}
return null;
}
我的日志告诉我(txnId 已更改):
Application: 2014-09-11T19:52:40 PID[11584] Information PayPal IPN ABC536DEFP96XYZ3U instant Completed Received
Application: 2014-09-11T19:52:40 PID[11584] Error PayPal IPN ABC536DEFP96XYZ3U instant Completed Invalid
IPN 本身充满了我所期待的所有键/值。当我登录 PayPal 并查看即时付款通知 (IPN) 历史记录部分时,我看到了具有匹配交易 ID 的 IPN,并且其状态为“已发送”。我刚从Validate() 回复false,所以PayPal 不能回复“已验证”。没有抛出异常,如何调试?
【问题讨论】:
标签: c# asp.net asp.net-mvc paypal paypal-ipn