2016-07-25 14 views
0

Ich benutze Paypal für die Zahlungsabwicklung in einer meiner Anwendungen. Und als Teil davon verwende ich PayPal IPN. Während die Paypal-Zahlung abgeschlossen wird, sendet der Paypal die IPN-Nachricht an die IPN-URL (konfiguriert auf der Paypal-Site). Die IPN-Nachricht wird wie folgtPAYPAL IPN Postback gibt INVALID zurück

mc_gross = 1,00 & protection_eligibility = Gültiger & address_status = & bestätigt payer_id = GXZTE5K9VURMU & Steuern = 0,00 & address_street = Abteilung + Of + State + 2050 + Bamako + Platz + Washington% 2C + DC + 20521-2050 & payment_date = 01% 3A18% 3A47 + Juli + 23% 2C + 2016 + PDT & payment_status = Abgeschlossen & charset = windows-1252 & address_zip = 20521 & first_name = Test & mc_fee = 0,38 & address_country_code = US & Adresse_Name = Tes t + Test & notify_version = 3,8 & benutzerdefinierte = 3 & payer_status = ungeprüft & Geschäft = test.test15% 40gmail.com & ADDRESS_COUNTRY = Vereinigte Staaten + & ADDRESS_CITY = Washington & Menge = 1 & verify_sign = ABiBx6LFP1A2IuUu8wF.arqoHdTJA5F1TwzPqOjEd01798Nh2NTTbdU0 & PAYER_EMAIL = testpayer% 40gmail.com & txn_id = 7AP55204BB503245S & payment_type = Instant & last_name = Test & address_state = DC & receiver_email = test.test15% 40gmail.com & payment_fee = & receiver_id = T3SDTD8X2SFZW & txn_type = web_accept & item_name = Spende + für + test.com & mc_currency = EUR & item_number = & residence_country = US & test_ipn = 1 & handling_amount = 0.00 & transaction_subject = & payment_gross = & Versand = 0,00 & ipn_track_id = 9f24d51b9d45c

So Beim Überprüfen der obigen Nachricht mit Paypal mit dem folgenden Code

<cfset requestData = getHTTPRequestData() /> <!--- getting IPN message ---> 

<cfhttp url="https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_notify-validate&#URLEncodedFormat(requestData.content)#" resolveurl="false"> 
    <cfhttpparam type="header" name="Host" value="www.sandbox.paypal.com"> 
</cfhttp> 

Ich bekomme UNGÜLTIG als Antwort für 90% der Zeit und VERIFIZIERT als Antwort für verbleibende 10% der Zeit. Nicht sicher, warum es UNGÜLTIG wird. Hoffe keine Fehler im Code, denn manchmal gibt es als Antwort VERIFIZIERT. Habe ich etwas vergessen ?

Auch Sie können sehen, dass in der IPN-Nachricht, dass der Payer_Status Unverified ist. Ist das der Grund für INVALID Antwort (nicht sicher darüber). Wenn dies der Fall ist, warum ist der Status des Zahlungssystems "Nicht bestätigt" und was ist zu verifizieren?

+0

Die Codierung des gesamten Parametersatzes ist nicht korrekt. Sie müssen den Namen und den Wert von jedem codieren, getrennt durch ein uncodiertes '=', und die Paare getrennt durch ein uncodiertes '&'. – EJP

+0

Ja, okay, wird mit diesem überprüfen, aber gleichzeitig, wie es für einige Zahlungen verifiziert wird? –

Antwort

1

Eigentlich sollten Sie die Anfrage überhaupt nicht verschlüsseln, da der Inhalt bereits URL-codiert ist (Sie wiederholen das IPN, um durch Echo der Anfrage verifiziert zu werden). Verwenden Sie zur Lösung Ihres Problems:

https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_notify-validate&#requestData.content#