2011-11-21 17 views
21

Ho integrato paypal in codeigniter con paypal_helper (non ricordo dove l'ho trovato, ma è una versione leggermente riscritta del codice originale Paypals per il checkout express. Provo a chiamare questa funzione ,Quantità mancante e riepilogo dell'ordine in PayPal Pagamento rapido

CallShortcutExpressCheckout ($ paymentAmount, $ currencyCodeType, $ TipoDiPagamento, $ ReturnURL, $ CancelURL)

invio di $ paymentAmount come int, $ currencyCodeType come "NOK" e $ TipoDiPagamento come "Sale"

Sia in Sandbox che dal vivo, nessun importo appare sul sito paypal ...

Cosa potrebbe essere sbagliato?

Modifica, per spiegare ulteriormente il mio processo. Io lo uso, principalmente come specificato nello https://www.paypal-labs.com/integrationwizard/ecpaypal/cart.php. Questo dovrebbe essere fattibile senza la forma? Il paymentAmount potrebbe essere inviato come variabile standard, quando si chiama la funzione CallShortcutExpressCheckout ?:

$resArray = CallShortcutExpressCheckout ($paymentAmount, $currencyCodeType, $paymentType, $returnURL, $cancelURL); 
$ack = strtoupper($resArray["ACK"]); 
if($ack=="SUCCESS" || $ack=="SUCCESSWITHWARNING") 
{ 
    RedirectToPayPal ($resArray["TOKEN"]); 
} 
else 
{ 
    //Display a user friendly Error on the page using any of the following error information returned by PayPal 
    $ErrorCode = urldecode($resArray["L_ERRORCODE0"]); 
    $ErrorShortMsg = urldecode($resArray["L_SHORTMESSAGE0"]); 
    $ErrorLongMsg = urldecode($resArray["L_LONGMESSAGE0"]); 
    $ErrorSeverityCode = urldecode($resArray["L_SEVERITYCODE0"]); 

    echo "SetExpressCheckout API call failed. "; 
    echo "Detailed Error Message: " . $ErrorLongMsg; 
    echo "Short Error Message: " . $ErrorShortMsg; 
    echo "Error Code: " . $ErrorCode; 
    echo "Error Severity Code: " . $ErrorSeverityCode; 
} 

Il token viene salvato in un database. L'utente viene reindirizzato su Paypal, dove non è elencato alcun importo.

+0

stai usando il nome corretto del campo per il campo quantità ..? –

+0

Non sto usando il modulo ... Quando chiamo questa funzione, il pagamento deve essere impostato su Paypal ... Più tardi nel mio codice, chiamo questa funzione, che invia l'utente a Paypal: RedirectToPayPal ($ paypal ["GETTONE"]); –

+0

https://github.com/hrendoh/PayPal-Express-Checkout-example –

risposta

50

Come si sta passando non cosiddette 'linee dettagli dell'elemento' (dati di prodotto), PayPal non visualizza l'importo totale .

Se solo si desidera mostrare l'importo per l'acquisto corrente, reindirizzare gli acquirenti a https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-xxxxxx&useraction=commit (invece di https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-xxxxx)

Se si vuole iniziare a inviare i dettagli linea-item a PayPal, includono quanto segue nel SetExpressCheckout API richiesta:

// Total amount of the purchase, incl shipping, tax, etc 
PAYMENTREQUEST_0_AMT=300.0 
// Total amount of items purchased, excl shipping, tax, etc  
PAYMENTREQUEST_0_ITEMAMT=300.0 
// Authorize the funds first (Authorization), or capture immediately (Sale)?  
PAYMENTREQUEST_0_PAYMENTACTION=Sale 
// First item 
L_PAYMENTREQUEST_0_NAME0=Item1 
L_PAYMENTREQUEST_0_QTY0=1 
L_PAYMENTREQUEST_0_AMT0=100.00 
// Second item 
L_PAYMENTREQUEST_0_NAME1=Item2 
L_PAYMENTREQUEST_0_QTY1=1 
L_PAYMENTREQUEST_0_AMT1=200.00 

Se volete vedere questo nella vostra storia pure, avrete anche bisogno di includere questo in DoExpressCheckoutPayment.

questo è stato anche pubblicato in php paypal express checkout problem

+14

e useraction = commit ha funzionato. Grazie :) –

+1

Nota: questo non includerà questi dati in nessun rapporto PayPal, quindi se questo è il tuo obiettivo, dovrai comunque aggiungere elementi pubblicitari. – Robert

+0

Tutto quello che voglio è l'importo corretto da trasferire ... –

14

Dopo un'ampia lettura sulla disordinato sito docs Paypal Questa è una breve guida ExpressCheckout lavorando 2013. Volevo avere dettagli dell'elemento indicati su pagina di pagamento PayPal e pagina della cronologia delle transazioni commerciali .

documentazione Paypal collega

È possibile chiamare metodi seguenti URL direttamente sul browser web, aggiornare i parametri di token e PayerID conseguenza.

Questo è un prodotto digitale quindi non vengono fornite le spese di spedizione e gestione. Riga dell'articolo singola. Importo e tasse sono indicate. Non è necessario un indirizzo di consegna confermato, nessun campo per gli indirizzi di spedizione, nessuna nota del testo libero, il pagatore non ha bisogno di account paypal e nessuna registrazione richiesta (solutiontype = sole). Attiva la sezione della carta di credito sul sito paypal (landingpage = fatturazione). Usa il titolo del marchio personalizzato sul sito paypal. Usa il campo personalizzato per dare il proprio valore per scopo di monitoraggio. La cronologia delle transazioni del sito commerciale deve mostrare i dettagli degli articoli (fornire dettagli sugli articoli sui metodi SetExpressCheckout e DoExpressCheckoutPayment).

metodo SetExpressCheckout apre una nuova transazione

https://api-3t.sandbox.paypal.com/nvp? 
    USER=<userid> 
    &PWD=<pwd> 
    &SIGNATURE=<mysig> 
    &METHOD=SetExpressCheckout 
    &VERSION=98 
    &PAYMENTREQUEST_0_PAYMENTACTION=SALE 
    &REQCONFIRMSHIPPING=0 
    &NOSHIPPING=1 
    &ALLOWNOTE=0 
    &SOLUTIONTYPE=Sole 
    &LANDINGPAGE=Billing 
    &BRANDNAME=MY+WEBSHOP+TITLE 
    &PAYMENTREQUEST_0_AMT=22.22 
    &PAYMENTREQUEST_0_TAXAMT=4.30 
    &PAYMENTREQUEST_0_ITEMAMT=17.92 
    &PAYMENTREQUEST_0_DESC=mypurdesc 
    &PAYMENTREQUEST_0_CUSTOM=custom1 
    &PAYMENTREQUEST_0_CURRENCYCODE=EUR 
    &L_PAYMENTREQUEST_0_NUMBER0=itemid1 
    &L_PAYMENTREQUEST_0_NAME0=MyItem1 
    &L_PAYMENTREQUEST_0_DESC0=Item1+description 
    &L_PAYMENTREQUEST_0_QTY0=1 
    &L_PAYMENTREQUEST_0_AMT0=17.92 
    &L_PAYMENTREQUEST_0_TAXAMT0=4.30 
    &RETURNURL=https://myserver.com/webapp/paypal.jsp%3Fcmd=successexp 
    &CANCELURL=https://myserver.com/webapp/paypal.jsp%3Fcmd=cancelexp 

risposta deve avere ACK = Successo o ACK = SuccessWithWarning, leggere il valore GETTONE

reindirizzamento del browser utente al sito di Paypal, dare valore simbolico

https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=<token> 

L'utente utilizza l'account paypal o carta di credito. Paypal reindirizza l'utente per restituire o cancellare l'url. URL di destinazione di reindirizzamento ottenuto token e PayerID valori dei parametri. La transazione non è ancora completata, dobbiamo chiamare il metodo doExpressCheckoutPayment.

dialogo Visualizza conferma sullo schermo (con il tasto OK, pulsante Annulla) o semplice caso commit di una transazione e mostrano "Grazie, acquisto a termine" messaggio. L'utente ha già accettato un pagamento nel sito paypal e si aspetta che la transazione sia finalizzata.

È possibile eseguire il commit della transazione all'interno di uno stesso gestore richiesta-risposta o utilizzando l'attività in background asincrona . Il sito Paypal potrebbe essere temporaneamente non disponibile quindi non aspettarti che funzioni immediatamente.

Commit transazione se redirect fosse successo, utilizzare token e PayerID

https://api-3t.sandbox.paypal.com/nvp? 
    USER=<userid> 
    &PWD=<pwd> 
    &SIGNATURE=<mysig> 
    &METHOD=DoExpressCheckoutPayment 
    &VERSION=98 
    &PAYMENTREQUEST_0_PAYMENTACTION=SALE 
    &PAYMENTREQUEST_0_AMT=22.22 
    &PAYMENTREQUEST_0_TAXAMT=4.30 
    &PAYMENTREQUEST_0_ITEMAMT=17.92 
    &PAYMENTREQUEST_0_CURRENCYCODE=EUR 
    &L_PAYMENTREQUEST_0_NUMBER0=itemid1 
    &L_PAYMENTREQUEST_0_NAME0=MyItem1 
    &L_PAYMENTREQUEST_0_QTY0=1 
    &L_PAYMENTREQUEST_0_AMT0=17.92 
    &L_PAYMENTREQUEST_0_TAXAMT0=4.30 
    &token=<token> 
    &payerid=<payerid> 

Leggi ACK = successo e verificare i campi

ACK=Success 
PAYMENTINFO_0_PAYMENTSTATUS=Completed 
PAYMENTINFO_0_ACK=Success 
PAYMENTINFO_0_AMT=22.22  total amount must match 
PAYMENTINFO_0_FEEAMT=0.99 (just for fun, read paypal comission fee) 
PAYMENTINFO_0_CURRENCYCODE=EUR currency must match 

(opzionale) Leggi i dettagli della transazione da Paypal

È possibile utilizzare questo durante il flusso di lavoro della transazione o qualsiasi ime se memorizzato un token per un uso successivo.

https://api-3t.sandbox.paypal.com/nvp 
    ?USER=<userid> 
    &PWD=<pwd> 
    &SIGNATURE=<mysig> 
    &METHOD=GetExpressCheckoutDetails 
    &VERSION=98 
    &token=<token> 

Leggere i parametri di risposta.

ACK=Success 
CHECKOUTSTATUS=PaymentActionCompleted 
PAYMENTREQUEST_0_AMT=22.22 
PAYMENTREQUEST_0_TAXAMT=4.30 
PAYMENTREQUEST_0_CURRENCYCODE=EUR 

(opzionale) Leggi e salvare id transazione, la correlazione id e id token e scrivere a tabella di log.

PAYMENTREQUEST_0_TRANSACTIONID=11E585715B622391E 
CORRELATIONID=4534b683c335f 

Sono disposto a ricevere commenti in caso di errori logici.

+1

Idealmente GetExpressCheckoutDetails dovrebbe avvenire prima di DoExpressCheckoutPayment. Viene in genere utilizzato per fornire una pagina di tipo "rivedere il tuo ordine" prima di chiamare DoExpressCheckoutPayment per finalizzare la transazione. – Robert

Problemi correlati