当ASP.NET WebForms PayPal IPN(即即时支付通知)被误标记为成功时,可以尝试以下解决方法:
protected void Page_Load(object sender, EventArgs e)
{
string logFile = Server.MapPath("~/App_Data/ipnlog.txt");
using (StreamWriter writer = new StreamWriter(logFile, true))
{
writer.WriteLine("IPN received at: " + DateTime.Now);
foreach (string key in Request.Form.AllKeys)
{
writer.WriteLine(key + ": " + Request.Form[key]);
}
writer.WriteLine("---------------------------------------");
}
}
请确保在Web.config文件中启用了文件写入权限,以便可以写入日志文件。
using PayPal.Api;
using PayPal.Ipn;
protected void Application_Start(object sender, EventArgs e)
{
APIContext apiContext = Configuration.GetAPIContext();
// 验证IPN数据
IPNMessage.Validate(apiContext, Request.Params, Request.Headers);
}
这将验证收到的IPN消息的完整性,并防止任何数据篡改。
protected void Page_Load(object sender, EventArgs e)
{
string paymentStatus = Request.Form["payment_status"];
if (paymentStatus == "Completed")
{
// 付款成功
}
else
{
// 付款未成功
}
}
根据付款状态,您可以采取适当的操作。
请注意,这只是一些可能的解决方法之一,具体取决于您的应用程序和需求。