2011-12-19 5 views
5

Sto usando PayPal con API NVP (usando PHP) per il checkout rapido. Sto creando un record di fattura nel database prima di reindirizzare l'utente a Paypal. Nel caso in cui l'utente non ritorni al mio sito dopo l'elaborazione, sto utilizzando IPN per confermare l'acquisto e quindi aggiornare il record della fattura che il pagamento è confermato. Sono ancora in modalità sandbox e sto cercando di capire come legherò la transazione avviata con NVP alla conferma che ottengo con IPN.Paypal NVP con conferma per IPN - cosa li lega insieme

Ho bisogno di verificare se il "PAYMENTREQUEST_n_INVNUM" inviato nel NVP tornerà come "fattura" nel post IPN.

Sembra che non riesca a testarlo fino a quando non vivo dal momento che l'IPK di Sandbox non sembra essere attivo con le transazioni sandbox avviate NVP - è corretto?

Grazie per il vostro aiuto.

+0

È possibile utilizzare il campo personalizzato come variabile passante. Assegna un ID e usalo per collegare le transazioni. –

+0

Sì, il campo personalizzato è stata la mia seconda scelta per memorizzare il numero di fattura. Speravo che la "fattura" fosse dedicata a tale scopo e potrei usare l'abitudine per altri dati se necessario. – mseifert

risposta

6

È possibile verificare questo in Sandbox. Ma se stai usando "PayPal NVP", presumo tu stia utilizzando PayPal Express Checkout e chiami le API SetExpressCheckout e DoExpressCheckoutPayment.
Se questo è il caso, non hai davvero bisogno di IPN, perché una transazione sarà completata non appena si chiama DoExpressCheckoutPayment.

In altre parole, gli acquirenti saranno sempre essere reindirizzato al ReturnURL specificato nella SetExpressCheckout, e la transazione è completata (o meno) quando si chiama DoExpressCheckoutPayment in questa pagina di ritorno.

Per ottenere il numero di fattura, è possibile chiamare GetExpressCheckoutDetails e fornire il TOKEN recuperato in precedenza (è inoltre aggiunto al GET del RETURNURL).

Infine, controllare PAYMENTSTATUS=Completed nella risposta API DoExpressCheckoutPayment per verificare se la transazione è stata completata o meno.

+0

Hai ragione, sto utilizzando il Pagamento express di PayPal e chiama le API SetExpressCheckout e DoExpressCheckoutPayment. Avevo l'impressione che una volta che l'utente ha fatto clic sul pulsante "Paga adesso" sul sito di Paypal, è pagato. Se per qualsiasi motivo l'utente si disconnette dal mio sito prima di essere reindirizzato, non avrò mai la conferma della vendita. Sembra più sicuro avere IPN come backup per conferma. – mseifert

+0

No, la transazione è finalizzata solo dopo aver chiamato 'DoExpressCheckoutPayment' e hai ricevuto un' PAYMENTSTATUS = Completed' nella risposta API. Ecco perché Express Checkout non mostra un pulsante "Paga adesso" nel checkout sul sito web di PayPal. Piuttosto, consente all'utente di autorizzare il pagamento e, se sono soddisfatti, fanno clic sul pulsante "Continua" per procedere.Il pulsante "Continua" torna automaticamente al tuo sito web, senza ritardi, senza problemi, sempre, il 100% delle volte. Se un acquirente non colpisce l'URL di ritorno, significa semplicemente che non desidera andare avanti con la transazione PayPal. – Robert

+0

(Ancora, l'IPN è sempre valido come backup, concordo. PAYMENTREQUEST_0_INVNUM corrisponderà al parametro "fattura" nel POST IPN). – Robert

0

Grazie Robert per la chiarezza sul processo, in particolare useraction = commit.

Alla fine ho realizzato che avrei potuto attivare l'IPN nella Sandbox per il mio rivenditore e testare insieme NVP con IPN. Sono stato in grado di verificare che PAYMENTREQUEST_0_INVNUM corrisponda al parametro "INVOICE" nel POST IPN.

Utilizzerò il campo personalizzato per passare l'e-mail del cliente dal mio sistema nel caso in cui utilizzino un indirizzo email diverso per accedere a paypal con, quindi mi consente di avere una coppia di numeri email/fattura per la conferma.