Chi utilizza Magento e PayPal come sistema per la ricezione dei pagamenti si sarà certamente trovato di fronte al problema degli ordini in “pending payment paypal”, ossia quegli ordini il cui pagamento non è stato concluso dal cliente.
Facciamo un piccolo passo indietro.
In Magento la procedura di registrazione di un ordine prevede le seguenti fasi:
- l’inserimento delle informazioni di fatturazione
- l’inserimento delle informazioni di spedizione
- informazioni di pagamento
- riepilogo ordine
- pagamento
Quando si arriva al punto 4) della procedura Magento registra l’ordine e lo mette “in attesa di pagamento” o “in attesa di pagamento paypal” se si è scelto di pagare tramite paypal.
Selezionato PayPal al punto 4) e cliccato su conferma al punto 5) si viene reindirizzati sul sito PayPal e qui si può
- pagare, scegliendo tra l’utilizzo di un conto PayPal o della propria carta di credito; a pagamento effettuato si viene reindirizzati sul sito del commerciante, in una pagina che conferma l’ordine
- annullare l’operazione, cliccando sull’apposito link “Annulla”; al click si viene reindirizzati sul sito del commerciante
- non pagare e non annullare, ma semplicemente chiudere la pagina o il browser
Nei casi 1) e 2) Magento registra rispettivamente l’ordine come “In lavorazione” e “Annullato”.
Nel caso 3) Magento non sa cosa fare e l’ordine rimane nello stato impostato al momento della registrazione, “in attesa di pagamento paypal” se si è scelto di pagare tramite paypal e non c’è modo di pagare l’ordine tramite paypal se non ricevendo un link direttamente dal venditore.
Sarebbe utile un link a PayPal per il pagamento dell’ordine accessibile direttamente dalla Dashboard dell’account cliente? Pensiamo di si e lo abbiamo inserito nella scheda dell’ordine nel modo seguente.
Innanzitutto abilitiamo nella Dashboard gli ordini in “pending”
Quindi apriamo il file /app/design/frontend/base/default/template/sales/order/info.phtml o lo stesso file del vostro template e modifichiamo il DIV con class “box-content” in questo modo
getStore()->getCurrentCurrencyCode();
$gTotal = round($_order->getGrandTotal(), 2);
if($_order->getStatus() == 'pending_payment'):
//get paypal email
$paypalEmail = Mage::getStoreConfig('paypal/general/business_account');
?>
Paga subito con getPaymentInfoHtml() ?>
getPaymentInfoHtml();
endif; ?>
Ecco il risultato
Provato su Magento CE 1.7.0.2 e 1.6.2.0