Creare un metodo di pagamento personalizzato in OpenCart parte 2

Ci sono molti metodi di pagamento disponibili nel core OpenCart stesso e molti altri sono disponibili nel negozio OpenCart sotto forma di estensioni di terze parti. Sebbene a volte ti trovi nella situazione in cui hai bisogno di qualcosa di diverso, o non esiste alcun metodo disponibile per la scelta del gateway di pagamento o se desideri una logica diversa. In entrambi i casi, ti rimane la sola opzione: creare un nuovo modulo di metodo di pagamento in OpenCart.

In questo tutorial, vedremo la parte di back-end del metodo personalizzato. Vedremo come elencare il tuo metodo di pagamento personalizzato insieme agli altri metodi di pagamento. Inoltre, controlleremo come creare il modulo di configurazione per il tuo metodo di pagamento personalizzato.

Supponiamo che il nostro nome del metodo di pagamento personalizzato sia "personalizzato". Ci sono almeno tre file che devi creare per configurare le cose. Controlliamo lo stesso in dettaglio.

Impostazione del controller

Vai avanti e crea il file del controller su admin / regolatore / pagamento / custom.php. Incolla i seguenti contenuti nel file del controller appena creato custom.php. Questo file sarà responsabile della visualizzazione del nostro modulo di configurazione back-end chiamando il file di visualizzazione appropriato e allo stesso tempo salvando il file inviare valori del modulo nel database.

language-> load ( 'il pagamento / custom'); $ this-> document-> setTitle ('Custom Custom Method Configuration'); $ This-> load-> modello ( 'impostazione / impostazione'); if (($ this-> request-> server ['REQUEST_METHOD'] == 'POST')) $ this-> model_setting_setting-> editSetting ('custom', $ this-> request-> post); $ this-> session-> data ['success'] = 'Salvato.'; $ this-> redirect ($ this-> url-> link ('extension / payment', 'token ='. $ this-> session-> data ['token'], 'SSL'));  $ this-> data ['heading_title'] = $ this-> language-> get ('heading_title'); $ this-> data ['entry_text_config_one'] = $ this-> language-> get ('text_config_one'); $ this-> data ['entry_text_config_two'] = $ this-> language-> get ('text_config_two'); $ this-> data ['button_save'] = $ this-> language-> get ('text_button_save'); $ this-> data ['button_cancel'] = $ this-> language-> get ('text_button_cancel'); $ this-> data ['entry_order_status'] = $ this-> language-> get ('entry_order_status'); $ this-> data ['text_enabled'] = $ this-> language-> get ('text_enabled'); $ this-> data ['text_disabled'] = $ this-> language-> get ('text_disabled'); $ this-> data ['entry_status'] = $ this-> language-> get ('entry_status'); $ this-> data ['action'] = $ this-> url-> link ('pagamento / personalizzato', 'token ='. $ this-> session-> data ['token'], 'SSL'); $ this-> data ['cancel'] = $ this-> url-> link ('extension / payment', 'token ='. $ this-> session-> data ['token'], 'SSL'); if (isset ($ this-> request-> post ['text_config_one'])) $ this-> data ['text_config_one'] = $ this-> request-> post ['text_config_one'];  else $ this-> data ['text_config_one'] = $ this-> config-> get ('text_config_one');  if (isset ($ this-> request-> post ['text_config_two'])) $ this-> data ['text_config_two'] = $ this-> request-> post ['text_config_two'];  else $ this-> data ['text_config_two'] = $ this-> config-> get ('text_config_two');  if (isset ($ this-> request-> post ['custom_status'])) $ this-> data ['custom_status'] = $ this-> request-> post ['custom_status'];  else $ this-> data ['custom_status'] = $ this-> config-> get ('custom_status');  if (isset ($ this-> request-> post ['custom_order_status_id'])) $ this-> data ['custom_order_status_id'] = $ this-> request-> post ['custom_order_status_id'];  else $ this-> data ['custom_order_status_id'] = $ this-> config-> get ('custom_order_status_id');  $ this-> load-> model ('localization / order_status'); $ this-> data ['order_statuses'] = $ this-> model_localisation_order_status-> getOrderStatuses (); $ this-> template = 'payment / custom.tpl'; $ this-> children = array ('common / header', 'common / footer'); $ This-> response-> SetOutput ($ this-> render ()); 

Come puoi vedere, il nome della classe segue le convenzioni di denominazione standard di OpenCart. Capiamo ogni sezione.

All'inizio del indice metodo carichiamo il file della lingua e impostiamo il valore di </code> etichetta.</p><pre>$ This-> language-> load ( 'il pagamento / custom'); $ this-> document-> setTitle ('Custom Custom Method Configuration');</pre><p>Nella prossima sezione, verrà caricato il file del modello "<code>setting.php</code> che ci fornirà i metodi per salvare <strong>inviare</strong> valori al database. Controlliamo anche se <strong>inviare</strong> i valori sono disponibili li salveremo nel database.</p><pre>$ This-> load-> modello ( 'impostazione / impostazione'); if (($ this-> request-> server ['REQUEST_METHOD'] == 'POST')) $ this-> model_setting_setting-> editSetting ('custom', $ this-> request-> post); $ this-> session-> data ['success'] = 'Salvato.'; $ this-> redirect ($ this-> url-> link ('extension / payment', 'token ='. $ this-> session-> data ['token'], 'SSL')); </pre><p>Inoltre, il prossimo paio di righe di codice è appena usato per impostare le etichette statiche che verranno utilizzate nel file di modello.</p><p><br></p><pre>$ this-> data ['heading_title'] = $ this-> language-> get ('heading_title'); $ this-> data ['entry_text_config_one'] = $ this-> language-> get ('text_config_one'); $ this-> data ['entry_text_config_two'] = $ this-> language-> get ('text_config_two'); $ this-> data ['button_save'] = $ this-> language-> get ('text_button_save'); $ this-> data ['button_cancel'] = $ this-> language-> get ('text_button_cancel'); $ this-> data ['entry_order_status'] = $ this-> language-> get ('entry_order_status'); $ this-> data ['text_enabled'] = $ this-> language-> get ('text_enabled'); $ this-> data ['text_disabled'] = $ this-> language-> get ('text_disabled'); $ this-> data ['entry_status'] = $ this-> language-> get ('entry_status');</pre><p>Successivamente, abbiamo impostato la variabile "azione" per assicurarci che il modulo venga inviato al nostro metodo "indice" quando inviato. Allo stesso modo, l'utente viene riportato all'elenco dei metodi di pagamento se fa clic sul pulsante "Annulla".</p><pre>$ this-> data ['action'] = $ this-> url-> link ('pagamento / personalizzato', 'token ='. $ this-> session-> data ['token'], 'SSL'); $ this-> data ['cancel'] = $ this-> url-> link ('extension / payment', 'token ='. $ this-> session-> data ['token'], 'SSL');</pre><p>Inoltre, esiste un codice per popolare i valori predefiniti dei campi del modulo di configurazione in modalità di aggiunta o modifica.</p><pre>if (isset ($ this-> request-> post ['text_config_one'])) $ this-> data ['text_config_one'] = $ this-> request-> post ['text_config_one']; else $ this-> data ['text_config_one'] = $ this-> config-> get ('text_config_one'); ... if (isset ($ this-> request-> post ['custom_order_status_id'])) $ this-> data ['custom_order_status_id'] = $ this-> request-> post ['custom_order_status_id']; else $ this-> data ['custom_order_status_id'] = $ this-> config-> get ('custom_order_status_id'); </pre><p>Nella prossima sezione, verranno caricati i diversi valori di stato dell'ordine nell'area disponibile, che verrà utilizzata per l'elenco a discesa nel modulo di configurazione per <strong>Lo stato dell'ordine</strong> campo.</p><pre>$ This-> load-> modello ( 'localizzazione / ORDER_STATUS'); $ this-> data ['order_statuses'] = $ this-> model_localisation_order_status-> getOrderStatuses ();</pre><p>Infine, assegniamo il nostro file modello personalizzato <code>custom.tpl</code> e rendere la vista.</p><pre>$ this-> template = 'payment / custom.tpl'; $ this-> children = array ('common / header', 'common / footer'); $ This-> response-> SetOutput ($ this-> render ());</pre><p>Questo è il set up per il file del controller.</p><h2>File di lingua e modello</h2><p>Quindi, ora che abbiamo finito con il file del controller, creiamo i file di lingua e modello. Vai avanti e crea il file della lingua su <code>admin / lingua / inglese / pagamento / custom.php</code>. Assicurati che il tuo file di lingua sia simile al codice che abbiamo fornito di seguito nel nostro esempio <code>custom.php</code>.</p><pre><?php $_['heading_title'] = 'Custom Payment Method'; $_['text_enabled'] = 'Enabled'; $_['text_disabled'] = 'Disabled'; $_['text_config_one'] = 'Parameter one'; $_['text_config_two'] = 'Parameter Two'; $_['entry_status'] = 'Status:'; $_['entry_order_status'] = 'Order Status:'; $_['text_button_save'] = 'Save'; $_['text_button_cancel'] = 'Cancel'; ?></pre><p>Come puoi vedere, abbiamo appena impostato le variabili di linguaggio precedentemente utilizzate nel file del controller. Questo è abbastanza semplice e diretto.</p><p>Creiamo il file di visualizzazione. Vai avanti e crea il file modello su <code>admin / view / template / pagamento / custom.tpl</code>. Incolla i seguenti contenuti nel file del modello appena creato <code>custom.tpl</code>.</p><pre><?php echo $header; ?> <div> <div> <div> <h1><img src="//accentsconagua.com/img/images_12/create-a-custom-payment-method-in-opencart-part-2.png" /> <?php echo $heading_title; ?></h1> <div><?php echo $button_save; ?>"><?php echo $button_cancel; ?></div> </div> <div> <form action="<?php echo $action; ?>"method =" post "enctype =" multipart / form-data "> <table> <tr> <td><?php echo $entry_order_status; ?></td> <td><select name="custom_order_status_id"> <?php foreach ($order_statuses as $order_status) ?> <?php if ($order_status['order_status_id'] == $custom_order_status_id) ?> <option value="<?php echo $order_status['order_status_id']; ?>"selected =" selected "><?php echo $order_status['name']; ?></option> <?php else ?> <option value="<?php echo $order_status['order_status_id']; ?>"><?php echo $order_status['name']; ?></option> <?php ?> <?php ?> </select></td> </tr> <tr> <td><?php echo $entry_text_config_one; ?></td> <td><input type="text" name="text_config_one" value="<?php echo $text_config_one; ?>"size =" 10 "/></td> </tr> <tr> <td><?php echo $entry_text_config_two; ?></td> <td><input type="text" name="text_config_two" value="<?php echo $text_config_two; ?>"size =" 10 "/></td> </tr> <tr> <td><?php echo $entry_status; ?></td> <td><select name="custom_status"> <?php if ($custom_status) ?> <option value="1" selected="selected"><?php echo $text_enabled; ?></option> <option value="0"><?php echo $text_disabled; ?></option> <?php else ?> <option value="1"><?php echo $text_enabled; ?></option> <option value="0" selected="selected"><?php echo $text_disabled; ?></option> <?php ?> </select></td> </tr> </table> </form> </div> </div> </div> <?php echo $footer; ?></pre><p>Ancora una volta, questo dovrebbe essere abbastanza facile da capire: lo scopo di questo file modello è di fornire il modulo di configurazione per il nostro metodo di pagamento personalizzato. Usa le variabili che abbiamo impostato in precedenza nel file del controller.</p><h2>Come appare</h2><p>Abbiamo finito con i file impostati. Ora è il momento di andare avanti e vedere tutte le cose in azione. Vai alla sezione di amministrazione di OpenCart e vai a <strong>Estensioni> Pagamento</strong>. Dovresti vedere che il nostro metodo personalizzato è elencato appena sotto il <strong>Pagamento alla consegna</strong>.</p><img src="//accentsconagua.com/img/images_12/create-a-custom-payment-method-in-opencart-part-2.png"><p>Clicca sul <strong>installare</strong> link per installare il nostro metodo di pagamento personalizzato. Dopo l'installazione, dovresti essere in grado di vedere il <strong>modificare</strong> link per aprire il modulo di configurazione. Clicca sul <strong>modificare</strong> collegamento.</p><img src="//accentsconagua.com/img/images_12/create-a-custom-payment-method-in-opencart-part-2_2.png"><p>Quindi questo è il modulo di configurazione per il quale abbiamo fatto tutto il duro lavoro finora! Come puoi vedere, abbiamo fornito il generico <strong>Lo stato dell'ordine</strong> e "<strong>Stato</strong> campi. In aggiunta a ciò, abbiamo appena dimostrato come è possibile fornire i parametri personalizzati e impostando <strong>Parametro Uno</strong> e <strong>Parametro due</strong>.</p><p>È possibile compilare il modulo e salvarlo facendo clic sul <strong>Salvare</strong> pulsante. Abbiamo impostato il codice per questo nel nostro <code>indice</code> metodo di controllo in modo che dovrebbe funzionare fuori dalla scatola! E sì, non dimenticare di impostare lo stato su <strong>Abilitato</strong> se vuoi che il tuo metodo sia disponibile nel front-end!</p><p>Nella prossima e ultima parte vedremo la controparte front-end della stessa. Non dimenticare di condividere i tuoi pensieri usando il feed qui sotto!</p> <div class="rek-block"> <center> <ins class="adsbygoogle" style="display:inline-block;width:580px;height:400px" data-ad-client="ca-pub-3810161443300697" data-ad-slot="9434875811"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </center> </div> <div class="h-alltags"> <a href="articles/code">Codice</a> </div> </div> </div> </div> </div> <div class="next_posts clearfix"> <div class="n_post"> <div class="next_posts-h1 left_nh1"><a href="/articles/code/create-a-custom-payment-method-in-opencart-part-3.html">Creare un metodo di pagamento personalizzato in OpenCart parte 3</a></div> <div class="next_posts-img" style="background-image: url('//accentsconagua.com/img/images_12/create-a-custom-payment-method-in-opencart-part-3.jpg');"></div> </div> <div class="n_post"> <div class="next_posts-h1 right_nh1"><a href="/articles/code/create-a-custom-payment-method-in-opencart-part-1.html">Creare un metodo di pagamento personalizzato in OpenCart parte 1</a></div> <div class="next_posts-img" style="background-image: url('//accentsconagua.com/img/images_12/create-a-custom-payment-method-in-opencart-part-1.jpg');"></div> </div> </div> <footer> <div class="container"> <div class="footer-langs"> <ul class="site-langs-list"> <li><a href="https://www.accentsconagua.com"><i class="flag flag-DE"></i>Deutsch</a></li> <li><a href="https://fr.accentsconagua.com"><i class="flag flag-FR"></i>Français</a></li> <li><a href="https://nl.accentsconagua.com"><i class="flag flag-NL"></i>Nederlands</a></li> <li><a href="https://no.accentsconagua.com"><i class="flag flag-NO"></i>Norsk</a></li> <li><a href="https://sv.accentsconagua.com"><i class="flag flag-SE"></i>Svenska</a></li> <li><a href="https://it.accentsconagua.com"><i class="flag flag-IT"></i>Italiano</a></li> <li><a href="https://es.accentsconagua.com"><i class="flag flag-ES"></i>Español</a></li> <li><a href="https://ro.accentsconagua.com"><i class="flag flag-RO"></i>Românesc</a></li> </ul> </div> <div class="h-block"><a href="/">it.accentsconagua.com</a><div class="h-block-a"></div></div> <div class="footer-text"> Informazioni interessanti e consigli utili sulla programmazione. Sviluppo di siti web, web design e sviluppo web. Tutorial di Photoshop. Creazione di giochi per computer e applicazioni mobili. Diventa un programmatore professionista da zero. </div> </div> </footer> <div class="search"> <img class="searchico" src="//accentsconagua.com/img/search.svg" alt=""> </div> <div class="modal"> <div class="modal-content"> <span class="close-button">×</span> <input class="searchmain" type="text" id="search-input" placeholder="Ricerca..."> <ul class="searchli" id="results-container"></ul> </div> </div> <link rel="stylesheet" href="css/flags.css"> <link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.css" /> <script src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js"></script> <script> window.addEventListener("load", function(){ window.cookieconsent.initialise({ "palette": { "popup": { "background": "#edeff5", "text": "#838391" }, "button": { "background": "#4b81e8" } }, "theme": "classic", "position": "bottom-right" })}); </script> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <script src="js/scripts.min.js"></script> <script src="js/common.js"></script> <link rel="stylesheet" href="css/fontawesome-all.min.css"> <script> var modal = document.querySelector(".modal"); var trigger = document.querySelector(".search"); var closeButton = document.querySelector(".close-button"); function toggleModal() { modal.classList.toggle("show-modal"); } function windowOnClick(event) { if (event.target === modal) { toggleModal(); } } trigger.addEventListener("click", toggleModal); closeButton.addEventListener("click", toggleModal); window.addEventListener("click", windowOnClick); </script> <script src="https://unpkg.com/simple-jekyll-search@1.5.0/dest/simple-jekyll-search.min.js"></script> <script> SimpleJekyllSearch({ searchInput: document.getElementById('search-input'), resultsContainer: document.getElementById('results-container'), json: '/search.json', searchResultTemplate: '<li><a href="{url}">{title}</a></li>' }) </script> <script src="jquery.unveil2.min.js"></script> <script> $('img').unveil(); </script> </body> </html>