PrestaShop PayPal: transazione corretta, ma nessun ordine sul sito

Proseguo con i miei problemi con PrestaShop. Dopo aver terminato il progetto di ecommerce della mia amica, abbiamo attivato i pagamenti online abilitando e configurando il modulo PayPal Europeo sviluppato dagli ingegneri di PrestaShop.

PrestaShop PayPal: transazione corretta, ma nessun ordine sul sito

Tutto sembra funzionare correttamente, tranne che al primo ordine: mi chiama per avvisarmi di aver ricevuto un’email relativa a un pagamento avvenuto tramite con transazione PayPal, ma purtroppo il cliente – telefonicamente – insiste per non trovare traccia del pagamento sul sito.

[gdlr_heading tag=”h3″ icon=”icon-eur” color=”#282828″]PayPal non crea ordini in backoffice[/gdlr_heading]

Caspita! Proprio una bella grana penso. E in effetti nella Dashboard di PrestaShop non risulta alcun ordine; provo a richiamare l’ultimo carrello abbandonato e carico manualmente l’ordine del cliente, almeno la mia amica può così lavorarlo.

PrestaShop PayPal: transazione corretta, ma nessun ordine sul sito

Durante la creazione noto tuttavia che nel riepilogo ordine, dal menu a tendina Pagamento manca proprio la dicitura PayPal, mentre tutti gli altri sono presenti: per poter proseguire e confermare l’ordine seleziono quindi un pagamento a caso: Assegno.

Decido quindi di disattivare per precauzione la modalità Live dal modulo di pagamento e seguendo i consigli sul forum, provo a disinstallare e reinstallare il modulo ma le cose non cambiano. Decido quindi di configurare il modulo per la modalità Test, ed inizio a lavorare con la piattaforma sandbox di PayPal per tentare di capire dove sia il problema, che ovviamente risiede nel sito, in quanto il pagamento è andato a buon fine, ma il relativo ordine non viene creato in backoffice.

Un altro indizio arriva proprio dalle opzioni di configurazione del modulo PayPal, in quanto noto ancora problemi con le varie scritte. Inizio a pensare possa essere un problema di corruzione di qualche tabella del database, pertanto provo a ripristinare una versione precedente per vedere se il problema persiste.

PrestaShop modulo PayPal non crea ordini

Purtroppo ancora una volta niente da fare, le problematiche che puoi vedere dalle immagini continuano ad essere ancora lì, pertanto inizio a fare degli ordini di prova e vedere cosa accade.

[gdlr_heading tag=”h3″ icon=”icon-check-empty” color=”#282828″]PrestaShop e la pagina bianca[/gdlr_heading]

Le transazioni dei pagamenti in sandbox avvengono correttamente, tuttavia quando dal sito PayPal si viene reindirizzati sul sito dell’ecommerce, il relativo ordine non viene creato, anzi mi ritrovo davanti a una pagina bianca. Decido quindi di abilitare la modalità debug di PrestaShop e completare un nuovo ordine.

Stavolta ottengo delle informazioni più precise sull’errore che mi restituisce la pagina bianca:

[02-Feb-2015 21:13:08 Europe/Rome] PHP Fatal error: Uncaught exception 'PrestaShopException' with message 'Property Order->payment is empty' in /home/public_html/classes/ObjectModel.php:866
Stack trace:
#0 /home/public_html/classes/ObjectModel.php(272): ObjectModelCore->validateFields()
#1 /home/public_html/classes/order/Order.php(299): ObjectModelCore->getFields()
#2 /home/public_html/classes/ObjectModel.php(480): OrderCore->getFields()
#3 /home/public_html/classes/order/Order.php(304): ObjectModelCore->add(true, true)
#4 /home/public_html/classes/PaymentModule.php(335): OrderCore->add()
#5 /home/public_html/modules/paypal/paypal.php(1366): PaymentModuleCore->validateOrder(47, 2, 109.2, '', 'Payment accepte...', Array, 2, false, '178561e9f5d9c49...', Object(Shop))
#6 /home/public_html/modules/paypal/express_checkout/payment.php(290): PayPal->validateOrder(47, 2, 109.2, '', 'Payment accepte...', Array, 2, false, '178561e9f5d9c49...', Object(Shop))
#7 /home/public_html/modules/payp in /home/public_html/classes/ObjectModel.php on line 866

Perfetto! Posso iniziare a cercare su Google e sui vari forum una soluzione. Quel Fatal Error mi fa ben sperare, e il messaggio payment is empty, conferma in qualche modo che qualcosa nel modulo non stia funzionando a dovere.

Dopo un paio di giorni di ricerca e numerosi tentativi di aiuto sul forum, riesco a trovare un problema simile al mio, ma riguarda un altro modulo. Il problema era nella traduzione incompleta nella lingua di destinazione del portale.

[gdlr_heading tag=”h3″ icon=”icon-ok-circle” color=”#282828″]La soluzione nella traduzione[/gdlr_heading]

Tentar non nuoce mi sono detto, pertanto ho iniziato a tradurre l’intero modulo PayPal direttamente dalla Dashboard di PrestaShop, in quanto alcune parti erano mancanti di traduzione. Una volta concluso il lavoro, d’incanto tutto si è risolto ed il sito ha iniziato a lavorare perfettamente. Gli errori delle varie scritte sono scomparsi, e gli ordini venivano creati a seguito del pagamento PayPal in sandbox.

Risolto il problema con una banale traduzione, ho potuto iniziare a dormire sonni tranquilli, in quanto la mia amica ha smesso di chiamarmi… modalità Live e sito di nuovo pronto a ricevere ordini!

P.S.: nel frattempo che facevo queste scoperte, il giorno dopo sul forum mi arrivava un messaggio di conferma dell’intuizione, che mi invitava a tradurre il modulo nella lingua dello shop…