2010-01-13 3 views
6

Sono stato a questo per giorni e non riesco a capirlo. Tutto quello che voglio fare è quando il pulsante di iscrizione viene premuto, una variabile viene inviata (post non mi interessa) il pagamento è completato e atterrato sulla pagina di successo, con la mia variabile!Passaggio di una variabile dall'inizio alla fine - Paypal

Da quello che ho potuto capire questo dovrebbe essere in grado di farlo:

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post"> 
<input type="hidden" name="cmd" value="_s-xclick"> 
<input type="hidden" name="hosted_button_id" value="0000000"> 
<Input type="hidden" name="custom" value="<?php md5($code.microtime()); ?>"/> 
<input type="image" src="https://www.sandbox.paypal.com/en_US/i/btn/btn_subscribeCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"> 
<img alt="" border="0" src="https://www.sandbox.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1"> 
</form> 

Qualsiasi aiuto molto apprezzato (e sì che ho letto paypal e la documentazione sandbox, solo che non bravo a leggere.)

risposta

0

Manca un echo. Invece di questo:

<?php md5($code.microtime()); ?> 

Prova questo:

<?php echo md5($code.microtime()); ?> 
+0

Passerà indietro attraverso $ _POST ['personalizzato'] ?? –

+0

Ancora senza fortuna. non viene inviato nulla –

0

PayPal non elaborerà i vostri dati personalizzati, così invece di inviarlo a loro e ottenere indietro, basta conservarla nel proprio database. Associare i dati con la transazione utilizzando invoice come chiave.

Nella pagina di destinazione, è possibile ottenere il invoice dalla transazione PayPal. Quindi è possibile recuperare i dati dal proprio database che fa riferimento a tale ID invoice.

+0

Questo principio si applica all'opzione di pagamento Standard (questo è quando si ospita il pulsante ma si porta l'utente a Paypal per completare la transazione)? – Joel

+0

@Joel puoi leggere l'API standard di Paypal. Qualsiasi variabile oltre alle loro specifiche non verrà elaborata da Paypal e potrebbe essere scartata quando l'utente viene reindirizzato alla pagina di successo. Il campo 'fattura 'può essere utilizzato per tracciare l'invoice_id della propria applicazione e, nella pagina di successo, è possibile utilizzarlo per recuperare ulteriori dati e visualizzarlo all'utente. –

+0

Si scopre che esiste un campo "personalizzato" proprio per questo. – Joel

9

Le variabili "personalizzato" e "fattura" sono entrambe quelle che PayPal chiama variabili "pass-through". PayPal non fa nulla con loro, semplicemente li rispedisce a te in tutte le notifiche IPN che ricevi riguardo a quella transazione (qualcuno effettua un pagamento, un chargeback, ecc.).

Posso confermare personalmente che questo funziona correttamente sin da ora utilizzando la variabile 'personalizzata'. Sto usando la loro soluzione di pagamento Standard (gratuita) al momento ...

Come stai monitorando la notifica IPN per vedere quali variabili ti vengono postate?

Modifica - Altre Informazioni Aggiunto In basso:

ho voluto espandere su questo un po 'come mi è stato molto recentemente preso da un problema relativo alle variabili pass-through!

La variabile "fattura" deve essere UNICA per transazione; PayPal consentirà il pagamento di 1 solo per la stringa di fattura UNIQUE. Qualsiasi successivo tentativo di pagamento (che viene fornito con una variabile "fattura" già pagata) verrà immediatamente visualizzato "Questa fattura è già stata pagata." Messaggio.

La variabile 'personalizzata' d'altra parte NON è richiesta per essere unica e deve essere usata esclusivamente come variabile pass-through - nella maggior parte dei casi questo è ciò che si desidera utilizzare quando si sta solo cercando la funzionalità 'pass-through'.

Spero che questo aiuti - il problema di unicità recentemente mi è costato quasi un giorno intero di un processo di checkout rotto su un mio progetto personale!

0

Il problema sembra essere non sembra avere CUSTOM essere passato attraverso Sandbox

Vergogna PayPal non è buona come tutti abbiamo pensato

0

Prova questo:

<input type="hidden" name="custom" value=<?php echo "\"".md5($code.microtime())."\""; ?>/> 

c'era un manca l'eco e anche le virgolette sono intorno al valore, non il php