Dies ist eine Folgefrage an: PHP: Einfacher Weg, um PayPal Checkout zu starten?
Mein Problem ist also, dass ich die Rückgabe-URL spezifiziere. Nachdem ich jedoch mit PayPal bezahlt habe, erhalte ich einen Bildschirm mit der Aufschrift:
Sie haben soeben Ihre Zahlung abgeschlossen. XXXX, Sie haben gerade Ihre Zahlung abgeschlossen. Ihre Transaktions-ID für diese Zahlung lautet: XXXXXXXXXXXXX.
Wir senden eine Bestätigungs-E-Mail an [email protected]. Diese Transaktion wird auf Ihrem Kontoauszug als PAYPAL angezeigt.
Go to PayPal account overview
Ich brauche es, um diesen Bildschirm nicht anzuzeigen und direkt zur Rückgabe-URL zu gehen. Ich habe:
- Setzen Sie die Variable "return"
- Setzen Sie die Variable "rm" auf: 2 (was laut Leitfaden = " der Browser des Käufers wird mithilfe der POST-Methode zur Rückgabe-URL umgeleitet, und alle Zahlungsvariablen sind enthalten ")
In der Tat ist hier meine ganze Form:
<form method="post" action="https://www.sandbox.paypal.com/cgi-bin/webscr">
<input type="hidden" value="_xclick" name="cmd">
<input type="hidden" value="[email protected]" name="business">
<!-- <input type="hidden" name="undefined_quantity" value="1" /> -->
<input type="hidden" value="Order at The Greek Merchant:<Br />Goldfish Flock BLG<br />" name="item_name">
<input type="hidden" value="NA" name="item_number">
<input type="hidden" value="22.16" name="amount">
<input type="hidden" value="5.17" name="shipping">
<input type="hidden" value="0" name="discount_amount">
<input type="hidden" value="0" name="no_shipping">
<input type="hidden" value="No comments" name="cn">
<input type="hidden" value="USD" name="currency_code">
<input type="hidden" value="http://XXX/XXX/XXX/paypal/return" name="return">
<input type="hidden" value="2" name="rm">
<input type="hidden" value="11255XXX" name="invoice">
<input type="hidden" value="US" name="lc">
<input type="hidden" value="PP-BuyNowBF" name="bn">
<input type="submit" value="Place Order!" name="finalizeOrder" id="finalizeOrder" class="submitButton">
</form>
Irgendeine Idee, wie ich es dazu bringen kann, automatisch zurückzukehren? Wie kann ich alternativ das Ergebnis der Zahlung auf meine Website zurückholen, damit ich die Datenbank aktualisieren kann? Was ist IPN?
Antworten:
Sie müssen die automatische Rückgabe in Ihrem PayPal-Konto aktivieren, andernfalls wird das
return
Feld ignoriert .Aus der Dokumentation (aktualisiert, um das neue Layout von Januar 2019 widerzuspiegeln):
IPN dient zur sofortigen Zahlungsbenachrichtigung. Sie erhalten zuverlässigere / nützlichere Informationen als die automatische Rückgabe.
Die Dokumentation für IPN finden Sie hier: https://www.x.com/sites/default/files/ipnguide.pdf
Online-Dokumentation für IPN: https://developer.paypal.com/docs/classic/ipn/gs_IPN/
Das allgemeine Verfahren besteht darin, dass Sie einen
notify_url
Parameter mit der Anforderung übergeben und eine Seite einrichten, die IPN-Benachrichtigungen verarbeitet und validiert. PayPal sendet Anforderungen an diese Seite, um Sie zu benachrichtigen, wenn Zahlungen / Rückerstattungen / etc. durchgehen. Diese IPN-Handler-Seite ist dann der richtige Ort, um die Datenbank zu aktualisieren und Bestellungen als bezahlt zu markieren.quelle
My Selling Tools
Schritt 4) Klicken SieWebsite Preferences
unterSelling Online
return
Feld ignoriert ." Jederreturn
URL-Parameter, den Sie an die Kasse übergeben, wird berücksichtigt und überschreibt jede Auto Pay-URL (oder deren Fehlen), die im PayPal-Kontoprofil des Verkäufers konfiguriert ist. Wenn dort jedoch die automatische Rückgabe nicht aktiviert ist, muss der Käufer manuell auf die URL klicken Ende der Kaufabwicklung, um zu dieser URL umgeleitet zu werden, anstatt automatisch umgeleitet zu werden.Musterformular mit PHP für Direktzahlungen.
Bitte gehen Sie die Felder notify_url, return, cancel_return durch
Beispielcode für die Verarbeitung von ipn (my_ipn.php), der von Paypal nach erfolgter Zahlung angefordert wird.
Weitere Informationen zum Erstellen eines IPN finden Sie unter diesem Link.
Das folgende Bild hilft Ihnen beim Verständnis des Paypal-Prozesses.
Weitere Informationen finden Sie unter den folgenden Links.
hoffe das hilft dir .. :)
quelle
Ein Weg, den ich gefunden habe:
Versuchen Sie, dieses Feld in Ihren generierten Formularcode einzufügen:
rm bedeutet Rückgabemethode ;
2 bedeutet (Post)
Nach dem Kauf und der Rückkehr des Benutzers zu Ihrer Website-URL erhält diese URL auch die POST-Parameter
ps Wenn Sie PHP verwenden, versuchen Sie, diese
var_dump($_POST);
in Ihre Rückgabe-URL (Skript) einzufügen , und tätigen Sie dann einen Testkauf. Wenn Sie zu Ihrer Site zurückkehren, sehen Sie, welche Variablen in Ihrer URL enthalten sind.quelle
Teilen Sie dies, da ich kürzlich auf ähnliche Probleme wie diesen Thread gestoßen bin
Mein Skript hat lange Zeit gut funktioniert (Basiszahlungsformular) und die POST-Variablen auf meiner success.php-Seite und die IPN-Daten auch als POST-Variablen zurückgegeben. In letzter Zeit bemerkte ich jedoch, dass die Rückgabeseite (success.php) keine POST-Variablen mehr erhielt. Ich habe in Sandbox getestet und lebe und ich bin mir ziemlich sicher, dass PayPal etwas geändert hat!
Die notify_url empfängt weiterhin die richtigen IPN-Daten, mit denen ich die Datenbank aktualisieren kann, aber ich konnte auf meiner Rückgabe-URL-Seite (success.php) keine Erfolgsmeldung anzeigen.
Obwohl ich viele Kombinationen ausprobiert habe, um Optionen in den Zahlungseinstellungen und im IPN der PayPal-Website ein- und auszuschalten, musste ich einige Änderungen an meinem Skript vornehmen, um sicherzustellen, dass ich eine Nachricht weiterhin verarbeiten kann. Ich habe dies erreicht, indem ich PDT und Auto Return aktiviert habe, nachdem ich dieser hervorragenden Anleitung gefolgt bin .
Jetzt funktioniert alles gut, aber das einzige Problem ist, dass die Rückgabe-URL alle PDT-Variablen enthält, was hässlich ist!
Dies kann auch hilfreich sein
quelle
Ich denke, dass die Idee, die Auto Return-Werte wie oben von Kevin beschrieben einzustellen, etwas seltsam ist!
Angenommen, Sie haben eine Reihe von Websites, die dasselbe PayPal-Konto für die Abwicklung Ihrer Zahlungen verwenden, oder Sie haben mehrere Abschnitte auf einer Website, die unterschiedliche Einkaufsaufgaben ausführen und bei der Zahlung unterschiedliche Absenderadressen benötigen abgeschlossen. Wenn ich auf meiner Seite eine Schaltfläche einfüge, wie oben im Abschnitt "Beispielformular mit PHP für Direktzahlungen" beschrieben, sehen Sie, dass dort eine Zeile vorhanden ist:
Hier legen Sie den individuellen Rückgabewert fest. Warum muss es generell auch im Profilbereich eingestellt werden?!?!
Da Sie im Profilabschnitt nur einen Wert festlegen können, bedeutet dies (AFAIK), dass Sie die automatische Rückgabe nicht für eine Site mit mehreren Aktionen verwenden können.
Kommentare bitte ??
quelle
return
? Ich kann also verschiedene Rückgabeseiten haben, auf denen immer noch alle PDT-Daten empfangen werden.Suchen Sie auf der Checkout-Seite nach dem versteckten Formularelement 'cancel_return':
Setzen Sie den Wert des Formularelements cancel_return auf die URL, zu der Sie zurückkehren möchten:
quelle