2012-07-24 4 views
11

So habe ich Paypal IPN in meiner Website implementiert und ich bin in der Mitte der Arbeitsprozess. Jetzt habe ich mehr als 1 benutzerdefinierte Variable in der pp Form verwenden möchten zur Zeit verwende ich diesen einen nurPaypal IPN Prozess mehr als eine benutzerdefinierte Variable

<input type="hidden" name="custom" value="<?php echo $user_id; ?>"> 

Ich weiß also, die Variable mit dem Namen ‚custom‘ ist erlaubt. Ich möchte wissen, ob Ich kann mehr Variablen übergeben, damit ich die Zahlungen anhand ihrer Kriterien filtern kann. Also, wenn zum Beispiel der Versand mehr als $ 0,00 ich eine Variable „shipping_cost“ wie folgt festgelegt:

<input type="hidden" name="shipping_cost" value="<?php echo $cost; ?>"> 

oder für andere Zwecke. Ist das erlaubt? Oder paypal hat eine bereits definierte Liste von erlaubten Variablen, die wir verwenden können? Ich möchte dieses Problem wirklich lösen, da es nicht immer einen Typ der Zahlung gibt, den wir verarbeiten können ... Danke Jungs.

Antwort

4

Da ich (und viele andere, die ich mir vorstelle) auch mit diesem Problem konfrontiert bin, dachte ich, ich würde einige Lösungen teilen, die mir begegneten.

This one ausgelöst in der PayPal-Community, schlägt die Verwendung der Option Variablen, die eine Schlüssel/Wert-Paar-Implementierung bieten, um bis zu 99 vars (für den Rekord habe ich nicht wirklich versucht, dies zu bieten scheinen).

Die am häufigsten akzeptierte Lösung (die ich auch favorisiere) ist, alle Ihre Daten zu einem DB-Datensatz hinzuzufügen, dann verwenden Sie die benutzerdefinierte var, um Ihre Datensatz-ID zu speichern, die später natürlich verwendet werden kann (zB über IPN) rufen Sie Ihre Daten ab.

3

PayPal legt fest, welche Felder Sie verwenden dürfen here. Alle anderen Felder werden ignoriert.

Es ist ein Versandfeld definiert, und PayPal verwendet den Wert dieses Feldes, um einen zusätzlichen Betrag für den Versand zu berechnen. Sie können diesen Wert auch aus den IPN- oder PDT-Daten beziehen.

Wenn Sie andere Werte übergeben müssen, können Sie eine Zeichenfolge in Form einer Abfragezeichenfolge (var1 = Wert1 & var2 = Wert2 ...) in das Feld 'Benutzerdefiniert' übernehmen. Beachten Sie, dass in diesem Feld maximal 256 Zeichen zulässig sind. Sie würden dies dann analysieren, wenn Sie die IPN- oder PDT-Antwort erhalten.

Wenn die Größe des benutzerdefinierten Felds zu einschränkend ist, können Sie versuchen, was ich in einem anderen answer here beschrieben habe.

+0

Wirklich enttäuschend. Ich musste mit anderen erlaubten Variablen von paypal IP spielen, um meine Absicht zu erreichen. Ich habe den Produktnamen und die Beschreibung verwendet. Vielen Dank für Ihre Antwort. – inrob

+1

Sind Sie sicher, dass Sie nicht einfach "custom2" verwenden können? Ich gehe durch irgendeinen Legacy-Code und sah ein Formular mit "custom" und "custom2" als Felder, die an Paypal gesendet werden. – CMCDragonkai

8

diese Art und Weise können Sie weitere Parameter

<input type="hidden" name="custom" value="variable1=234&var2=summa&etc=xyz"/> 

verwenden Sie die oben eine auf Ihrem paypal Form übergeben.

und durch den folgenden Code verarbeiten.

parse_str($_POST['custom'],$_MYVAR); 

echo $_MYVAR['variable1']; 
echo $_MYVAR['var2']; 
echo $_MYVAR['etc']; 

ich hoffe, dass diese Ihnen helfen.

+0

Schöne Methode, danke. – inrob

+0

Sie können Ihre benutzerdefinierten Daten auch als JSON senden (konvertiert aus dem PHP-Datentyp mit 'json_encode ($ data)') und dann mithilfe von 'json_decode ($ _ POST ['custom'])' abrufen. –

+0

Dies ist eine großartige Lösung. Danke +1 –