webmediagrafica Posted October 5, 2016 Share Posted October 5, 2016 Ciao a tutti, dopo aver lanciato la URL con il gateway di pagamento della banca e aver completato il processo, ho il problema di ripassare il controllo a Prestashop per procedere con la chiusura dell'ordine. In pratica dalla classe Prestashop newpaymentValidationModuleFrontController chiamo la funzione che esegue la URL del sistema di pagamento dell'istituto bancario. Se l'esecuzione della chiamata non funziona ottengo il codice errore e lì ho il primo problema di visualizzare una pagina di Prestashop con il messaggio. Se l'esecuzione procede mi visualizza il modulo esterno della banca da compilare con i dati della carta di credito e alla fine mi da la possibilità di inserire una URL per tornare alla chiusura dell'ordine sulla piattaforma di ecommerce. Il problema è che dovrei tornare all'interno della classe che ha generato la chiamata per recuperare i dati. QUalcuno sa darmi qualche idea. Scusate poi la domanda banale per chi conosce bene prestashop: come faccio a visualizzare del testo in una pagina prestashop? Grazie in anticipo Massimo Link to comment Share on other sites More sharing options...
Codencode Posted October 6, 2016 Share Posted October 6, 2016 Forse prima di procedere con l'implementazione del modulo di pagamento, dovresti capire bene come funziona Prestashop, come realizzare un modulo che ha un controller e come visualizzare il template ad hoc per quel controller. Un modo semplice è quello di studiare un modulo simile esempio il modulo bankwire. Link to comment Share on other sites More sharing options...
Tanzo.it Posted October 13, 2016 Share Posted October 13, 2016 Forse prima di procedere con l'implementazione del modulo di pagamento, dovresti capire bene come funziona Prestashop, come realizzare un modulo che ha un controller e come visualizzare il template ad hoc per quel controller. Un modo semplice è quello di studiare un modulo simile esempio il modulo bankwire. Quotiamo in pieno, sembrerebbe che tu debba comunque uscire da PS e poi ritornare, innanzitutto dovresti studiare le API dell'istituto bancario, dopodiché puoi studiarti il modulo di PayPal, che fa esattamente quello che serve a te. Ciao Link to comment Share on other sites More sharing options...
webmediagrafica Posted October 13, 2016 Author Share Posted October 13, 2016 Ciao, inizialmente ho esaminato e sperimentato con il modulo bankwire e in effetti ora sto utilizzando una versione duplicata e personalizzata di tale modulo. Purtroppo il problema risiede nei due moduli di chiusura pagamento presenti anche in bankwire, soprattutto in quello che dopo la validazione dell'ordine rimanda alla sezione con il riepilogo ordine. Il problema di bankwire è che tutte le chiamate sono sincrone, chiusa una viene eseguita l'altra. Qui quando chiamo l'api dell'istituto devo assicurarmi che il flusso di prestashop resti in attesa. Al momento, la soluzione 'orrida' e sbagliata, è che valido l'ordine prima di uscire sul servizio esterno dell'istituto e salvo tutti i parametri dell'ordine in un db. L'unica cosa che l'api dell'istituto mi mette a disposizione è la chiamata di una url. A quel punto l'url che gli fornisco è un php che ricostruisce la url della chiamata di chiusura di pagamento di prestashop e la richiama. Il problema di questa soluzione è che l'ordine viene validato anche se il successivo pagamento sulla piattaforma del gestore non va a buon fine. Sono sicuro che c'è un sistema meno macchinoso per gestire transazioni asincrone. A qualcuno viene un'idea più semplice? Grazie in anticipo Link to comment Share on other sites More sharing options...
Codencode Posted October 17, 2016 Share Posted October 17, 2016 Questo sistema mi sembra un po strano. In genere i sistemi di pagamento funzionano in questo modo: 1) il sito Prestashop redirige verso una url della banca 2) il sito della banca si occupa di chiedere i dati e di fare eseguire il pagamento 3) l'utente viene rediretto ad una url che mostra l'esito di pagamento. In alcuni casi, la banca può eseguire una chiamata in background appena prima della redirezione dell'utente verso il sito Prestashop. L'ordine deve essere creato quando l'utente viene rediretto sul sito Prestashop, oppure se il sistema della banca prevede la chiamata in background, deve essere creato dalla pagina chiamata in quel frangente. Ovviamente prima di creare l'ordine vanno eseguiti i dovuti controlli. Questo è il sistema che adotta anche Paypal. Link to comment Share on other sites More sharing options...
webmediagrafica Posted October 17, 2016 Author Share Posted October 17, 2016 Ciao codencode, giustissima la schematizzazione del processo. Il problema è al punto 3. Quando come hai descritto al punto 1 spezzo il processo. Da una parte dovrei far attendere Prestashop fino a quando il processo esterno sulla URL della banca non è stato terminato, dall'altra dovrei far richiamare dal sito della banca la URL prestashop corretta perché termini l'ordine. Purtroppo quando esco sul sito della banca, Prestashop continua per la sua strada chiudendo l'ordine, inviando le mail o generando errore. Dall'altra parte mi trovo isolato sul sito di pagamento della banca, il flusso diventa asincrono. Considera inoltre che alla URL della banca dovrei inviare l'ID dell'ordine che viene fornito in fase di validazione. Dovrei anche indicare la mail del cliente ma al momento non riesco a recuperarla. Insomma dovrei fare in modo che Prestashop resti in attesa del termine del processo di pagamento esterno sull'URL della banca, e trovare un modo per far comunicare a Prestashop dalla API dell'istituto di credito che il processo di pagamento si è concluso e in quale modo. Grazie per l'attenzione . Link to comment Share on other sites More sharing options...
Codencode Posted October 18, 2016 Share Posted October 18, 2016 Quando redirigi verso la banca non devi far fare altro a Prestashop, inoltre puoi passargli l'id del carrello. Se non riesci a recuperare l'email del cliente significa che ancora non ti è chiara la struttura di Prestashop e delle sue classi. L'ordine deve essere creato successivamente al pagamento così sei sicuro di crearlo solo se il pagamento va a buon fine. Link to comment Share on other sites More sharing options...
webmediagrafica Posted October 18, 2016 Author Share Posted October 18, 2016 Quando redirigi verso la banca non devi far fare altro a Prestashop, inoltre puoi passargli l'id del carrello. Se non riesci a recuperare l'email del cliente significa che ancora non ti è chiara la struttura di Prestashop e delle sue classi. L'ordine deve essere creato successivamente al pagamento così sei sicuro di crearlo solo se il pagamento va a buon fine. Ciao, in effetti della struttura di Prestashop e relative classi non ne so molto, ho provato a cercare qualcosa di esaustivo da studiare ma non ho trovato nulla. Ho un dubbio sul discorso del non dover far fare più nulla a Prestashop, perchè anche nei moduli già esistenti, dopo il pagamento Prestashop deve validare e chiudere l'ordine, altrimenti non invia la mail di conferma al cliente e non decrementa le quantità a magazzino. Queste due 'chiamate' non posso farle fare all'API della banca perchè mi concede di chiamare solo una URL e quindi devo per forza tornare a Prestashop dicendogli che il pagamento si è concluso e come si è concluso. Link to comment Share on other sites More sharing options...
Tanzo.it Posted October 18, 2016 Share Posted October 18, 2016 (edited) Dopo che la banca ti redireziona al tuo sito, devi effettuare i relativi controlli. Probabilmente ci saranno delle API che ti permettono di controllare se il pagamento è avvenuto o meno. Dopodiché validi l'ordine, "recuperando" carrello, etc etc. Costruire un modulo di pagamento non è un'operazione facile, soprattutto se non si conosce in modo approfondito le dinamiche di PrestaShop, l'unico modulo dalla quale puoi studiare bene è quello di PayPal Edited October 18, 2016 by Tanzo.it (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now