2017-10-29 9 views
0

Ich möchte PayPal verwenden, um eine Zahlung über meine Website zu akzeptieren. Ich schaue auf die Schaltfläche "Smart Payment". Wenn die Zahlung erfolgreich ist, muss ich etwas in meiner Website DB aktualisieren. Wie kann ich feststellen, ob die Zahlung erfolgreich war oder nicht? Ich kann die API-Dokumentation nicht sehen.Überprüfen Sie, ob die Zahlung erfolgreich war oder fehlgeschlagen ist.

Ich muss auch Benutzerkontext mit einer PHP-Session-ID beibehalten. Wie kann ich das an die Paypal-Site weitergeben und sicherstellen, dass es mit dem Erfolg/Fehlschlag-Indikator zurückgegeben wird?

Antwort

1

Verwenden Sie Paypal IPN, um Zahlungsbenachrichtigungen zu empfangen. Richten Sie einen Server-Endpunkt auf IPN-Anfragen zu reagieren und aktualisieren Sie Ihre DB etc ...

Um Zustand zu halten, benötigen Sie einen versteckten Eingang in Ihrem Smart Payment Button mit einem Namen custom und einen Wert Ihrer Wahl eingereicht umfassen (Session-ID).

Richten Sie einen IPN-Endpunkt ein, zB:/checkout/ipn, um Paypal-Benachrichtigungen zu erhalten. Erfassen Sie die Sitzungs-ID mit $ _POST ['custom'];

+0

Dank Scriptonomie. IPN könnte eine nützliche Option sein. Mir ist noch nicht klar, wie ich eine Kundennummer mit der Zahlung absende und dann die gleiche Kundennummer von IPN abhole. Ebenso bin ich mir nicht sicher, wie das versteckte Eingabefeld auf der Bezahlseite mit dem Zahlungsergebnis zurückgegeben würde. (Dieser Aspekt der PayPal-Dokumentation ist meiner Meinung nach nicht großartig). Ich könnte den einfachen PayPal Button Ansatz zugunsten der Braintree API aufgeben. Es gibt eine Nonce-Zahlung mit dem clientseitigen Javascript zurück, die ich dann vom PayPal-Server mit meinem serverseitigen Code validieren kann, sobald eine Zahlung erfolgreich ist. –

+0

In Bezug auf den Verlust der Benutzersitzung kann ich sehen, dass andere Benutzer damit auch Probleme haben. Da die PayPal-Schaltfläche zu einer komplett neuen URL führt, ist es leicht, den Sitzungskontext zu verlieren. Aus diesem Grund denke ich, dass eine Kombination aus clientseitigem js und serverseitigem Code (über Braintree API) am besten ist. Ansonsten müssen Sie auf Cookies wie in dieser Lösung https://stackoverflow.com/questions/31069675/paypal-payment-destroys-session-on-return?rq=1 zurückgreifen –

Verwandte Themen