2012-06-28 6 views
11

Ich habe versucht, durch den Dschungel zu gehen (wirklich, PayPal, warum nicht Sie es aus ...) für ein paar Tage jetzt, um die Lösung für mein ziemlich einfaches Problem zu finden.PayPal-Taste senden benutzerdefinierte Variable durch IPN

Ich habe eine Website mit Mitgliedschaftsabonnements. Der Kunde meldet sich mit seiner E-Mail-Adresse und seinem Passwort auf meiner Website an. Dann gehen sie zu PayPal, um ihr Abonnement zu bezahlen.

Mein Problem ist, wie gebe ich den Schlüssel - ihre E-Mail - durch die gesamte Transaktion, damit ich weiß, für wen die Zahlung ist?

Dies, weil es wahrscheinlich passieren wird, dass sie sich manchmal mit einer E-Mail anmelden und mit einer anderen bezahlen. Und wie man das alles mit einem (sicheren) verschlüsselten Knopf macht.

Was ich dachte, ist, dass ich die verschlüsselte Schaltfläche auf der PayPal "PayPal-Zahlung erstellen Schaltfläche" Seite machen könnte.

In Schritt 3 hinzufügen (x-ed reale URL out) vorgeschoben Variablen:

notify_url=http://xxxxxxxxxx.com/xxxxx.php 
test_ipn=1 

den Code Erhalten:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post"> 
<input type="hidden" name="cmd" value="_s-xclick"> 
<input type="hidden" name="hosted_button_id" value="N6UMVCMXSWMYG"> 
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"> 
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1"> 
</form> 

und den angegebenen Code in meine PHP-Seite einfügen, Fügen Sie jedoch ein verstecktes Feld mit dem Namen "custom" hinzu und geben Sie die E-Mail zur Hand und ändern Sie die Formularaktion, um zur Sandbox zu gelangen.

Art wie folgt aus:

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post"> 

<input type="hidden" name="custom" value="<?=$signUpEmail ?>"> 

<input type="hidden" name="cmd" value="_s-xclick"> 
<input type="hidden" name="hosted_button_id" value="N6UMVCMXSWMYG"> 
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"> 
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1"> 
</form> 

Diese benutzerdefinierten Variablen ich später meine IPN Seite abholen, damit ich weiß, wer der Mitgliedschaft ..

ist

Bin ich richtig gedacht? Oder soll ich den Knopf mit "handgeschriebenem" Code machen? Oder gibt es einen besseren Weg?

Antwort

3

Über Art und Weise funktioniert, obwohl ich einige Probleme mit dem PayPal Sandbox nicht die Annahme hatte „Regular PayPal“ hosted_button_id - etwas, das mit durch erneute Schaffung eines hosted_button_id in der Sandbox behandelt wurde.

<input type="hidden" name="hosted_button_id" value="RECREATENEWINPAYPALSANDBOX"> 
12

Es ist ein Feld, das Sie in dem Paypal-Formular verwenden können, um zu setzen, was Sie wollen. Der Name des Feldes ist "benutzerdefiniert". So können Sie etwas wie schreiben:

<input name="custom" value="blablabla" type="hidden"> 

Ich empfehle, den Wert von benutzerdefinierten Wert zu kodieren. Zum Beispiel könnte eine Art von base64_encode nützlich sein, um neugierige Menschen zu entmutigen. Allerdings gibt es auch eine gute Erklärung, was Sie mit Paypal im Handbuch tun können. Diese link und diese one sind ein Auszug.

Außerdem, wie in den Kommentaren vorgeschlagen, ist es nicht möglich, Session-Variable in Bezug auf Ihr Frontend in der Backoff-Kommunikation zwischen Ihrer Website und Paypal zu verwenden.