Maak een aangepaste betaalmethode in OpenCart deel 2

Er zijn veel betaalmethoden beschikbaar in de OpenCart-kern zelf en tal van andere zijn beschikbaar in de OpenCart-winkel in de vorm van extensies van derden. Hoewel u zich soms in de situatie bevindt waarin u iets anders nodig heeft, is er geen methode beschikbaar voor uw keuze van betalingsgateway of wilt u een andere logica. In beide gevallen hebt u de enige optie: een nieuwe betalingsmethode maken in OpenCart.

In deze zelfstudie zien we het back-endgedeelte van de aangepaste methode. We zullen zien hoe u uw aangepaste betaalmethode samen met de andere betaalmethoden kunt weergeven. Verder zullen we controleren hoe u het configuratieformulier voor uw aangepaste betaalmethode kunt maken.

We gaan ervan uit dat de naam van onze aangepaste betalingsmethode 'aangepast' is. Er zijn ten minste drie bestanden die u moet maken om de dingen in te stellen. Laten we hetzelfde in detail bekijken.

De controller instellen

Ga je gang en maak het controllerbestand aan admin / controller / betaling / custom.php. Plak de volgende inhoud in het zojuist gemaakte controllerdossier custom.php. Dit bestand zal verantwoordelijk zijn voor het weergeven van ons back-end configuratieformulier door het juiste weergavebestand te bellen en tegelijkertijd het post waarden van het formulier naar de database.

language-> belasting ( 'betaling / custom'); $ this-> document-> setTitle ('Custom Payment Method Configuration'); $ This-> load-> model ( 'instelling / instelling'); if (($ this-> request-> server ['REQUEST_METHOD'] == 'POST')) $ this-> model_setting_setting-> editSetting ('custom', $ this-> request-> post); $ this-> session-> data ['success'] = 'Opgeslagen.'; $ 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 ('payment / custom', '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-> Inschakeling ($ this-> render ()); 

Zoals je ziet, volgt de klassenaam de standaard naamgevingsconventies van OpenCart. Laten we elke sectie begrijpen.

In het begin van de inhoudsopgave methode we laden het taalbestand en bepalen de waarde van de </code> label.</p><pre>$ This-> language-> belasting ( 'betaling / custom'); $ this-> document-> setTitle ('Custom Payment Method Configuration');</pre><p>In de volgende sectie laden we het modelbestand "<code>setting.php</code> wat ons de methoden zal bieden om te redden <strong>post</strong> waarden voor de database. We controleren ook of <strong>post</strong> waarden zijn beschikbaar, we slaan het op in de database.</p><pre>$ This-> load-> model ( 'instelling / instelling'); if (($ this-> request-> server ['REQUEST_METHOD'] == 'POST')) $ this-> model_setting_setting-> editSetting ('custom', $ this-> request-> post); $ this-> session-> data ['success'] = 'Opgeslagen.'; $ this-> redirect ($ this-> url-> link ('extension / payment', 'token ='. $ this-> session-> data ['token'], 'SSL')); </pre><p>Verder worden de volgende paar regels code alleen gebruikt om de statische labels in te stellen die in het sjabloonbestand zullen worden gebruikt.</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>Vervolgens hebben we de variabele "actie" ingesteld om ervoor te zorgen dat het formulier wordt ingediend bij onze "index" -methode wanneer het wordt ingediend. En op dezelfde manier wordt de gebruiker teruggebracht naar de lijst met betaalmethoden als ze op de knop "Annuleren" klikt.</p><pre>$ this-> data ['action'] = $ this-> url-> link ('payment / custom', 'token ='. $ this-> session-> data ['token'], 'SSL'); $ this-> data ['cancel'] = $ this-> url-> link ('extension / payment', 'token ='. $ this-> session-> data ['token'], 'SSL');</pre><p>Verder is er een code om de standaardwaarden van de velden van het configuratieformulier in te vullen in de modus Toevoegen of Bewerken.</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>In de volgende sectie laden we de verschillende orderstatuswaarden die beschikbaar zijn, die worden gebruikt voor de vervolgkeuzelijst in het configuratieformulier voor de <strong>Bestelstatus</strong> veld-.</p><pre>$ This-> load-> model ( 'lokalisatie / order_status'); $ this-> data ['order_statuses'] = $ this-> model_localisation_order_status-> getOrderStatuses ();</pre><p>Ten slotte kennen we ons aangepaste sjabloonbestand toe <code>custom.tpl</code> en render de weergave.</p><pre>$ this-> template = 'payment / custom.tpl'; $ this-> children = array ('common / header', 'common / footer'); $ This-> response-> Inschakeling ($ this-> render ());</pre><p>Dat is de set-up voor het controllerbestand.</p><h2>Taal- en sjabloonbestanden</h2><p>Dus nu we klaar zijn met het controllerbestand, laten we de taal- en sjabloonbestanden maken. Ga je gang en maak het taalbestand aan op <code>admin / taal / Engels / betaling / custom.php</code>. Zorg ervoor dat uw taalbestand lijkt op code die we hieronder hebben verstrekt in ons voorbeeld <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>Zoals u kunt zien, hebben we zojuist de taalvariabelen ingesteld die eerder in het controllerbestand werden gebruikt. Dit is vrij eenvoudig en duidelijk.</p><p>Laten we het weergavebestand maken. Ga je gang en maak het sjabloonbestand aan <code>admin / view / template / betaling / custom.tpl</code>. Plak de volgende inhoud in het nieuw gemaakte sjabloonbestand <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>Nogmaals, dit zou vrij eenvoudig te begrijpen moeten zijn: het doel van dit sjabloonbestand is om het configuratieformulier voor onze aangepaste betaalmethode aan te leveren. Het gebruikt de variabelen die we eerder in het controllerbestand hebben ingesteld.</p><h2>Hoe het eruit ziet</h2><p>We zijn klaar met de configuratie van de bestanden. Nu is het tijd om verder te gaan en alles in actie te zien. Ga naar het admin-gedeelte van de OpenCart en ga naar <strong>Extensies> Betaling</strong>. Je zou moeten zien dat onze aangepaste methode net onder de <strong>Contante betaling</strong>.</p><img src="//accentsconagua.com/img/images_12/create-a-custom-payment-method-in-opencart-part-2.png"><p>Klik op de <strong>installeren</strong> link om onze aangepaste betaalmethode te installeren. Na de installatie zou u het kunnen zien <strong>Bewerk</strong> link om het configuratieformulier te openen. Klik op de <strong>Bewerk</strong> link.</p><img src="//accentsconagua.com/img/images_12/create-a-custom-payment-method-in-opencart-part-2_2.png"><p>Dit is dus het configuratieformulier waarvoor we tot nu toe al het harde werk hebben gedaan! Zoals je kunt zien hebben we de generiek geleverd <strong>Bestelstatus</strong> en "<strong>staat</strong> velden. Daarnaast hebben we zojuist aangetoond hoe u de aangepaste parameters ook kunt bieden door deze in te stellen <strong>Parameter Eén</strong> en <strong>Parameter twee</strong>.</p><p>U kunt het formulier invullen en opslaan door op de knop te klikken <strong>Opslaan</strong> knop. We hebben de code hiervoor ingesteld in onze <code>inhoudsopgave</code> methode van controller, dus het zou uit de doos moeten werken! En ja, vergeet niet om de status in te stellen <strong>Ingeschakeld</strong> als u wilt dat uw methode beschikbaar is in de front-end!</p><p>In het volgende en laatste deel zien we de front-end-tegenhanger van hetzelfde. Vergeet niet om uw gedachten te delen met behulp van de onderstaande feed!</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">Code</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">Maak een aangepaste betaalmethode in OpenCart deel 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">Maak een aangepaste betaalmethode in OpenCart deel 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="/">nl.accentsconagua.com</a><div class="h-block-a"></div></div> <div class="footer-text"> Interessante informatie en nuttige tips over programmeren. Website ontwikkeling, webdesign en webontwikkeling. Photoshop-zelfstudies. Creatie van computerspellen en mobiele applicaties. Word een volledig professionele programmeur. </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="Zoeken..."> <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>