{"id":841322,"date":"2026-09-09T12:21:13","date_gmt":"2026-09-09T12:21:13","guid":{"rendered":"https:\/\/www.knowband.com\/blog\/?p=841317\/"},"modified":"2026-09-30T08:38:36","modified_gmt":"2026-09-30T08:38:36","slug":"prestashop-payment-gateway-integration","status":"publish","type":"post","link":"https:\/\/www.knowband.com\/blog\/it\/ecommerce-blog\/prestashop-payment-gateway-integration\/","title":{"rendered":"Integrazione di un gateway di pagamento personalizzato in PrestaShop: requisiti tecnici, flusso API e sfide OPC reali"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Integrare un gateway di pagamento in PrestaShop pu\u00f2 sembrare semplice sulla carta.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Il gateway fornisce la documentazione API, le credenziali di accesso alla sandbox, le chiavi di autenticazione, gli URL di callback e alcuni endpoint. Il modulo PrestaShop invia quindi la richiesta di pagamento, riceve la risposta, crea l&#8217;ordine e reindirizza il cliente alla pagina di conferma.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In un vero negozio PrestaShop, tuttavia, il gateway di pagamento raramente funziona da solo.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Nel momento in cui un negozio utilizza un modulo One Page Checkout (OPC) come SuperCheckout, pi\u00f9 moduli di pagamento, flussi di pagamento personalizzati, iframe, metodi di pagamento basati su JavaScript e ulteriori personalizzazioni del checkout possono interagire tra loro.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00c8 proprio qui che molte integrazioni di pagamento diventano complesse.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Durante i lavori di compatibilit\u00e0 con i gateway di pagamento, abbiamo riscontrato casi in cui un metodo di pagamento funzionava perfettamente con il checkout predefinito di PrestaShop, ma si comportava in modo diverso all&#8217;interno di OPC. Ad esempio, un fornitore di pagamento poteva essere visualizzato correttamente nel checkout standard, mentre opzioni come BLIK, selezione della banca o BNPL (Buy Now Pay Later) scomparivano all&#8217;interno di SuperCheckout.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">La lezione pi\u00f9 importante \u00e8 stata che integrare un gateway di pagamento non significa solo far funzionare la chiamata API, ma far s\u00ec che l&#8217;intero ciclo di pagamento funzioni correttamente all&#8217;interno del checkout di PrestaShop.<\/span><\/p>\n<h2><strong>1.0 Di cosa ha effettivamente bisogno un gateway di pagamento personalizzato?<\/strong><\/h2>\n<p><a href=\"https:\/\/www.knowband.com\/blog\/wp-content\/uploads\/2026\/09\/Italian-2-1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-841336 size-full\" src=\"https:\/\/www.knowband.com\/blog\/wp-content\/uploads\/2026\/09\/Italian-2-1.jpg\" alt=\"Di cosa ha realmente bisogno un gateway di pagamento personalizzato? \" width=\"700\" height=\"700\" srcset=\"https:\/\/www.knowband.com\/blog\/wp-content\/uploads\/2026\/09\/Italian-2-1.jpg 700w, https:\/\/www.knowband.com\/blog\/wp-content\/uploads\/2026\/09\/Italian-2-1-300x300.jpg 300w, https:\/\/www.knowband.com\/blog\/wp-content\/uploads\/2026\/09\/Italian-2-1-150x150.jpg 150w, https:\/\/www.knowband.com\/blog\/wp-content\/uploads\/2026\/09\/Italian-2-1-60x60.jpg 60w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">A grandi linee, un&#8217;integrazione di pagamento per PrestaShop deve gestire cinque aspetti:<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Visualizza il metodo di pagamento al momento del checkout.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Invia i dati del cliente o di pagamento al gateway.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Ricevere e convalidare la risposta del gateway.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Creare o aggiornare correttamente l&#8217;ordine PrestaShop.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Reindirizzare il cliente alla pagina di conferma o di errore appropriata.<\/span><\/li>\n<\/ol>\n<p dir=\"ltr\">Un tipico modulo di pagamento estende la classe base anzich\u00e9 la classe base.<\/p>\n<p dir=\"ltr\">Il modulo di pagamento funziona normalmente con hook come:<\/p>\n<p dir=\"ltr\">Il componente hook ha il compito di rendere disponibile il metodo di pagamento al momento del checkout.<\/p>\n<p dir=\"ltr\">Il hook gestisce ci\u00f2 che il cliente vede dopo essere tornato dalla procedura di pagamento.<\/p>\n<p><span style=\"font-weight: 400;\">Per esempio:<\/span><\/p>\n<pre>public function hookPaymentOptions($params) { if (!$this-&gt;active || !$this-&gt;checkCurrency($params['cart'])) { return []; } $paymentOption = new PaymentOption(); $paymentOption -&gt;setCallToActionText($this-&gt;l('Paga con carta')) -&gt;setAction( $this-&gt;context-&gt;link-&gt;getModuleLink( $this-&gt;name, 'redirect', [], true ) ); return [$paymentOption]; }<\/pre>\n<p><span style=\"font-weight: 400;\">Il punto fondamentale \u00e8 che questo hook non deve dare per scontato che il metodo di pagamento sia sempre visibile.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Valuta, paese, corriere, stato del cliente, importo del carrello, configurazione del modulo e disponibilit\u00e0 del gateway possono influire sulla visualizzazione del metodo di pagamento.<\/span><\/p>\n<h2><strong>2.0 La parte che cambia tutto: OPC<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Il sistema di pagamento predefinito di PrestaShop e un modulo OPC non elaborano necessariamente i metodi di pagamento esattamente allo stesso modo.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Questa \u00e8 stata una delle lezioni pi\u00f9 importanti apprese lavorando con diversi moduli di pagamento.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Con la procedura di pagamento predefinita, un modulo di pagamento generalmente gestisce autonomamente la visualizzazione delle opzioni di pagamento e il flusso di pagamento.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Con un OPC, il modulo di checkout diventa un ulteriore livello tra il modulo di pagamento e il cliente. Ci\u00f2 significa che possono interagire i seguenti elementi:<\/span><\/p>\n<pre><b> <\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>OPC \/ SuperCheckout<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Opzioni di pagamento<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Modulo di pagamento<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>API del gateway<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Risposta del gateway<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Modulo di pagamento<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>OPC \/ PrestaShop<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Conferma dell'ordine<\/b><\/pre>\n<p><span style=\"font-weight: 400;\">Un modulo di pagamento pu\u00f2 quindi essere perfettamente corretto dal punto di vista dell&#8217;API e tuttavia non funzionare correttamente all&#8217;interno di un OPC.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Ecco perch\u00e9 i test di compatibilit\u00e0 dei pagamenti dovrebbero sempre includere entrambi:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Checkout predefinito di PrestaShop<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">L&#8217;OPC effettivamente utilizzato dal negozio<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Testare solo la procedura di pagamento predefinita pu\u00f2 dare la falsa impressione che l&#8217;integrazione sia completa.<\/span><\/p>\n<h2><strong>3.0 Un esempio concreto: opzioni PayU mancanti all&#8217;interno di OPC<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Uno dei problemi pratici che abbiamo riscontrato riguardava le opzioni di pagamento di PayU.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Nella pagina di pagamento standard di PrestaShop, PayU visualizzava correttamente i metodi di pagamento disponibili. Tuttavia, all&#8217;interno di SuperCheckout, alcune opzioni di pagamento risultavano mancanti.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Ad esempio, a seconda della configurazione e del carrello:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">BLIK non era sempre visibile.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">L&#8217;elenco di selezione delle banche non si \u00e8 espanso correttamente.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Mancavano alcune righe relative al pagamento\/BNPL (Buy Now Pay Later).<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">In alcuni casi, BLIK appariva e poi scompariva.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">A prima vista, sembrava un problema dell&#8217;API di PayU. Non lo era.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">La fase diagnostica fondamentale consisteva nel confrontare il flusso di pagamento tra la procedura di pagamento standard e SuperCheckout.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Quando lo stesso modulo di pagamento funziona nella procedura di pagamento predefinita ma non all&#8217;interno di OPC, l&#8217;indagine dovrebbe estendersi oltre l&#8217;API del gateway.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Dobbiamo verificare come l&#8217;OPC crea i metodi di pagamento e quali informazioni trasmette ai moduli di pagamento.<\/span><\/p>\n<h2><strong>4.0 L&#8217;importo del pagamento pu\u00f2 influire sulla visibilit\u00e0 del metodo di pagamento<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Un aspetto particolarmente importante di questa indagine \u00e8 stato l&#8217;importo del carrello. I gateway di pagamento spesso prevedono limiti minimi e massimi per le transazioni. Ad esempio:<\/span><\/p>\n<pre><b>Metodo di pagamento<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Verifica l'importo nel carrello<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Importo minimo? Importo massimo?<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Idoneo \/ Non idoneo<\/b><\/pre>\n<p><span style=\"font-weight: 400;\">Durante l&#8217;indagine sulla compatibilit\u00e0 di PayU, abbiamo rintracciato la logica di filtraggio del metodo di pagamento fino all&#8217;importo del carrello che veniva elaborato dai controlli del metodo di pagamento.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Il flusso rilevante comprendeva il calcolo del carrello e il filtraggio del metodo di pagamento di PrestaShop, inclusa la logica relativa a:<\/span><\/p>\n<pre>Carrello::ENTRAMBI<\/pre>\n<p><span style=\"font-weight: 400;\">e:<\/span><\/p>\n<pre><b>PayMethodsCache::checkMinMax<\/b><\/pre>\n<p><span style=\"font-weight: 400;\">Questo \u00e8 importante perch\u00e9 un&#8217;opzione di pagamento pu\u00f2 scomparire dalla pagina di pagamento senza che l&#8217;API stessa restituisca un errore.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Il gateway potrebbe semplicemente essere considerato non idoneo per l&#8217;importo ricevuto dal modulo di pagamento. Questo ci fornisce un&#8217;importante regola di debug:<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Se un&#8217;opzione di pagamento scompare da un OPC, non dare subito per scontato che l&#8217;API di pagamento sia guasta. Verifica prima l&#8217;importo del carrello, la valuta, i limiti minimi\/massimi e i valori che raggiungono i controlli di idoneit\u00e0 del metodo di pagamento.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Questo aspetto diventa ancora pi\u00f9 importante quando sono coinvolti sconti, costi di spedizione, tasse, buoni o calcoli personalizzati al momento del pagamento.<\/span><\/p>\n<h2><strong>5.0 Perch\u00e9 i metodi di pagamento funzionano nel checkout predefinito ma non in SuperCheckout<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Un metodo utile per analizzare questi problemi consiste nel confrontare i due ambienti di pagamento.<\/span><\/p>\n<h3><strong>5.1 Checkout predefinito di PrestaShop<\/strong><\/h3>\n<pre><b>Carrello<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Ricerca opzioni di pagamento<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>hook paymentOptions<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Moduli di pagamento<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Opzioni di pagamento<\/b><\/pre>\n<h3><strong>5.2 Verifica OPC<\/strong><\/h3>\n<pre><b>Carrello<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>SuperCheckout<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Metodi di pagamento<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Moduli di pagamento<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Elaborazione OPC aggiuntiva<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Interfaccia utente di pagamento visualizzata<\/b><\/pre>\n<p><span style=\"font-weight: 400;\">Il secondo flusso presenta parti mobili aggiuntive.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Pertanto, quando si esegue il debug di un problema di pagamento, non ci limitiamo a verificare: &#8220;Il modulo di pagamento funziona?&#8221;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Controlliamo: <\/span><span style=\"font-weight: 400;\">&#8220;Il modulo di pagamento funziona correttamente quando il suo output viene elaborato e visualizzato da questa specifica implementazione del sistema di pagamento?&#8221;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Tale distinzione ha permesso di risparmiare una notevole quantit\u00e0 di tempo nella fase di debug.<\/span><\/p>\n<h2><strong>6.0 L&#8217;opzione di pagamento \u00e8 solo una parte dell&#8217;integrazione<\/strong><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">A partire da PrestaShop 1.7, i moduli di pagamento utilizzano generalmente l&#8217;output HTML per i pagamenti tramite il vecchio approccio basato sugli hook di pagamento.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Un&#8217;opzione di pagamento pu\u00f2 contenere informazioni quali:<\/span><\/p>\n<pre><b>Opzione di pagamento<\/b>\r\n<b>-&gt;setCallToActionText(...)<\/b>\r\n<b>-&gt;setAction(...)<\/b>\r\n<b>-&gt;setInputs(...)<\/b>\r\n<b>-&gt;impostaInformazioniAggiuntive(...)<\/b><\/pre>\n<p><span style=\"font-weight: 400;\">oggetti invece di direttamente<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Gateway diversi richiedono combinazioni diverse.<\/span><\/p>\n<h3><strong>6.1 Gateway basato sul reindirizzamento<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Il cliente clicca sul metodo di pagamento e viene reindirizzato al gateway.<\/span><\/p>\n<pre><b>Concludi ordine<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Opzione di pagamento<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Controller del modulo<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Gateway<\/b><\/pre>\n<h3><strong>6.2 Modulo di pagamento incorporato<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">I campi di pagamento vengono visualizzati direttamente nella pagina di checkout.<\/span><\/p>\n<pre><b>Concludi ordine<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Opzione di pagamento<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Modulo di carta\/pagamento<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>API del gateway<\/b><\/pre>\n<h3><strong>6.3 Pagamento basato su iframe<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">L&#8217;interfaccia del gateway \u00e8 integrata nella procedura di pagamento.<\/span><\/p>\n<pre><b>Concludi ordine<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Opzione di pagamento<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Iframe<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Gateway<\/b><\/pre>\n<p><span style=\"font-weight: 400;\">Gli ultimi due approcci richiedono maggiore attenzione perch\u00e9 JavaScript, la manipolazione del DOM, il caricamento degli iframe e gli aggiornamenti OPC possono influire sull&#8217;interfaccia di pagamento.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<h2><strong>7.0 JavaScript diventa fondamentale con OPC<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Questo \u00e8 un aspetto che le guide generiche all&#8217;integrazione dei sistemi di pagamento spesso trascurano.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Un OPC pu\u00f2 aggiornare dinamicamente alcune parti del processo di checkout quando il cliente apporta delle modifiche:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">indirizzo di consegna<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">nazione<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">vettore<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">metodo di pagamento<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Informazioni di fatturazione<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">metodo di spedizione<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">In tal caso, il codice HTML relativo ai pagamenti pu\u00f2 essere sostituito.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Un evento JavaScript che funzionava correttamente durante il caricamento iniziale della pagina potrebbe quindi smettere di funzionare dopo un aggiornamento AJAX.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Per esempio:<\/span><\/p>\n<pre><b>Carico di checkout iniziale<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Inizializzazione del codice JavaScript di pagamento<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Il cliente modifica le informazioni di pagamento\/spedizione<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>L'OPC aggiorna la sezione pagamenti<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>DOM originale sostituito<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Il codice JavaScript di pagamento non \u00e8 pi\u00f9 allegato.<\/b><\/pre>\n<p><span style=\"font-weight: 400;\">Ci\u00f2 pu\u00f2 produrre sintomi fuorvianti.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Il metodo di pagamento potrebbe apparire inizialmente, ma cliccandoci sopra non succede nulla. Un iframe potrebbe scomparire.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">L&#8217;elenco delle banche potrebbe smettere di espandersi.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Un&#8217;opzione di pagamento potrebbe apparire e scomparire in seguito alla modifica di un altro campo durante la procedura di pagamento.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Pertanto, gli interventi di compatibilit\u00e0 spesso richiedono modifiche non solo al codice PHP, ma anche al codice JavaScript del modulo di pagamento.<\/span><\/p>\n<h2><strong>8.0 Un esempio concreto: SimplyLease + SuperCheckout<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Un altro esempio riguardava l&#8217;integrazione di SimplyLease con SuperCheckout. Il problema non si limitava all&#8217;API del gateway.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Alcune informazioni di SimplyLease e alcuni elementi del calcolatore erano inclusi nella presentazione di pagamento e dovevano funzionare correttamente all&#8217;interno del flusso SuperCheckout.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Le modifiche di compatibilit\u00e0 hanno interessato sia i modelli dei moduli che l&#8217;integrazione JavaScript lato SuperCheckout. I file coinvolti includono:<\/span><\/p>\n<pre><b>modules\/simplylease\/views\/templates\/hook\/payment_info.tpl modules\/simplylease\/views\/templates\/hook\/product_calculator.tpl<\/b>\r\n\r\n<b>modules\/supercheckout\/controllers\/front\/SupercheckoutCore.php modules\/supercheckout\/views\/js\/front\/supercheckout.js\r\n<\/b><b>modules\/supercheckout\/views\/js\/front\/simplylease_supercheckout.js<\/b><\/pre>\n<p><span style=\"font-weight: 400;\">Questo \u00e8 un buon esempio del perch\u00e9 la compatibilit\u00e0 dei pagamenti a volte richiede modifiche al di fuori del modulo del gateway di pagamento stesso.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Il fornitore di servizi di pagamento pu\u00f2 esporre i dati corretti, ma il checkout deve comunque:<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Esegui il rendering.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Conservalo durante gli aggiornamenti della pagina di pagamento.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Inizializza il codice JavaScript necessario.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Mantieni sincronizzate le informazioni di pagamento con il carrello corrente.<\/span><\/li>\n<\/ol>\n<h2><strong>9.0 Un altro problema comune: il metodo di pagamento non viene visualizzato<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Abbiamo inoltre riscontrato casi in cui un metodo di pagamento come Comfino non compariva in SuperCheckout, nonostante il modulo di pagamento fosse installato e configurato correttamente.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Questo tipo di problema dovrebbe essere indagato in modo sistematico.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Dai un&#8217;occhiata:<\/span><\/p>\n<h3><strong>9.1 Il modulo \u00e8 attivo?<\/strong><\/h3>\n<pre><b>$this-&gt;active<\/b><\/pre>\n<h3><strong>9.2 La valuta \u00e8 supportata?<\/strong><\/h3>\n<pre><b>$this-&gt;checkCurrency($params['cart'])<\/b><\/pre>\n<h3><strong>9.3 Il Paese \u00e8 sostenuto?<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Alcuni gateway limitano i metodi di pagamento in base al paese del cliente.<\/span><\/p>\n<h3><strong>9.4 L&#8217;importo totale del carrello rientra nei limiti previsti dal gateway di pagamento?<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">I valori minimi e massimi delle transazioni possono impedire la visualizzazione di un metodo.<\/span><\/p>\n<h3><strong>9.5 Il vettore \u00e8 supportato?<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Alcuni moduli di pagamento limitano i metodi di pagamento in base all&#8217;operatore telefonico.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<h3><strong>9.6 Il filtraggio OPC \u00e8 il metodo?<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Il modulo di pagamento pu\u00f2 restituire metodi validi che vengono raccolti, filtrati o visualizzati.<\/span><span style=\"font-weight: 400;\"> Ma l&#8217;OPC pu\u00f2 ancora modificare le modalit\u00e0 di pagamento<\/span><\/p>\n<h3><strong>9.7 JavaScript sta nascondendo o sostituendo l&#8217;elemento?<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Un metodo di pagamento pu\u00f2 essere tecnicamente restituito da PHP, ma non essere comunque visibile nella pagina di pagamento finale.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Ecco perch\u00e9 gli strumenti per sviluppatori del browser sono importanti quanto i log PHP durante il debug delle integrazioni di pagamento.<\/span><\/p>\n<h2><strong>10.0 Agganci a cui dobbiamo assolutamente prestare attenzione<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Un&#8217;integrazione di pagamento personalizzata non dovrebbe essere considerata come un&#8217;implementazione a singolo hook.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">I punti di aggancio specifici dipendono dall&#8217;architettura del gateway e del processo di pagamento, ma alcuni sono particolarmente importanti.<\/span><\/p>\n<h3>10.1 Opzioni di pagamento<\/h3>\n<p><span style=\"font-weight: 400;\">Questo \u00e8 il principale elemento che permette di visualizzare il metodo di pagamento al momento del checkout.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00c8 responsabile del ritorno<\/span> opzioni di pagamento <span style=\"font-weight: 400;\">oggetti.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">I controlli tipici includono:<\/span><\/p>\n<pre><b>se (!$this-&gt;active) { restituisci [];<\/b>\r\n<b>}<\/b>\r\n<b>se (!$this-&gt;checkCurrency($params['cart'])) { restituisci [];<\/b>\r\n<b>}<\/b><\/pre>\n<p><span style=\"font-weight: 400;\">Successivamente, possono essere applicate ulteriori restrizioni specifiche per ciascun gateway.<\/span><\/p>\n<h3>10.2 Resi di pagamento<\/h3>\n<p><span style=\"font-weight: 400;\">Viene utilizzato dopo che il cliente ha completato o \u00e8 tornato dal flusso di pagamento. Pu\u00f2 visualizzare:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">riferimento dell&#8217;ordine<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">stato del pagamento<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">istruzioni di pagamento aggiuntive<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">informazioni specifiche del gateway<\/span><\/li>\n<\/ul>\n<h3>10.3 actionPresentPaymentOptions<\/h3>\n<p><span style=\"font-weight: 400;\">Questo aggancio diventa particolarmente interessante quando sono coinvolti pi\u00f9 moduli di pagamento e un OPC.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Funziona sulle opzioni di pagamento raccolte e pu\u00f2 essere utile quando il sistema di pagamento deve esaminare o modificare l&#8217;intera raccolta di opzioni di pagamento.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Questo \u00e8 diverso dall&#8217;implementazione delle opzioni di pagamento di un singolo gateway<\/span> <span style=\"font-weight: 400;\">gancio.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">La distinzione \u00e8 importante:<\/span><\/p>\n<pre><b>Opzioni di pagamento<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Ogni modulo di pagamento contribuisce con la sua opzione<\/b>\r\n<b>azionePresentPaymentOptions<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Le opzioni di pagamento assemblate possono essere elaborate<\/b><\/pre>\n<p><span style=\"font-weight: 400;\">Durante il debug della compatibilit\u00e0 OPC, comprendere dove vengono raccolte le opzioni di pagamento e dove vengono infine presentate pu\u00f2 fare la differenza tra individuare rapidamente il problema e impiegare ore all&#8217;interno del modulo gateway.<\/span><\/p>\n<h2><strong>11.0 Creazione dell&#8217;ordine: non fidarti mai del browser<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Una volta che il pagamento raggiunge il gateway, il passaggio successivo cruciale \u00e8 la creazione dell&#8217;ordine. Il metodo PrestaShop pi\u00f9 importante in questo caso \u00e8:<\/span><\/p>\n<pre>validateOrder()<\/pre>\n<p><span style=\"font-weight: 400;\">Un esempio semplificato \u00e8 il seguente:<\/span><\/p>\n<pre><b>$this-&gt;module-&gt;validateOrder(<\/b>\r\n<b>$cart-&gt;id, Configurazione::get('PS_OS_PAYMENT'),<\/b>\r\n<b>$importoPagato,<\/b>\r\n<b>Metodo di pagamento,<\/b>\r\n<b>$messaggio, [],<\/b>\r\n<b>nullo, falso,<\/b>\r\n<b>$customer-&gt;chiave_sicura<\/b>\r\n<b>);<\/b><\/pre>\n<p><span style=\"font-weight: 400;\">Ci sono tre valori che meritano particolare attenzione:<\/span><\/p>\n<h3><strong>11.1 ID carrello<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Il carrello deve appartenere al cliente\/sessione previsto e deve essere valido.<\/span><\/p>\n<h3><strong>11.2 Importo del pagamento<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Non utilizzare alla cieca:<\/span><\/p>\n<pre><b>$cart-&gt;getOrderTotal()<\/b><\/pre>\n<p><span style=\"font-weight: 400;\">come prova che il gateway ha ricevuto tale importo.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">L&#8217;importo deve essere verificato confrontandolo con la risposta del gateway.<\/span><\/p>\n<h3><strong>11.3 Chiave sicura<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">La cliente <\/span><span style=\"font-weight: 400;\">deve essere correttamente associato al flusso del carrello\/ordine.<\/span><\/p>\n<h2><strong>12.0 I webhook devono essere idempotenti<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Un gateway di pagamento pu\u00f2 inviare lo stesso webhook pi\u00f9 di una volta. Ad esempio:<\/span><\/p>\n<pre><b>Gateway<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>webhook<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Il tuo server<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>200 risposta<\/b><\/pre>\n<p><span style=\"font-weight: 400;\">Se la risposta non viene ricevuta:<\/span><\/p>\n<pre><b>Gateway<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>webhook<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Il tuo server<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Scelta persa<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Tentativi di accesso al gateway<\/b><\/pre>\n<p><span style=\"font-weight: 400;\">Se l&#8217;integrazione crea un ordine ogni volta che riceve un webhook, si possono verificare ordini duplicati. Pertanto, la funzione di callback dovrebbe verificare se il carrello contiene gi\u00e0 un ordine prima di crearne un altro. Concettualmente:<\/span><\/p>\n<pre><b>se ($cart-&gt;OrderExists()) {<\/b>\r\n<b>\/\/ Gi\u00e0 elaborato<\/b>\r\n<b>\/\/ Restituisce una risposta positiva<\/b>\r\n<b>}<\/b><\/pre>\n<p><span style=\"font-weight: 400;\">Il gestore del webhook deve essere progettato per elaborare in modo sicuro le notifiche ripetute.<\/span><\/p>\n<h2><strong>13.0 Pagamento sincrono vs asincrono<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Non tutti i gateway di pagamento confermano il pagamento immediatamente.<\/span><\/p>\n<h3><strong>13.1 Sincrono<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Il gateway conferma immediatamente la transazione.<\/span><\/p>\n<pre><b> <\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Gateway<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Pagamento approvato<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>validateOrder()<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>PS_OS_PAYMENT<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Conferma dati<\/b><\/pre>\n<h3><strong>13.2 Asincrono<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Il cliente pu\u00f2 effettuare il reso prima della ricezione della conferma di pagamento finale.<\/span><\/p>\n<pre><b> <\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Gateway<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Ritorna al negozio<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Ordine in attesa<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>webhook<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Verifica il pagamento<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Stato dell'ordine di modifica<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Pagamento accettato<\/b><\/pre>\n<p><span style=\"font-weight: 400;\">Per i gateway asincroni, utilizzare uno stato di ordine in sospeso dedicato \u00e8 spesso pi\u00f9 sicuro che contrassegnare immediatamente l&#8217;ordine come pagato.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Una volta che il webhook conferma il pagamento:<\/span><\/p>\n<pre><b>$history = nuovo OrderHistory();<\/b>\r\n<b>$history-&gt;id_order = (int) $order-&gt;id;<\/b>\r\n<b>$history-&gt;changeIdOrderState( Configuration::get('PS_OS_PAYMENT'),<\/b>\r\n<b>$ordine<\/b>\r\n<b>);<\/b>\r\n<b>$history-&gt;addWithemail(true);<\/b><\/pre>\n<p><span style=\"font-weight: 400;\">Ci\u00f2 garantisce che la transizione di stato dell&#8217;ordine avvenga tramite il meccanismo di cronologia degli ordini di PrestaShop, anzich\u00e9 limitarsi a modificare il valore nel database.<\/span><\/p>\n<h2><strong>14.0 Una delle tecniche di debug pi\u00f9 utili: confrontare i flussi di checkout<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Quando un metodo di pagamento funziona nella procedura di pagamento predefinita ma non in OPC, consigliamo di confrontare l&#8217;intero flusso.<\/span><\/p>\n<h3><strong>Passaggio 1: Verifica PHP<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">\u00c8 hookPaymentOptions() <\/span><span style=\"font-weight: 400;\">eseguito?<\/span><\/p>\n<h3><strong>Passaggio 2: Esamina le opzioni restituite<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Il modulo di pagamento restituisce effettivamente un<\/span> opzione di pagamento<span style=\"font-weight: 400;\">?<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<h3><strong>Passaggio 3: Controlla il carrello<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Confronta:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">totale<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">valuta<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">cliente<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">nazione<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">vettore<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">sconti<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">le tasse<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">spedizione<\/span><\/li>\n<\/ul>\n<h3><strong>Passaggio 4: Controlla il browser<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Cercare:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Errori JavaScript<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">elementi DOM mancanti<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">richieste AJAX<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">richieste fallite<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">errori iframe<\/span><\/li>\n<\/ul>\n<h3><strong>Passaggio 5: Controllare l&#8217;OPC<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Determina se SuperCheckout \u00e8:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">filtraggio dell&#8217;opzione di pagamento<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">sostituendo il suo HTML<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">aggiornamento della sezione pagamenti<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">modifica del carrello prima dell&#8217;esecuzione del modulo di pagamento<\/span><\/li>\n<\/ul>\n<h3><strong>Passaggio 6: Controllare il gateway<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Solo dopo aver confermato il flusso di cassa locale, l&#8217;indagine dovrebbe approfondire i seguenti aspetti:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Autenticazione API<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">payload della richiesta<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">firma<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">risposta<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">webhook<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">registri del gateway<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Questo approccio a livelli \u00e8 molto pi\u00f9 veloce rispetto all&#8217;avvio ogni volta tramite l&#8217;API del gateway.<\/span><\/p>\n<h2><strong>15.0 Problemi comuni di integrazione dei pagamenti che abbiamo riscontrato<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Il lavoro di compatibilit\u00e0 nel mondo reale solitamente mette in luce problemi che non sono evidenti dalla documentazione del gateway.<\/span><\/p>\n<h3><strong>15.1 L&#8217;opzione di pagamento scompare<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Cause possibili:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">valuta non supportata<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">restrizione per paese<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">importo del carrello al di fuori dei limiti del gateway<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">restrizione del vettore<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Filtro OPC<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">configurazione del modulo di pagamento<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">JavaScript nasconde il metodo<\/span><\/li>\n<\/ul>\n<h3><strong>15.2 BLIK o un&#8217;altra opzione di pagamento appare e scompare<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Cause possibili:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">aggiornamento AJAX<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">ri-rendering dell&#8217;opzione di pagamento<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Inizializzazione JavaScript<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Totale carrello in modifica<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Ricalcolo dei requisiti di ammissibilit\u00e0 al gateway<\/span><\/li>\n<\/ul>\n<h3><strong>15.3 L&#8217;elenco delle banche non si espande<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Spesso si indaga su:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Errori JavaScript<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">elementi DOM sostituiti dinamicamente<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">gestori di eventi collegati prima dell&#8217;aggiornamento OPC<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Inizializzazione JavaScript del fornitore di servizi di pagamento<\/span><\/li>\n<\/ul>\n<h3><strong>15.4 L&#8217;iframe scompare<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Indaga:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">aggiornamento del checkout<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Inizializzazione dell&#8217;iframe<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">sostituzione DOM<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Esecuzione di JavaScript dopo gli aggiornamenti AJAX<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/li>\n<\/ul>\n<h3><strong>15.5 Il pagamento \u00e8 andato a buon fine, ma l&#8217;ordine rimane in sospeso<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Dai un&#8217;occhiata:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">URL del webhook<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">consegna webhook<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Verifica della firma<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">ricerca carrello\/ordine<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">transizione di stato dell&#8217;ordine<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">autenticazione tramite callback<\/span><\/li>\n<\/ul>\n<h3><strong>15.6 Il metodo di pagamento funziona nel checkout predefinito ma non in OPC<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Questo \u00e8 un forte indizio che il problema potrebbe risiedere nell&#8217;interazione tra il modulo di pagamento e l&#8217;OPC, piuttosto che nell&#8217;API del gateway stesso.<\/span><\/p>\n<h2><strong>16.0 Requisiti di sicurezza per un modulo di pagamento<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">I moduli di pagamento gestiscono operazioni sensibili, quindi la sicurezza non pu\u00f2 essere considerata un miglioramento opzionale. Come minimo:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Convalida le firme delle callback.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Convalidare il rapporto carrello\/cliente.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Usa HTTPS.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Convalidare i certificati TLS.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Non fidarti mai dello stato del pagamento fornito esclusivamente dal browser.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Non memorizzare mai i dati grezzi delle carte di credito a meno che l&#8217;architettura e i requisiti di conformit\u00e0 non lo prevedano esplicitamente.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Non registrare informazioni di pagamento sensibili.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\">\n<pre><span style=\"font-weight: 400;\">Evitare serialize() e unserialize() <\/span>\/ per dati esterni non attendibili.<\/pre>\n<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Convalida ed effettua il casting dei valori in ingresso.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Proteggi gli endpoint AJAX e di callback personalizzati.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Utilizzare token sicuri ove opportuno.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Rendere idempotente l&#8217;elaborazione dei webhook.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Una pagina di conferma del pagamento non costituisce prova dell&#8217;avvenuto pagamento.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">La risposta verificata dal server del gateway \u00e8 ci\u00f2 che dovrebbe determinare se l&#8217;ordine \u00e8 considerato pagato.<\/span><\/p>\n<h2><strong>17.0 Cosa cambia quando si supportano pi\u00f9 moduli di pagamento?<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Un&#8217;altra lezione appresa dal lavoro sulla compatibilit\u00e0 OPC \u00e8 che l&#8217;aggiunta di un secondo o terzo modulo di pagamento pu\u00f2 far emergere problemi che non erano visibili quando esisteva un solo metodo di pagamento.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Per esempio:<\/span><\/p>\n<pre><b>PayPal <\/b><b>Payu<\/b>\r\n<b>Comfino<\/b>\r\n<b>SimplyLease<\/b>\r\n<b>Bonifico bancario<\/b><\/pre>\n<p><span style=\"font-weight: 400;\">possono tutti contribuire con opzioni di pagamento allo stesso checkout. Il checkout deve quindi gestire diverse:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">strutture HTML<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">JavaScript<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Requisiti dell&#8217;iframe<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">redirect<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Flussi API<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">regole di ammissibilit\u00e0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">importi minimi\/massimi<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">callback asincroni<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Una modifica apportata a un metodo di pagamento pu\u00f2 accidentalmente influire su un altro. Per questo motivo, le correzioni di compatibilit\u00e0 dei metodi di pagamento dovrebbero essere circoscritte.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Ad esempio, invece di modificare globalmente l&#8217;intera logica di elaborazione delle opzioni di pagamento, \u00e8 possibile identificare il metodo di pagamento specifico e applicare la gestione della compatibilit\u00e0 solo dove necessario.<\/span><\/p>\n<h2><strong>18.0 I test dovrebbero includere scenari di carrello reali<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Testare un gateway di pagamento con un semplice prodotto da 10 \u20ac non \u00e8 sufficiente. Una matrice di test adeguata dovrebbe includere:<\/span><\/p>\n<table class=\"table table-hover\">\n<tbody>\n<tr>\n<td><strong>Scenario<\/strong><\/td>\n<td><strong>Cosa verificare<\/strong><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Singolo prodotto<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Viene visualizzata l&#8217;opzione di pagamento<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Pi\u00f9 prodotti<\/span><\/td>\n<td><span style=\"font-weight: 400;\">L&#8217;importo corretto raggiunge il gateway<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Codice Sconto<\/span><\/td>\n<td><span style=\"font-weight: 400;\">L&#8217;importo finale da pagare \u00e8 corretto<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Spese di spedizione<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Il gateway riceve il totale corretto<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">IVA<\/span><\/td>\n<td><span style=\"font-weight: 400;\">L&#8217;importo del gateway corrisponde all&#8217;ordine<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Importo minimo del gateway<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Il metodo appare\/scompare correttamente<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Importo massimo del gateway<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Il metodo appare\/scompare correttamente<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Valuta non supportata<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Il metodo \u00e8 nascosto<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Paese non supportato<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Il metodo \u00e8 nascosto<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Pagamento predefinito<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Il pagamento funziona<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">OPC<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Il pagamento funziona<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Cassa mobile<\/span><\/td>\n<td><span style=\"font-weight: 400;\">L&#8217;interfaccia utente funziona<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Pagamento non riuscito<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Stato dell&#8217;ordine\/pagamento corretto<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Pagamento riuscito<\/span><\/td>\n<td><span style=\"font-weight: 400;\">L&#8217;ordine \u00e8 stato creato correttamente<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Tentativo di riconnessione webhook<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Nessun ordine duplicato<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">abbandono del cliente<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Nessun ordine pagato in modo errato<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Timeout del gateway<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Gestione corretta degli errori\/in sospeso<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span style=\"font-weight: 400;\">Per le integrazioni OPC, testa anche gli aggiornamenti del checkout. Modifica:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">indirizzo<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">vettore<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">nazione<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">metodo di pagamento<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">quantit\u00e0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">sconto<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">e verificare che le opzioni di pagamento rimangano corrette dopo ogni aggiornamento.<\/span><\/p>\n<h2><strong>19.0 Un approccio pratico allo sviluppo<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">In base ai problemi che si presentano comunemente nelle integrazioni reali, un ordine di sviluppo pi\u00f9 sicuro \u00e8 il seguente:<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<h3><strong>19.1 Rendere il gateway compatibile con il checkout predefinito di PrestaShop<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Innanzitutto, stabilisci che:<\/span><\/p>\n<pre><b>Opzione di pagamento<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Richiesta del gateway<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Risposta del gateway<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>validateOrder()<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Conferma dati<\/b><\/pre>\n<p><span style=\"font-weight: 400;\">funziona correttamente.<\/span><\/p>\n<h3><strong>19.2 Aggiungere l&#8217;elaborazione di callback\/webhook<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Non rimandare la conferma asincrona alla fine.<\/span><\/p>\n<h3><strong>19.3 Aggiungere una corretta gestione dello stato dell&#8217;ordine<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Test:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">il successo<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">fallimento<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">in attesa di<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">timeout<\/span><\/li>\n<\/ul>\n<h3><strong>19.4 Test con carrelli realistici<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Utilizza sconti, spese di spedizione, tasse, valute diverse e totali diversi.<\/span><\/p>\n<h3><strong>19.5 Integrazione con OPC<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Solo dopo che il flusso di base del gateway si sar\u00e0 stabilizzato, si dovrebbe valutare la compatibilit\u00e0 con SuperCheckout.<\/span><\/p>\n<h3><strong>19.6 Testare JavaScript e gli aggiornamenti dinamici<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Ci\u00f2 \u00e8 particolarmente importante per i moduli di pagamento incorporati, gli iframe, le interfacce BLIK\/di selezione bancaria e altri componenti di pagamento interattivi.<\/span><\/p>\n<h3><strong>19.7 Testa tutti i metodi di pagamento contemporaneamente<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Un sistema di pagamento che supporta cinque metodi di pagamento deve essere testato come un sistema unitario, non come cinque moduli isolati.<\/span><\/p>\n<h2><strong>20.0 \u00c8 meglio creare un gateway personalizzato o utilizzare un modulo esistente?<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Non tutti i gateway giustificano un&#8217;integrazione personalizzata. Un modulo personalizzato ha senso quando:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">il gateway \u00e8 regionale o di nicchia<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">non esiste un modulo PrestaShop mantenuto<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">il gateway richiede una logica aziendale personalizzata<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">\u00e8 necessario un flusso di lavoro di abbonamento o di regolamento specifico<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Hai bisogno di funzionalit\u00e0 che i moduli esistenti non possono fornire<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Ma creare un&#8217;integrazione di pagamento significa anche assumersi la responsabilit\u00e0 della manutenzione. PrestaShop cambia.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">PHP cambia. Le API del gateway cambiano.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">I requisiti di sicurezza cambiano. I moduli di checkout cambiano.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">E alla fine il fornitore di servizi di pagamento apporta una modifica che compromette un&#8217;integrazione altrimenti stabile.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Per i gateway di pagamento pi\u00f9 diffusi, un modulo consolidato e ben mantenuto pu\u00f2 quindi risultare significativamente pi\u00f9 economico rispetto al mantenimento di un codice di pagamento personalizzato per diversi anni.<\/span><\/p>\n<h2><strong>21.0 La lezione pi\u00f9 importante dall&#8217;integrazione dei pagamenti di PrestaShop<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">La lezione pi\u00f9 importante che ho imparato lavorando con i gateway di pagamento \u00e8 che l&#8217;API spesso non \u00e8 la parte pi\u00f9 difficile. Invio:<\/span><\/p>\n<pre><b>Richiesta API <\/b><span style=\"font-weight: 400;\">\u2192 <\/span><b>Risposta API<\/b><\/pre>\n<p><span style=\"font-weight: 400;\">Di solito \u00e8 semplice.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<p><span style=\"font-weight: 400;\">La parte difficile \u00e8 tutto ci\u00f2 che la circonda:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">\u250c\u2500\u2500 <\/span><b>Regole valutarie<\/b>\r\n<span style=\"font-weight: 400;\">\u251c\u2500\u2500 <\/span><b>Regole del Paese<\/b>\r\n<span style=\"font-weight: 400;\">\u251c\u2500\u2500 <\/span><b>Importo del carrello<\/b>\r\n<span style=\"font-weight: 400;\">\u251c\u2500\u2500 <\/span><b>Restrizioni del vettore<\/b>\r\n<span style=\"font-weight: 400;\">\u251c\u2500\u2500 <\/span><b>OPC<\/b>\r\n<span style=\"font-weight: 400;\">\u251c\u2500\u2500 <\/span><b>JavaScript<\/b>\r\n<span style=\"font-weight: 400;\">\u251c\u2500\u2500 <\/span><b>iframe<\/b>\r\n<span style=\"font-weight: 400;\">\u251c\u2500\u2500 <\/span><b>Aggiornamenti AJAX<\/b>\r\n<span style=\"font-weight: 400;\">\u251c\u2500\u2500 <\/span><b>Webhooks<\/b>\r\n<span style=\"font-weight: 400;\">\u251c\u2500\u2500 <\/span><b>Stati ordinati<\/b>\r\n<span style=\"font-weight: 400;\">\u2514\u2500\u2500 <\/span><b>Notifiche duplicate<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>  <\/b><span style=\"font-weight: 400;\">\u2192 <\/span><b>Concludi ordine <\/b><span style=\"font-weight: 400;\">\u2192 <\/span><b>Modulo di pagamento <\/b><span style=\"font-weight: 400;\">\u2192 <\/span><b>Gateway<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Creazione dell'ordine<\/b>\r\n<span style=\"font-weight: 400;\">\u2193<\/span>\r\n<b>Conferma dell'ordine<\/b><\/pre>\n<p><span style=\"font-weight: 400;\">Un&#8217;integrazione di pagamento ha successo solo quando l&#8217;intera catena si comporta in modo coerente.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Questo \u00e8 anche il motivo per cui un problema come &#8220;BLIK non \u00e8 presente&#8221; o &#8220;l&#8217;elenco delle banche non si apre&#8221; non dovrebbe essere immediatamente considerato un problema dell&#8217;API del gateway.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">La causa effettiva potrebbe essere il calcolo del totale del carrello, la verifica dell&#8217;idoneit\u00e0 del metodo di pagamento, il rendering OPC, l&#8217;inizializzazione JavaScript o un aggiornamento AJAX che sostituisce l&#8217;interfaccia di pagamento.<\/span><\/p>\n<h2><strong>22.0 Lista di controllo finale per un gateway di pagamento PrestaShop personalizzato<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Prima di considerare l&#8217;integrazione completata, verificare:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Il modulo di pagamento si estende<\/span> <strong>Modulo di pagamento<\/strong>.<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><b>opzioni di pagamento <\/b><span style=\"font-weight: 400;\">\u00e8 implementato correttamente.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><b>pagamentoRestituzione <\/b><span style=\"font-weight: 400;\">viene implementato laddove necessario.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Le opzioni di pagamento utilizzano<\/span> Opzioni di pagamento.<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Vengono verificate le restrizioni valutarie.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Vengono verificate le restrizioni relative al Paese e all&#8217;operatore telefonico, ove applicabili.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">I totali del carrello sono stati convalidati.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Le risposte del gateway vengono verificate.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Le firme delle callback vengono validate.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\"><strong>ValidateOrder()<\/strong> La chiamata viene effettuata solo dopo la corretta verifica del pagamento.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">L&#8217;importo utilizzato per l&#8217;ordine viene convalidato in base alla risposta del gateway.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">I webhook sono idempotenti.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Le notifiche duplicate non creano ordini duplicati.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Vengono utilizzati gli stati di ordine corretti.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">I pagamenti non andati a buon fine e quelli in sospeso vengono gestiti separatamente.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">I dati di pagamento sensibili non vengono mai registrati o memorizzati inutilmente.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">L&#8217;utilizzo di HTTPS \u00e8 obbligatorio.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Il processo di checkout predefinito di PrestaShop \u00e8 stato testato.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">L&#8217;OPC \u00e8 stato testato separatamente.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">JavaScript \u00e8 stato testato dopo l&#8217;aggiornamento della pagina di pagamento tramite AJAX.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Sono stati testati gli iframe e gli elementi di pagamento interattivi.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Sono stati testati insieme diversi moduli di pagamento.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Sono stati testati carrelli realistici con sconti e spedizione.<\/span><\/li>\n<\/ul>\n<h2><strong>Conclusione<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Un gateway di pagamento personalizzato in PrestaShop \u00e8 molto pi\u00f9 di una semplice integrazione API.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">L&#8217;API \u00e8 solo una parte dell&#8217;implementazione. La vera sfida ingegneristica inizia quando il modulo di pagamento deve coesistere con il checkout di PrestaShop, un OPC come SuperCheckout, altri moduli di pagamento, JavaScript dinamico, ricalcoli del carrello e callback asincroni del gateway.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">La nostra esperienza con i problemi di compatibilit\u00e0 dei pagamenti ha rafforzato un approccio importante: individuare sempre il punto in cui si verifica l&#8217;errore prima di modificare il codice.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Se il metodo di pagamento non viene restituito da PHP, esaminare il modulo di pagamento e le relative regole di idoneit\u00e0. Se PHP lo restituisce ma il cliente non lo visualizza, esaminare OPC e il rendering frontend. Se l&#8217;interfaccia utente viene visualizzata ma non risponde, esaminare gli aggiornamenti JavaScript e AJAX. Se il pagamento va a buon fine ma l&#8217;ordine rimane in sospeso, esaminare il flusso di callback e lo stato dell&#8217;ordine.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Questo approccio \u00e8 molto pi\u00f9 affidabile rispetto al presupporre che ogni problema di pagamento sia un problema dell&#8217;API.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Per gli sviluppatori che lavorano sull&#8217;integrazione dei pagamenti in PrestaShop, l&#8217;obiettivo non dovrebbe essere semplicemente quello di far s\u00ec che un gateway accetti una transazione. L&#8217;obiettivo \u00e8 rendere affidabile l&#8217;intero ciclo di vita del pagamento, dalla prima visualizzazione del checkout fino allo stato finale di ordine verificato, anche quando sono coinvolti pi\u00f9 metodi di pagamento e un OPC personalizzato.<\/span><\/p>\n<div class=\"thecontent\">\n<div class=\"thecontent\">\n<p>Se hai domande o hai bisogno di assistenza per le prestazioni o la migrazione del tuo sito web, i nostri esperti sono qui per aiutarti. Contatta il team di Knowband all&#8217;indirizzo\u00a0<a href=\"\/it\/cdn-cgi\/l\/email-protection#e695939696899492a68d88899184878882c885898b\" target=\"_blank\" rel=\"noopener\"><span class=\"__cf_email__\" data-cfemail=\"f3808683839c8187b3989d9c8491929d97dd909c9e\">[email protected]<\/span><\/a> Oggi stesso potrete usufruire di plugin per eCommerce affidabili e personalizzati in base alle vostre esigenze.<\/p>\n<h2>\ud83d\udc49 <b>Scopri il modulo con la nostra guida video<\/b><\/h2>\n<p><iframe loading=\"lazy\" title=\"Modulo PrestaShop One Page SuperCheckout di Knowband - Tutorial Completo in Italiano\" width=\"648\" height=\"365\" src=\"https:\/\/www.youtube.com\/embed\/cIyRBfkvEAw?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Integrare un gateway di pagamento in PrestaShop pu\u00f2 sembrare semplice sulla carta. Il gateway fornisce la documentazione API, le credenziali di accesso alla sandbox, le chiavi di autenticazione, gli URL di callback e alcuni endpoint. Il modulo PrestaShop invia quindi la richiesta di pagamento, riceve la risposta, crea l&#8217;ordine e reindirizza il cliente alla pagina [&hellip;]<\/p>\n","protected":false},"author":43,"featured_media":841334,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_kbui_enabled":"","footnotes":""},"categories":[53675,4,3241,218],"tags":[53348,53246,53350,53362,53248,53352,53351,53357,53360,39332,53359,53344,53342,53349,53341,53345,53343,53369,53367,34584,53365,53346,53347,53354,53363,53364,53247,53361,39318,39345,53229,27683,53353,53366,53249,53358,53230,53368,53356,53355],"class_list":["post-841322","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-commercio-elettronico","category-ecommerce-blog","category-prestashop-it","category-sin-categorizar","tag-api-di-pagamento-prestashop","tag-blik-prestashop","tag-cassa-di-prestashop","tag-checkout-javascript-di-prestashop","tag-comfino-prestashop","tag-compatibilit-con-i-gateway-di-pagamento","tag-compatibilit-dei-pagamenti-prestashop","tag-creazione-ordini-prestashop","tag-elaborazione-dei-pagamenti-prestashop","tag-enviar-clave-de-servicio-web-de-forma-segura","tag-flusso-di-pagamento-prestashop","tag-gateway-di-pagamento-personalizzato-prestashop","tag-gateway-di-pagamento-prestashop","tag-integrazione-api-del-gateway-di-pagamento","tag-integrazione-api-di-prestashop","tag-integrazione-dei-pagamenti-prestashop","tag-integrazione-del-gateway-di-pagamento-prestashop","tag-integrazione-del-gateway-prestashop","tag-integrazione-di-pagamenti-personalizzati","tag-metodi-di-pagamento-prestashop","tag-modulo-di-pagamento-incorporato","tag-modulo-di-pagamento-personalizzato-per-prestashop","tag-modulo-di-pagamento-prestashop","tag-opzioni-di-pagamento-prestashop","tag-pagamento-ajax-per-prestashop","tag-pagamento-tramite-iframe-prestashop","tag-payu-prestashop","tag-personalizzazione-del-checkout-di-prestashop","tag-prestashop-api-integration","tag-prestashop-opc","tag-prestashop-pagamento-in-una-pagina","tag-risoluzione-dei-problemi-di-pagamento-di-prestashop","tag-sicurezza-dei-pagamenti-prestashop","tag-simplylease-prestashop","tag-stato-dellordine-prestashop","tag-supercheckout-prestashop","tag-sviluppo-dei-pagamenti-prestashop","tag-webhook-del-gateway-di-pagamento","tag-webhook-di-prestashop"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Integrazione di un gateway di pagamento in PrestaShop: Guida a API e OPC<\/title>\n<meta name=\"description\" content=\"Scopri come integrare un gateway di pagamento personalizzato in PrestaShop, gestire API, webhook e stati dell&#039;ordine, e risolvere i problemi di compatibilit\u00e0 con l&#039;OPC (One Page Checkout).\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.knowband.com\/blog\/it\/ecommerce-blog\/prestashop-payment-gateway-integration\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Integrazione di un gateway di pagamento in PrestaShop: Guida a API e OPC\" \/>\n<meta property=\"og:description\" content=\"Scopri come integrare un gateway di pagamento personalizzato in PrestaShop, gestire API, webhook e stati dell&#039;ordine, e risolvere i problemi di compatibilit\u00e0 con l&#039;OPC (One Page Checkout).\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.knowband.com\/blog\/it\/ecommerce-blog\/prestashop-payment-gateway-integration\/\" \/>\n<meta property=\"og:site_name\" content=\"Knowband Blog | Ecommerce Modules\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Knowband\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-09T12:21:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-30T08:38:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.knowband.com\/blog\/wp-content\/uploads\/2026\/09\/Italian-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"760\" \/>\n\t<meta property=\"og:image:height\" content=\"300\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Sophie\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@KnowbandPlugin\" \/>\n<meta name=\"twitter:site\" content=\"@KnowbandPlugin\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sophie\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/it\\\/ecommerce-blog\\\/prestashop-payment-gateway-integration\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/it\\\/ecommerce-blog\\\/prestashop-payment-gateway-integration\\\/\"},\"author\":{\"name\":\"Sophie\",\"@id\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/fr\\\/#\\\/schema\\\/person\\\/ca485d026e41cbf45ae99b67d0c9ac74\"},\"headline\":\"Integrazione di un gateway di pagamento personalizzato in PrestaShop: requisiti tecnici, flusso API e sfide OPC reali\",\"datePublished\":\"2026-09-09T12:21:13+00:00\",\"dateModified\":\"2026-09-30T08:38:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/it\\\/ecommerce-blog\\\/prestashop-payment-gateway-integration\\\/\"},\"wordCount\":3930,\"publisher\":{\"@id\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/fr\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/it\\\/ecommerce-blog\\\/prestashop-payment-gateway-integration\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/Italian-1.jpg\",\"keywords\":[\"API di pagamento PrestaShop\",\"BLIK PrestaShop\",\"Cassa di PrestaShop\",\"Checkout JavaScript di PrestaShop\",\"Comfino PrestaShop\",\"compatibilit\u00e0 con i gateway di pagamento\",\"Compatibilit\u00e0 dei pagamenti PrestaShop\",\"creazione ordini PrestaShop\",\"Elaborazione dei pagamenti PrestaShop\",\"Enviar clave de servicio web de forma segura\",\"Flusso di pagamento PrestaShop\",\"gateway di pagamento personalizzato PrestaShop\",\"Gateway di pagamento PrestaShop\",\"integrazione API del gateway di pagamento\",\"Integrazione API di PrestaShop\",\"Integrazione dei pagamenti PrestaShop\",\"Integrazione del gateway di pagamento PrestaShop\",\"Integrazione del gateway PrestaShop\",\"integrazione di pagamenti personalizzati\",\"Metodi di pagamento PrestaShop\",\"modulo di pagamento incorporato\",\"modulo di pagamento personalizzato per PrestaShop\",\"Modulo di pagamento PrestaShop\",\"Opzioni di pagamento PrestaShop\",\"Pagamento AJAX per PrestaShop\",\"Pagamento tramite iframe PrestaShop\",\"PayU PrestaShop\",\"Personalizzazione del checkout di PrestaShop\",\"PrestaShop API integration\",\"PrestaShop API-Integration\",\"PrestaShop OPC\",\"Prestashop Pagamento in una pagina\",\"Risoluzione dei problemi di pagamento di PrestaShop\",\"Sicurezza dei pagamenti PrestaShop\",\"SimplyLease PrestaShop\",\"stato dell'ordine PrestaShop\",\"SuperCheckout PrestaShop\",\"sviluppo dei pagamenti PrestaShop\",\"webhook del gateway di pagamento\",\"Webhook di PrestaShop\"],\"articleSection\":[\"Commercio elettronico\",\"Ecommerce\",\"Prestashop\",\"Sin categorizar\"],\"inLanguage\":\"it-IT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/it\\\/ecommerce-blog\\\/prestashop-payment-gateway-integration\\\/\",\"url\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/it\\\/ecommerce-blog\\\/prestashop-payment-gateway-integration\\\/\",\"name\":\"Integrazione di un gateway di pagamento in PrestaShop: Guida a API e OPC\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/fr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/it\\\/ecommerce-blog\\\/prestashop-payment-gateway-integration\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/it\\\/ecommerce-blog\\\/prestashop-payment-gateway-integration\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/Italian-1.jpg\",\"datePublished\":\"2026-09-09T12:21:13+00:00\",\"dateModified\":\"2026-09-30T08:38:36+00:00\",\"description\":\"Scopri come integrare un gateway di pagamento personalizzato in PrestaShop, gestire API, webhook e stati dell'ordine, e risolvere i problemi di compatibilit\u00e0 con l'OPC (One Page Checkout).\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/it\\\/ecommerce-blog\\\/prestashop-payment-gateway-integration\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.knowband.com\\\/blog\\\/it\\\/ecommerce-blog\\\/prestashop-payment-gateway-integration\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/it\\\/ecommerce-blog\\\/prestashop-payment-gateway-integration\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/Italian-1.jpg\",\"contentUrl\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/Italian-1.jpg\",\"width\":760,\"height\":300,\"caption\":\"Comprendere l'integrazione di un gateway di pagamento personalizzato e la compatibilit\u00e0 OPC in PrestaShop\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/it\\\/ecommerce-blog\\\/prestashop-payment-gateway-integration\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/fr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Integrazione di un gateway di pagamento personalizzato in PrestaShop: requisiti tecnici, flusso API e sfide OPC reali\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/fr\\\/#website\",\"url\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/fr\\\/\",\"name\":\"Knowband Blog | Ecommerce Modules\",\"description\":\"Magento, Prestashop, Opencart, Shopify\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/fr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/fr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/fr\\\/#organization\",\"name\":\"Knowband Blog | Ecommerce Modules\",\"url\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/fr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/09\\\/cropped-knowband_logo-v2.png\",\"contentUrl\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/09\\\/cropped-knowband_logo-v2.png\",\"width\":153,\"height\":61,\"caption\":\"Knowband Blog | Ecommerce Modules\"},\"image\":{\"@id\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/Knowband\",\"https:\\\/\\\/x.com\\\/KnowbandPlugin\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/fr\\\/#\\\/schema\\\/person\\\/ca485d026e41cbf45ae99b67d0c9ac74\",\"name\":\"Sophie\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/wp-content\\\/plugins\\\/wp-user-avatar\\\/deprecated\\\/wp-user-avatar\\\/images\\\/wpua-96x96.png\",\"url\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/wp-content\\\/plugins\\\/wp-user-avatar\\\/deprecated\\\/wp-user-avatar\\\/images\\\/wpua-96x96.png\",\"contentUrl\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/wp-content\\\/plugins\\\/wp-user-avatar\\\/deprecated\\\/wp-user-avatar\\\/images\\\/wpua-96x96.png\",\"caption\":\"Sophie\"},\"description\":\"We are experts in the eCommerce industry, specializing in high-quality plugin development. With years of experience, we deliver reliable and feature-rich modules for platforms such as Magento, PrestaShop, OpenCart, and Shopify. In addition to ready-made plugins, we also provide custom module development and tailored modification services to meet unique business needs. Our team stays ahead of industry trends, ensuring every solution we build enhances store performance, user experience, and overall functionality. With a strong customer-centric approach, we have become a trusted partner for businesses seeking powerful and scalable eCommerce plugin solutions.\",\"url\":\"https:\\\/\\\/www.knowband.com\\\/blog\\\/it\\\/author\\\/titiksha-dwivedi\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Integrazione di un gateway di pagamento in PrestaShop: Guida a API e OPC","description":"Scopri come integrare un gateway di pagamento personalizzato in PrestaShop, gestire API, webhook e stati dell'ordine, e risolvere i problemi di compatibilit\u00e0 con l'OPC (One Page Checkout).","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.knowband.com\/blog\/it\/ecommerce-blog\/prestashop-payment-gateway-integration\/","og_locale":"it_IT","og_type":"article","og_title":"Integrazione di un gateway di pagamento in PrestaShop: Guida a API e OPC","og_description":"Scopri come integrare un gateway di pagamento personalizzato in PrestaShop, gestire API, webhook e stati dell'ordine, e risolvere i problemi di compatibilit\u00e0 con l'OPC (One Page Checkout).","og_url":"https:\/\/www.knowband.com\/blog\/it\/ecommerce-blog\/prestashop-payment-gateway-integration\/","og_site_name":"Knowband Blog | Ecommerce Modules","article_publisher":"https:\/\/www.facebook.com\/Knowband","article_published_time":"2026-09-09T12:21:13+00:00","article_modified_time":"2026-09-30T08:38:36+00:00","og_image":[{"width":760,"height":300,"url":"https:\/\/www.knowband.com\/blog\/wp-content\/uploads\/2026\/09\/Italian-1.jpg","type":"image\/jpeg"}],"author":"Sophie","twitter_card":"summary_large_image","twitter_creator":"@KnowbandPlugin","twitter_site":"@KnowbandPlugin","twitter_misc":{"Written by":"Sophie","Est. reading time":"18 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.knowband.com\/blog\/it\/ecommerce-blog\/prestashop-payment-gateway-integration\/#article","isPartOf":{"@id":"https:\/\/www.knowband.com\/blog\/it\/ecommerce-blog\/prestashop-payment-gateway-integration\/"},"author":{"name":"Sophie","@id":"https:\/\/www.knowband.com\/blog\/fr\/#\/schema\/person\/ca485d026e41cbf45ae99b67d0c9ac74"},"headline":"Integrazione di un gateway di pagamento personalizzato in PrestaShop: requisiti tecnici, flusso API e sfide OPC reali","datePublished":"2026-09-09T12:21:13+00:00","dateModified":"2026-09-30T08:38:36+00:00","mainEntityOfPage":{"@id":"https:\/\/www.knowband.com\/blog\/it\/ecommerce-blog\/prestashop-payment-gateway-integration\/"},"wordCount":3930,"publisher":{"@id":"https:\/\/www.knowband.com\/blog\/fr\/#organization"},"image":{"@id":"https:\/\/www.knowband.com\/blog\/it\/ecommerce-blog\/prestashop-payment-gateway-integration\/#primaryimage"},"thumbnailUrl":"https:\/\/www.knowband.com\/blog\/wp-content\/uploads\/2026\/09\/Italian-1.jpg","keywords":["API di pagamento PrestaShop","BLIK PrestaShop","Cassa di PrestaShop","Checkout JavaScript di PrestaShop","Comfino PrestaShop","compatibilit\u00e0 con i gateway di pagamento","Compatibilit\u00e0 dei pagamenti PrestaShop","creazione ordini PrestaShop","Elaborazione dei pagamenti PrestaShop","Enviar clave de servicio web de forma segura","Flusso di pagamento PrestaShop","gateway di pagamento personalizzato PrestaShop","Gateway di pagamento PrestaShop","integrazione API del gateway di pagamento","Integrazione API di PrestaShop","Integrazione dei pagamenti PrestaShop","Integrazione del gateway di pagamento PrestaShop","Integrazione del gateway PrestaShop","integrazione di pagamenti personalizzati","Metodi di pagamento PrestaShop","modulo di pagamento incorporato","modulo di pagamento personalizzato per PrestaShop","Modulo di pagamento PrestaShop","Opzioni di pagamento PrestaShop","Pagamento AJAX per PrestaShop","Pagamento tramite iframe PrestaShop","PayU PrestaShop","Personalizzazione del checkout di PrestaShop","PrestaShop API integration","PrestaShop API-Integration","PrestaShop OPC","Prestashop Pagamento in una pagina","Risoluzione dei problemi di pagamento di PrestaShop","Sicurezza dei pagamenti PrestaShop","SimplyLease PrestaShop","stato dell'ordine PrestaShop","SuperCheckout PrestaShop","sviluppo dei pagamenti PrestaShop","webhook del gateway di pagamento","Webhook di PrestaShop"],"articleSection":["Commercio elettronico","Ecommerce","Prestashop","Sin categorizar"],"inLanguage":"it-IT"},{"@type":"WebPage","@id":"https:\/\/www.knowband.com\/blog\/it\/ecommerce-blog\/prestashop-payment-gateway-integration\/","url":"https:\/\/www.knowband.com\/blog\/it\/ecommerce-blog\/prestashop-payment-gateway-integration\/","name":"Integrazione di un gateway di pagamento in PrestaShop: Guida a API e OPC","isPartOf":{"@id":"https:\/\/www.knowband.com\/blog\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.knowband.com\/blog\/it\/ecommerce-blog\/prestashop-payment-gateway-integration\/#primaryimage"},"image":{"@id":"https:\/\/www.knowband.com\/blog\/it\/ecommerce-blog\/prestashop-payment-gateway-integration\/#primaryimage"},"thumbnailUrl":"https:\/\/www.knowband.com\/blog\/wp-content\/uploads\/2026\/09\/Italian-1.jpg","datePublished":"2026-09-09T12:21:13+00:00","dateModified":"2026-09-30T08:38:36+00:00","description":"Scopri come integrare un gateway di pagamento personalizzato in PrestaShop, gestire API, webhook e stati dell'ordine, e risolvere i problemi di compatibilit\u00e0 con l'OPC (One Page Checkout).","breadcrumb":{"@id":"https:\/\/www.knowband.com\/blog\/it\/ecommerce-blog\/prestashop-payment-gateway-integration\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.knowband.com\/blog\/it\/ecommerce-blog\/prestashop-payment-gateway-integration\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.knowband.com\/blog\/it\/ecommerce-blog\/prestashop-payment-gateway-integration\/#primaryimage","url":"https:\/\/www.knowband.com\/blog\/wp-content\/uploads\/2026\/09\/Italian-1.jpg","contentUrl":"https:\/\/www.knowband.com\/blog\/wp-content\/uploads\/2026\/09\/Italian-1.jpg","width":760,"height":300,"caption":"Comprendere l'integrazione di un gateway di pagamento personalizzato e la compatibilit\u00e0 OPC in PrestaShop"},{"@type":"BreadcrumbList","@id":"https:\/\/www.knowband.com\/blog\/it\/ecommerce-blog\/prestashop-payment-gateway-integration\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.knowband.com\/blog\/fr\/"},{"@type":"ListItem","position":2,"name":"Integrazione di un gateway di pagamento personalizzato in PrestaShop: requisiti tecnici, flusso API e sfide OPC reali"}]},{"@type":"WebSite","@id":"https:\/\/www.knowband.com\/blog\/fr\/#website","url":"https:\/\/www.knowband.com\/blog\/fr\/","name":"Knowband Blog | Ecommerce Modules","description":"Magento, Prestashop, Opencart, Shopify","publisher":{"@id":"https:\/\/www.knowband.com\/blog\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.knowband.com\/blog\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/www.knowband.com\/blog\/fr\/#organization","name":"Knowband Blog | Ecommerce Modules","url":"https:\/\/www.knowband.com\/blog\/fr\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.knowband.com\/blog\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/www.knowband.com\/blog\/wp-content\/uploads\/2016\/09\/cropped-knowband_logo-v2.png","contentUrl":"https:\/\/www.knowband.com\/blog\/wp-content\/uploads\/2016\/09\/cropped-knowband_logo-v2.png","width":153,"height":61,"caption":"Knowband Blog | Ecommerce Modules"},"image":{"@id":"https:\/\/www.knowband.com\/blog\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Knowband","https:\/\/x.com\/KnowbandPlugin"]},{"@type":"Person","@id":"https:\/\/www.knowband.com\/blog\/fr\/#\/schema\/person\/ca485d026e41cbf45ae99b67d0c9ac74","name":"Sophie","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.knowband.com\/blog\/wp-content\/plugins\/wp-user-avatar\/deprecated\/wp-user-avatar\/images\/wpua-96x96.png","url":"https:\/\/www.knowband.com\/blog\/wp-content\/plugins\/wp-user-avatar\/deprecated\/wp-user-avatar\/images\/wpua-96x96.png","contentUrl":"https:\/\/www.knowband.com\/blog\/wp-content\/plugins\/wp-user-avatar\/deprecated\/wp-user-avatar\/images\/wpua-96x96.png","caption":"Sophie"},"description":"We are experts in the eCommerce industry, specializing in high-quality plugin development. With years of experience, we deliver reliable and feature-rich modules for platforms such as Magento, PrestaShop, OpenCart, and Shopify. In addition to ready-made plugins, we also provide custom module development and tailored modification services to meet unique business needs. Our team stays ahead of industry trends, ensuring every solution we build enhances store performance, user experience, and overall functionality. With a strong customer-centric approach, we have become a trusted partner for businesses seeking powerful and scalable eCommerce plugin solutions.","url":"https:\/\/www.knowband.com\/blog\/it\/author\/titiksha-dwivedi\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.knowband.com\/blog\/it\/wp-json\/wp\/v2\/posts\/841322","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.knowband.com\/blog\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.knowband.com\/blog\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.knowband.com\/blog\/it\/wp-json\/wp\/v2\/users\/43"}],"replies":[{"embeddable":true,"href":"https:\/\/www.knowband.com\/blog\/it\/wp-json\/wp\/v2\/comments?post=841322"}],"version-history":[{"count":5,"href":"https:\/\/www.knowband.com\/blog\/it\/wp-json\/wp\/v2\/posts\/841322\/revisions"}],"predecessor-version":[{"id":841867,"href":"https:\/\/www.knowband.com\/blog\/it\/wp-json\/wp\/v2\/posts\/841322\/revisions\/841867"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.knowband.com\/blog\/it\/wp-json\/wp\/v2\/media\/841334"}],"wp:attachment":[{"href":"https:\/\/www.knowband.com\/blog\/it\/wp-json\/wp\/v2\/media?parent=841322"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.knowband.com\/blog\/it\/wp-json\/wp\/v2\/categories?post=841322"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.knowband.com\/blog\/it\/wp-json\/wp\/v2\/tags?post=841322"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}