2017-02-08 1 views
0

Nach vielen Lesungen integrierte ich am Ende PayPal mit der IPN-Methode. Ich fahre 3 prüft in listener.php die da sind:PayPal IPN: wie mit ungültiger Benachrichtigung zu antworten

  1. prüfen, ob die txn_id nicht bereits in der db (jemand einen alten bestätigten Transaktions-ID verwenden, um eine bestätigte Status zurückzukehren, soweit sie in der PayPal-Dokumentation geschrieben)
  2. überprüfen, ob receiver_email Streichhölzer mit dem Verkäufer email
  3. überprüfen, ob custom Streichhölzer mit der Auftrags-ID
  4. überprüfen, ob mc_gross Streichhölzer mit dem Preis

Wenn alle Prüfungen richtig ausgeführt wurden, füge ich alle Daten in die db ein; Was ich jetzt vermisse, ist, was ich tun soll, wenn einer dieser Parameter nicht übereinstimmt. Kann ich eine Code-Nachricht an PayPal zurücksenden, die "hey PayPal, etwas schief gelaufen" bedeutet: Löschen Sie die Transaktion, zeigen Sie eine Fehlermeldung an und lassen Sie den Käufer es eventuell erneut versuchen "? Wenn nicht, wie würden Sie mit dieser Situation umgehen?

Antwort

0

Nein, du kannst nicht. PayPal hält den Benutzer nicht während des IPN-Prozesses warten, so dass der Benutzer nicht mehr da ist, um Fehler oder Wiederholungen zu lesen.

Die entsprechende Aktion ist wahrscheinlich eine Rückerstattung. Ich würde dem Filialleiter eine Benachrichtigung senden, dass sie eine ungerechtfertigte Zahlung erhalten haben, und es einem Menschen überlassen, sich mit dem Problem zu befassen. Es ist ein Randfall, der mehr als selten ist, wenn alles gut konfiguriert ist.

Sie haben nicht erwähnt, PayPal anzurufen, um nach der Authentizität des Anrufs zu suchen. Du solltest das zuerst tun.

+0

Meinst du das Öffnen einer Socket-Verbindung zu PayPal wie '$ fp = fsockopen ('ssl: //www.sandbox.paypal.com', 443, $ errno, $ errstr, 30);'? Meine Frage kam von der Ziehung in der [PayPal Dokumentation] (https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/formbasics/) am Ende der Seite; Punkt 3 sagt: 'Ihr Server muss dann die Benachrichtigung validieren, um sicherzustellen, dass es legitim ist. Was dieser Satz bedeutet, wenn nicht "Ihr Server muss die Benachrichtigung aka die Transaktion validieren"? Vielen Dank! – Brigo

+1

Das bedeutet zuerst, dass Sie einen HTTP-Anruf an PayPal (Server zu Server) tätigen müssen, der alle Daten enthält, die Sie gerade erhalten haben. PayPal antwortet entweder "GEPRÜFT" oder "UNGÜLTIG" (oder etwas Ähnliches). Die Idee ist, dass Sie nach PayPal fragen: "Ich habe diese Zahlungsmitteilung erhalten, haben Sie es geschickt oder ist es eine Fälschung?" – Rad80