it-swarm.com.de

Kann ich eine Variable an Paypal senden und sie mir nach Abschluss der Zahlung zurücksenden?

Ich habe die Express-Checkout-API verwendet, um die Konten von Personen auf meiner Website nach der Bezahlung in Premium-Konten umzuwandeln. Das einzige Problem dabei ist, dass der Benutzer erst dann auf die Website zurückgeschickt wird, wenn er auf die Schaltfläche zum Zurückkehren klickt und seine Berechtigung in diesem Fall aktualisiert. Etwa 40% der Nutzer scheinen das nicht zu tun ... also werden ihre Konten nach der Zahlung niemals gutgeschrieben. 

Obwohl Paypal bei der erfolgreichen Zahlung sofort ein Post-Back-Verfahren durchführt, konnte ich es niemals sofort veranlassen, das Konto des Benutzers sofort zu aktualisieren, da ich keine Informationen erhalten kann, die den Benutzer identifizieren, der die Zahlung gerade abgeschlossen hat . Ich könnte das nur tun, wenn Sie zur Site zurückgeschickt werden, die die Transaktions-ID sendet, die ich mit einem Post-Back-Vorgang angemeldet habe. Es sucht danach und erteilt die Erlaubnis, wenn es in der DB gefunden wurde.

Gibt es eine Möglichkeit, eine Variable an Paypal zu übermitteln, die dann an mich zurückgeschickt wird? So etwas wie & user_id = 123, was die Aktualisierung der Benutzererlaubnis sehr erleichtert. 

40
user15063

Ja, wenn Sie item_number senden, wird dies in der IPN-Benachrichtigung angegeben, wenn Sie Beiträge an Sie zurückschicken. Ich vermerke eine eindeutige ID in der Datenbank, wenn der Benutzer den Zahlungsvorgang startet, und gebe diese beim Senden an Paypal ein. Wenn das IPN eingeht, stimmt diese eindeutige ID mit dem Datensatz in der Datenbank überein und gibt mir alle Informationen, die ich brauche.

Bearbeiten Re Deinen Kommentar:

Ich gehe davon aus, dass es irgendwo auf der oben verlinkten Site ein Codebeispiel gibt. In meinem Fall verwende ich jedoch ein Formular, das ich POST to https://www.Paypal.com/cgi-bin/ webscr . Innerhalb dieses Formulars sind verschiedene verborgene Felder im IPN-Kriterium dokumentiert (cmd für den auszuführenden Befehl, business zur Angabe Ihrer Geschäfts-ID, item_name für eine Nizza-Beschreibung in der Paypal-Benutzeroberfläche, item_number für die oben erwähnte Artikelnummer usw. usw.) .). Wenn das IPN an Ihre IPN-Adresse zurücksendet, enthält es verschiedene Felder (z. B. payment_status - eine wichtige Bedeutung! & Mdash und den item_number, die Sie beim Posten eingegeben haben).

27
T.J. Crowder

Iten_number versteckte Variable funktionieren in meiner Anwendung nicht. Aber ich fand heraus, dass custom hidden field gut funktioniert. Fügen Sie dieses Feld einfach dem von Paypal generierten Formular hinzu: <input type="hidden" name="custom" value="YOUR VALUE FROM DB"/>. Anschließend können Sie diesen Wert lesen, um beispielsweise zu ermitteln, welches Produkt gekauft wurde. (Java-Code): String custom = request.getParameter("custom");

33
dsplatonov

Nur um diese alte Frage hinzuzufügen ...

Es gibt Optionsparameter, die üblicherweise für das Senden benutzerdefinierter Daten über Paypal verwendet werden.

Diese Options-Tags sind on0, on1 oder on2 für die benutzerdefinierten Feldnamen und os0, os1 und os2 für das benutzerdefinierte Feld Werte.

Ich würde on0 mit einem Wert von "UserID" und os0 die tatsächliche ID senden.

Diese Werte werden im IPN wie folgt dargestellt:

os0 wird als option_selection1 dargestellt.

os1 wird als option_selection2 dargestellt.

os2 wird als option_selection3 dargestellt.

on0 wird dargestellt als Optionsname1

on1 wird dargestellt als Optionsname2

on2 wird als Optionsname3 dargestellt.

Hier sind die Informationen zu den HTML-Parametern von Paypal

18
jumpdart

Gemäß HTML-Variablen für Paypal Payments Standard können Sie alle "Passthrough" -Variablen senden:

item_number Passthrough-Variable, über die Sie ein Produkt oder eine Dienstleistung verfolgen können gekauft oder den beitrag geleistet. Der von Ihnen angegebene Wert wird übergeben nach Abschluss der Zahlung an Sie zurück. Diese Variable ist erforderlich, wenn Sie möchten, dass Paypal den Bestand oder den Gewinn und Verlust des Artikels verfolgt der Button verkauft sich.

custom Passthrough-Variable für eigene Tracking-Zwecke, die Käufer nicht sehen können. Default - Es wird keine Variable an Sie zurückgegeben.

und 

Rechnung Passthrough-Variable, mit der Sie Ihre Rechnungsnummer für diesen Einkauf identifizieren können. Default - Es wird keine Variable an .__ übergeben. Sie.

Alle diese Passthrough-Variablen werden vom IPN in den Zahlungsantwortinformationen zurückgesendet.

Sie müssen lediglich Ihre HTML-Vorlage serverseitig rendern und die Felder wie in den HTML-Code zurückschreiben

<input type="hidden" name="item_number" value="{{ productID }}">
<input type="hidden" name="invoice_id" value="{{ invoiceID }}">
<input type="hidden" name="custom" value="{{ jsonInfo }}">

Technisch gesehen kann das Feld "custom" eine JSON-codierte Zeichenfolge sein, wenn Sie mehr Daten behandeln möchten

myItemObject = {
   "customerEmail" : "[email protected]
   "customerID: "AAFF324"
}
jsonInfo = json.dumps( myItemObject )
return render_template(tmpl_name, jsonInfo=jsonInfo, productID=productID, invoiceID=invoiceID)
7
loretoparisi

Endlich bekomme ich diese Antwort, die ich mit euch allen teilen möchte: 

geben Sie diesen Code in Ihr HTML-Formular ein (dies ist Paypal-Sandbox):

form action="https://www.sandbox.Paypal.com/cgi-bin/webscr?custom=YOUR_VAR" method="post"

Auf Ihrem PHP nach der Paypal-Umleitung zu Ihrem Seitenerfolg: Verwenden Sie die Variable cm GET:

$example = $_GET["cm"];
5
lowpoly builder

Ich hoffe diese URL löst dein Problem. Da löste es auch meine. Fügen Sie Ihrem Formular eine benutzerdefinierte Variable hinzu und rufen Sie diese auf Ihrer Erfolgszahlungsseite ab Beispiel: <input type='hidden' name='custom' value='<?php echo $email; ?>'/>

und dann abrufen als:

 $_POST['custom']
2
Nehal
<input type="hidden" name="on0" value="Ajay Gadhavana">
<input type="hidden" name="on1" value="my_phone_number">
<input type="hidden" name="on2" value="my_third_extra_field">

Antwort von Paypal wäre

[option_name1] => Ajay Gadhavana [option_name1] => my_phone_number [option_name1] => my_third_extra_field

0
Ajay Gadhavana