Creați o metodă de plată personalizată în OpenCart Partea 2

Există multe metode de plată disponibile în centrul de OpenCart în sine și multe altele sunt disponibile la magazinul OpenCart sub formă de extensii terțe părți. Deși uneori vă veți găsi în situația în care aveți nevoie de ceva diferit, fie nu există o metodă disponibilă pentru alegerea gateway-ului de plată, fie doriți o logică diferită. În ambele cazuri, aveți la dispoziție singura opțiune: pentru a crea un nou modul de metodă de plată în OpenCart.

În acest tutorial, vom vedea partea din spate a metodei personalizate. Vom vedea cum să vă prezentați metoda de plată personalizată împreună cu celelalte metode de plată. Mai mult, vom verifica modul în care puteți crea formularul de configurare pentru metoda dvs. de plată personalizată.

Vom presupune că numele metodei noastre personalizate de plată este "personalizat". Există cel puțin trei fișiere pe care trebuie să le creați pentru a configura lucrurile. Să verificăm în detaliu aceleași lucruri.

Configurarea controlerului

Continuați și creați fișierul controlerului la admin / controler / plata / custom.php. Inserați următorul conținut în noul dosar de controler custom.php. Acest fișier va fi responsabil pentru afișarea formularului de configurare back-end apelând fișierul de vizualizare corespunzător și salvând în același timp post valorile formularului la baza de date.

language-> de încărcare ( 'plată / personalizată'); $ this-> document-> setTitle ("Configurația metodei de plată personalizate"); $ This-> a sarcinii> modelul ( 'setare / setare'); dacă ($ this-> request-> server ['REQUEST_METHOD'] == 'POST')) $ this-> model_setting_setting-> editSetting ('custom', $ this-> request-> post); $ this-> session-> data ['succes'] = 'Salvat.'; $ this-> redirect ($ this-> url-> link ('extensie / plată', 'token ='. $ this-> session-> data ['token'], 'SSL'));  $ this-> data ['title_title'] = $ this-> language-> get ('title_title'); $ this-> data ['entry_text_config_one'] = $ acest-> limbă-> primi ('text_config_one'); $ this-> data ['entry_text_config_two'] = $ această-> limba-> get ('text_config_two'); $ this-> data ['button_save'] = $ această-> limbă-> obține ('text_button_save'); $ acest-> date ['button_cancel'] = $ this-> language-> get ('text_button_cancel'); $ acest-> date ['entry_order_status'] = $ this-> language-> get ('entry_order_status'); $ acest-> date ['text_enabled'] = $ this-> language-> get ('text_enabled'); $ this-> data ['text_disabled'] = $ acest-> limbă-> primi ('text_disabled'); $ acest-> date ['entry_status'] = $ this-> language-> get ('entry_status'); $ this-> data ['action'] = $ this-> url-> link ('payment / custom', 'token ='. $ this-> session-> data ['token'], 'SSL'); $ this-> data ['cancel'] = $ this-> url-> link ('extensie / plată', 'token ='. $ this-> session-> data ['token'], SSL); dacă isset ($ this-> request-> post ['text_config_one'])) $ this-> data ['text_config_one'] = $ this-> request-> post ['text_config_one'];  altceva $ this-> data ['text_config_one'] = $ this-> config-> get ('text_config_one');  dacă isset ($ this-> request-> post ['text_config_two'])) $ this-> data ['text_config_two'] = $ this-> request-> post ['text_config_two'];  altceva $ this-> data ['text_config_two'] = $ this-> config-> get ('text_config_two');  dacă isset ($ this-> request-> post ['custom_status'])) $ this-> data ['custom_status'] = $ this-> request-> post ['custom_status'];  altceva $ this-> data ['custom_status'] = $ this-> config-> get ('custom_status');  dacă isset ($ this-> request-> post ['custom_order_status_id'])) $ this-> data ['custom_order_status_id'] = $ this-> request-> post ['custom_order_status_id'];  altceva $ this-> data ['custom_order_status_id'] = $ this-> config-> get ('custom_order_status_id');  $ this-> load-> model ('localization / order_status'); $ this-> data ['ordine_status'] = $ this-> model_localisation_order_status-> getOrderStatuses (); $ this-> template = 'plata / custom.tpl'; $ this-> children = array ("common / header", "common / footer"); $ This-> response-> setOutput ($ this-> render ()); 

După cum puteți vedea, numele clasei urmează convențiile standard de numire OpenCart. Să înțelegem fiecare secțiune.

La începutul index vom încărca fișierul de limbă și vom seta valoarea </code> etichetă.</p><pre>$ This-> language-> de încărcare ( 'plată / personalizată'); $ this-> document-> setTitle ("Configurația metodei de plată personalizate");</pre><p>În secțiunea următoare, încărcăm fișierul model "<code>setting.php</code> care ne va oferi metodele de salvare <strong>post</strong> valori către baza de date. De asemenea, verificăm dacă <strong>post</strong> valorile sunt disponibile, îl vom salva în baza de date.</p><pre>$ This-> a sarcinii> modelul ( 'setare / setare'); dacă ($ this-> request-> server ['REQUEST_METHOD'] == 'POST')) $ this-> model_setting_setting-> editSetting ('custom', $ this-> request-> post); $ this-> session-> data ['succes'] = 'Salvat.'; $ this-> redirect ($ this-> url-> link ('extensie / plată', 'token ='. $ this-> session-> data ['token'], 'SSL')); </pre><p>Mai mult, următoarele câteva linii de cod sunt folosite doar pentru a configura etichetele statice care vor fi utilizate în fișierul șablon.</p><p><br></p><pre>$ this-> data ['title_title'] = $ aceasta-> limba-> get ('title_title'); $ this-> data ['entry_text_config_one'] = $ acest-> limbă-> primi ('text_config_one'); $ this-> data ['entry_text_config_two'] = $ această-> limba-> get ('text_config_two'); $ this-> data ['button_save'] = $ această-> limbă-> obține ('text_button_save'); $ acest-> date ['button_cancel'] = $ this-> language-> get ('text_button_cancel'); $ acest-> date ['entry_order_status'] = $ this-> language-> get ('entry_order_status'); $ acest-> date ['text_enabled'] = $ this-> language-> get ('text_enabled'); $ this-> data ['text_disabled'] = $ acest-> limbă-> primi ('text_disabled'); $ acest-> date ['entry_status'] = $ this-> language-> get ('entry_status');</pre><p>Apoi, am creat variabila "acțiune" pentru a ne asigura că formularul este trimis la metoda "index" atunci când este trimis. În același mod, utilizatorul este preluat înapoi la lista metodelor de plată dacă dă clic pe butonul "Anulare".</p><pre>$ this-> data ['action'] = $ this-> url-> link ('payment / custom', 'token ='. $ this-> session-> data ['token'], 'SSL'); $ this-> data ['cancel'] = $ this-> url-> link ('extensie / plată', 'token ='. $ this-> session-> data ['token'], SSL);</pre><p>În plus, există cod pentru a popula valorile implicite ale câmpurilor formularului de configurare, fie în modul de adăugare sau editare.</p><pre>dacă isset ($ this-> request-> post ['text_config_one'])) $ this-> data ['text_config_one'] = $ this-> request-> post ['text_config_one']; altceva $ this-> data ['text_config_one'] = $ this-> config-> get ('text_config_one'); Dacă isset ($ this-> request-> post ['custom_order_status_id'])) $ this-> data ['custom_order_status_id'] = $ this-> request-> post ['custom_order_status_id']; altceva $ this-> data ['custom_order_status_id'] = $ this-> config-> get ('custom_order_status_id'); </pre><p>În secțiunea următoare, încărcăm diferitele valori de stare ale comenzii disponibile pe zonă, care vor fi utilizate pentru meniul drop-down din formularul de configurare pentru <strong>Starea comenzii</strong> camp.</p><pre>$ This-> a sarcinii> modelul ( 'localizare / order_status'); $ this-> data ['ordine_status'] = $ this-> model_localisation_order_status-> getOrderStatuses ();</pre><p>În final, atribuim fișierul șablon personalizat <code>custom.tpl</code> și face vizualizarea.</p><pre>$ this-> template = 'plata / custom.tpl'; $ this-> children = array ("common / header", "common / footer"); $ This-> response-> setOutput ($ this-> render ());</pre><p>Aceasta este setarea pentru fișierul controlerului.</p><h2>Limbă și fișiere șablon</h2><p>Deci, acum că am terminat cu fișierul controlerului, să creăm fișierele de limbă și șablon. Continuați și creați fișierul de limbă la <code>admin / limba / engleză / plata / custom.php</code>. Asigurați-vă că fișierul dvs. de limbă arată ca un cod pe care l-am furnizat mai jos în exemplul nostru <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>După cum puteți vedea, tocmai am creat variabilele de limbă folosite anterior în fișierul controlerului. Acest lucru este destul de simplu și simplu.</p><p>Să creăm fișierul de vizualizare. Continuați și creați fișierul șablon la <code>admin / vizualizare / template / plata / custom.tpl</code>. Inserați următorul conținut în fișierul șablon nou creat <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']; ?>"selectat =" selectat "><?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; ?>"dimensiune =" 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; ?>"dimensiune =" 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>Din nou, acest lucru ar trebui să fie destul de ușor de înțeles: Scopul acestui fișier de șablon este de a furniza formularul de configurare pentru metoda noastră de plată personalizată. Utilizează variabilele pe care le-am creat mai devreme în fișierul controlerului.</p><h2>Cum arată</h2><p>Am terminat cu configurarea fișierelor. Acum este timpul să mergem mai departe și să vedem totul în acțiune. Mergeți la secțiunea de administrare a OpenCart și mergeți la <strong>Extensii> Plata</strong>. Ar trebui să vedeți că metoda noastră personalizată este afișată chiar sub <strong>Plata la livrare</strong>.</p><img src="//accentsconagua.com/img/images_12/create-a-custom-payment-method-in-opencart-part-2.png"><p>Faceți clic pe <strong>instalare</strong> link pentru a instala metoda noastră de plată personalizată. După instalare, ar trebui să puteți vedea <strong>Editați | ×</strong> link pentru a deschide formularul de configurare. Faceți clic pe <strong>Editați | ×</strong> legătură.</p><img src="//accentsconagua.com/img/images_12/create-a-custom-payment-method-in-opencart-part-2_2.png"><p>Deci, aceasta este forma de configurare pentru care am făcut toată munca grea până acum! După cum puteți vedea, am furnizat genericul <strong>Starea comenzii</strong> și "<strong>stare</strong> câmpuri. În plus, tocmai am demonstrat cum ați putea oferi parametrii personalizați, de asemenea, prin înființarea <strong>Parametrul unu</strong> și <strong>Parametrul doi</strong>.</p><p>Puteți completa formularul și îl puteți salva făcând clic pe <strong>Salvați</strong> buton. Am stabilit codul pentru asta în nostru <code>index</code> metoda de controler astfel încât ar trebui să funcționeze din cutie! Și da, nu uitați să setați statusul la <strong>Activat</strong> dacă doriți ca metoda dvs. să fie disponibilă în front-end!</p><p>În următoarea și ultima parte vom vedea omologul de front-end al aceleași. Nu uitați să vă împărtășiți gândurile folosind feed-ul de mai jos!</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">Cod</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">Creați o metodă de plată personalizată în OpenCart Partea 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">Creați o metodă de plată personalizată în OpenCart Partea 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="/">ro.accentsconagua.com</a><div class="h-block-a"></div></div> <div class="footer-text"> Informații interesante și sfaturi utile privind programarea. Dezvoltarea de site-uri, web design si dezvoltare web. Tutoriale Photoshop. Crearea de jocuri pe calculator și aplicații mobile. Deveniți un programator profesionist de la 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="Căutare..."> <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>