Paypal IPN Simulator restituisce sempre INVALID nonostante il postback sia corretto

Stiamo aggiornando il nostro IPN per l’utilizzo di TLS e inviamo costantemente INVALID postati durante l’utilizzo di IPN Simulator

Proprio quando la richiesta arriva al listener, viene registrata. Appena prima che i dati tornino su paypal, l’URL e i dati vengono registrati. Queste informazioni sono sotto.

Sembra che non ci sia nulla di sbagliato nei dati. Ho persino usato diffmerge per identificare che non ci sono differenze eccetto cmd = _notify-validate &

È solo che l’ IPN Simulator non viene mai restituito valido?


L’URL giusto prima della richiesta è:

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

I dati pubblicati sono

 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&[email protected]&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&[email protected]&[email protected]&[email protected]&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. 

I dati di Paypal sono

 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&[email protected]&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&[email protected]&[email protected]&[email protected]&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. 

Per riferimento, il codice è:

 // 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 

Risulta che il nuovo payment_date di IPN Simulator ha creato problemi, a causa del “+” nel fuso orario. Nessuna delle notifiche live sembra elencare il fuso orario come questo, quindi il codice precedente funzionava.

Questo thread ha salvato il giorno: https://github.com/paypal/ipn-code-samples/issues/51