gpt4 book ai didi

c# - 尽管回发正确,Paypal IPN 模拟器总是返回 INVALID

转载 作者:太空狗 更新时间:2023-10-30 01:15:38 26 4
gpt4 key购买 nike

我们正在升级我们的 IPN 以使用 TLS,并且在使用 IPN 模拟器时总是收到 INVALID 回传

当请求进入监听器时,它会被记录下来。在数据返回到 paypal 之前,URL 和数据会被记录下来。此信息如下。

数据似乎没有问题。我什至使用 diffmerge 来确定除了 cmd=_notify-validate& 之外没有任何区别

仅仅是IPN Simulator吗?永远不会返回有效?


请求之前的 URL 是:

https://www.sandbox.paypal.com/cgi-bin/webscr

发布的数据是

cmd=_notify-validate&payment_type=instant&payment_date=Mon May 23 2016 17:41:16 GMT 1000 (E. Australia Standard Time)&payment_status=Completed&address_status=confirmed&payer_status=verified&first_name=John&last_name=Smith&payer_email=jimmyred99@gmail.com&payer_id=TESTBUYERID01&address_name=John Smith&address_country=United States&address_country_code=US&address_zip=95131&address_state=CA&address_city=San Jose&address_street=123 any street&business=seller@paypalsandbox.com&receiver_email=paypaltest@akturatech.com&receiver_id=paypaltest@akturatech.com&residence_country=US&item_name=something&item_number=CHIMPREWRITER-LIFE&quantity=1&shipping=3.04&tax=2.02&mc_currency=USD&mc_fee=0.44&mc_gross=139&mc_gross_1=139&txn_type=web_accept&txn_id=928133899&notify_version=2.1&custom=xyz123&invoice=abc1234&test_ipn=1&verify_sign=AFcWxV21C7fd0v3bYYYRCpSSRl31AU-9VToMcj-IcSKMfmb8nz2kgIe.

来自Paypal的数据是

payment_type=instant&payment_date=Mon May 23 2016 17:41:16 GMT 1000 (E. Australia Standard Time)&payment_status=Completed&address_status=confirmed&payer_status=verified&first_name=John&last_name=Smith&payer_email=jimmyred99@gmail.com&payer_id=TESTBUYERID01&address_name=John Smith&address_country=United States&address_country_code=US&address_zip=95131&address_state=CA&address_city=San Jose&address_street=123 any street&business=seller@paypalsandbox.com&receiver_email=paypaltest@akturatech.com&receiver_id=paypaltest@akturatech.com&residence_country=US&item_name=something&item_number=CHIMPREWRITER-LIFE&quantity=1&shipping=3.04&tax=2.02&mc_currency=USD&mc_fee=0.44&mc_gross=139&mc_gross_1=139&txn_type=web_accept&txn_id=928133899&notify_version=2.1&custom=xyz123&invoice=abc1234&test_ipn=1&verify_sign=AFcWxV21C7fd0v3bYYYRCpSSRl31AU-9VToMcj-IcSKMfmb8nz2kgIe.

供引用,代码是:

// This was legacy code I was trying in case there were formatting problems. The code "cmd=_notify-validate&" + _request.Form; does some URL encoding which I thought might be causing problems. Either way, we still get INVALID
string s = "cmd=_notify-validate";
foreach (string paramName in _request.Form)
{
string paramValue = LicServiceTools.Encode(_request.Form[paramName]);
//s = s + string.Format("&{0}={1}", paramName, paramValue);
s = s + string.Format("&{0}={1}", paramName, _request.Form[paramName]);
}

string address = "https://www.paypal.com/cgi-bin/webscr";
if (this.useSandBox)
{
address = "https://www.sandbox.paypal.com/cgi-bin/webscr";
}
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(address);
req.ProtocolVersion = HttpVersion.Version11;
//Set values for the request back
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";

// ALSO DOESNT WORK
//string strRequest = "cmd=_notify-validate&" + _request.Form;
//req.ContentLength = strRequest.Length;

errorLogger.Info(s);
errorLogger.Info(address);

//Send the request to PayPal and get the response
StreamWriter streamOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII);
streamOut.Write(s);
streamOut.Close();
StreamReader streamIn = new StreamReader(req.GetResponse().GetResponseStream());
string strResponse = streamIn.ReadToEnd();
streamIn.Close();

// at this point, strResponse = INVALID

最佳答案

原来新的 IPN 模拟器 payment_date 搞砸了,因为时区中的“+”。实时通知似乎都没有像这样列出时区,所以之前的代码可以正常工作。

这个线程挽救了这一天:https://github.com/paypal/ipn-code-samples/issues/51

关于c# - 尽管回发正确,Paypal IPN 模拟器总是返回 INVALID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37386616/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com