Opprett en tilpasset betalingsmetode i OpenCart Del 2

Det er mange betalingsmåter tilgjengelig i OpenCart-kjernen selv, og mange andre er tilgjengelige på OpenCart-butikken i form av tredjepartsutvidelser. Selv om du noen ganger finner deg selv i situasjonen der du trenger noe annet, er det heller ingen metode tilgjengelig for ditt valg av betalingsgateway eller du vil ha en annen logikk. I begge tilfeller er du igjen med det eneste alternativet: Å opprette en ny betalingsmodulmodul i OpenCart.

I denne veiledningen ser vi den bakre delen av den tilpassede metoden. Vi får se hvordan du viser din tilpassede betalingsmåte sammen med de andre betalingsmetodene. Videre vil vi sjekke hvordan du kan opprette konfigurasjonsskjemaet for den egendefinerte betalingsmåten din.

Vi antar at navnet på egendefinert betalingsmetode er "egendefinert". Det er minst tre filer du må opprette for å sette opp tingene. La oss sjekke det samme i detalj.

Sette opp kontrolleren

Gå videre og opprett kontrollerfilen på admin / controller / betaling / custom.php. Lim inn følgende innhold i den nyopprettede kontrollerfilen custom.php. Denne filen vil være ansvarlig for å vise vår back-end konfigurasjonsskjema ved å ringe til riktig visningsfil og samtidig lagre post verdier av skjemaet til databasen.

språk> last ( 'betaling / custom'); $ this-> document-> setTitle ('Konfigurasjon av egendefinert betalingsmetode'); $ Dette-> last> modell ( 'innstilling / innstilling'); hvis (($ this-> request-> server ['REQUEST_METHOD'] == 'POST')) $ this-> model_setting_setting-> editSetting ('custom', $ this-> request-> post); $ this-> session-> data ['success'] = 'Lagret.'; $ this-> omdirigere ($ this-> url-> link ('forlengelse / betaling', '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 ('betaling / tilpasset', 'token ='. $ this-> session-> data ['token'], 'SSL'); $ this-> data ['cancel'] = $ this-> url-> link ('utvidelse / betaling', 'token ='. $ this-> session-> data ['token'], 'SSL'); hvis (isset ($ this-> request-> post ['text_config_one'])) $ this-> data ['text_config_one'] = $ this-> request-> post ['text_config_one'];  annet $ this-> data ['text_config_one'] = $ this-> config-> get ('text_config_one');  hvis (isset ($ this-> request-> post ['text_config_two'])) $ this-> data ['text_config_two'] = $ this-> request-> post ['text_config_two'];  ellers $ this-> data ['text_config_two'] = $ this-> config-> get ('text_config_two');  hvis (isset ($ this-> request-> post ['custom_status'])) $ this-> data ['custom_status'] = $ this-> request-> post ['custom_status'];  ellers $ this-> data ['custom_status'] = $ this-> config-> get ('custom_status');  hvis (isset ($ this-> request-> post ['custom_order_status_id'])) $ this-> data ['custom_order_status_id'] = $ this-> request-> post ['custom_order_status_id'];  annet $ this-> data ['custom_order_status_id'] = $ this-> config-> get ('custom_order_status_id');  $ this-> load-> model ('lokalisering / order_status'); $ this-> data ['order_statuses'] = $ this-> model_localisation_order_status-> getOrderStatuses (); $ this-> template = 'payment / custom.tpl'; $ this-> children = array ('common / header', 'common / footer'); $ Dette-> response-> setOutput ($ dette-> render ()); 

Som du kan se, følger klassenavnet standard OpenCart-navngivningskonvensjonene. La oss forstå hvert avsnitt.

I begynnelsen av index Metode vi laster språkfilen og angir verdien av </code> stikkord.</p><pre>$ Dette-> Språk> load ( 'betaling / custom'); $ this-> document-> setTitle ('Konfigurasjon av egendefinert betalingsmetode');</pre><p>I neste avsnitt laster vi modellfilen "<code>setting.php</code> som vil gi oss metoder for å redde <strong>post</strong> verdier til databasen. Vi sjekker også om <strong>post</strong> Verdiene er tilgjengelige, vi lagrer det i databasen.</p><pre>$ Dette-> last> modell ( 'innstilling / innstilling'); hvis (($ this-> request-> server ['REQUEST_METHOD'] == 'POST')) $ this-> model_setting_setting-> editSetting ('custom', $ this-> request-> post); $ this-> session-> data ['success'] = 'Lagret.'; $ this-> omdirigere ($ this-> url-> link ('forlengelse / betaling', 'token ='. $ this-> session-> data ['token'], 'SSL')); </pre><p>Videre er neste par kodelinjer bare vant til å sette opp de statiske etikettene som vil bli brukt i malfilen.</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>Deretter har vi satt opp "handling" -variabelen for å sikre at skjemaet blir sendt til vår "indeks" -metode når det sendes inn. Og på samme måte blir brukeren tatt tilbake til listen over betalingsmåter hvis hun klikker på "Avbryt" -knappen.</p><pre>$ this-> data ['action'] = $ this-> url-> link ('betaling / tilpasset', 'token ='. $ this-> session-> data ['token'], 'SSL'); $ this-> data ['cancel'] = $ this-> url-> link ('utvidelse / betaling', 'token ='. $ this-> session-> data ['token'], 'SSL');</pre><p>Videre er det kode for å fylle standardverdiene til konfigurasjonsformularfeltene enten i tillegg eller redigeringsmodus.</p><pre>hvis (isset ($ this-> request-> post ['text_config_one'])) $ this-> data ['text_config_one'] = $ this-> request-> post ['text_config_one']; annet $ this-> data ['text_config_one'] = $ this-> config-> get ('text_config_one'); ... hvis (isset ($ this-> request-> post ['custom_order_status_id'])) $ this-> data ['custom_order_status_id'] = $ this-> request-> post ['custom_order_status_id']; annet $ this-> data ['custom_order_status_id'] = $ this-> config-> get ('custom_order_status_id'); </pre><p>I neste del laster vi inn de forskjellige bestillingsstatusverdiene som er tilgjengelig, som vil bli brukt til rullegardinmenyen i konfigurasjonsskjemaet for <strong>Ordre status</strong> felt.</p><pre>$ Dette-> last> modell ( 'lokalisering / order_status'); $ this-> data ['order_statuses'] = $ this-> model_localisation_order_status-> getOrderStatuses ();</pre><p>Til slutt tilordner vi vår tilpassede malfil <code>custom.tpl</code> og gjengi visningen.</p><pre>$ this-> template = 'payment / custom.tpl'; $ this-> children = array ('common / header', 'common / footer'); $ Dette-> response-> setOutput ($ dette-> render ());</pre><p>Det er satt opp for kontrollerfilen.</p><h2>Språk og malfiler</h2><p>Så nå som vi er ferdige med kontrollerfilen, la oss lage språk- og malfiler. Gå videre og lag språkfilen på <code>admin / language / engelsk / betaling / custom.php</code>. Pass på at språkfilen din ser ut som kode som vi har gitt nedenfor i vårt eksempel <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>Som du kan se har vi nettopp satt opp språkvariablene som tidligere ble brukt i kontrollerfilen. Dette er ganske enkelt og greit.</p><p>La oss lage visningsfilen. Gå videre og opprett malfilen på <code>admin / view / mal / betaling / custom.tpl</code>. Lim inn følgende innhold i den nyopprettede malfilen <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>Igjen, dette burde være ganske enkelt å forstå: Formålet med denne malfilen er å gi konfigurasjonsskjemaet for vår tilpassede betalingsmetode. Den bruker variablene vi opprettet tidligere i kontrollerfilen.</p><h2>Hvordan det ser ut</h2><p>Vi er ferdige med filene som er konfigurert. Nå er det på tide å gå videre og se alt i aktion. Gå over til administrasjonen av OpenCart og Gå til <strong>Utvidelser> Betaling</strong>. Du bør se at vår tilpassede metode er oppført like under <strong>Kontantbetaling ved levering</strong>.</p><img src="//accentsconagua.com/img/images_12/create-a-custom-payment-method-in-opencart-part-2.png"><p>Klikk på <strong>installere</strong> lenke for å installere vår tilpassede betalingsmetode. Etter installasjonen bør du kunne se <strong>Redigere</strong> lenke for å åpne konfigurasjonsskjemaet. Klikk på <strong>Redigere</strong> link.</p><img src="//accentsconagua.com/img/images_12/create-a-custom-payment-method-in-opencart-part-2_2.png"><p>Så dette er konfigurasjonsskjemaet som vi har gjort alt det harde arbeidet så langt! Som du kan se har vi gitt generikken <strong>Ordre status</strong> og "<strong>Status</strong> Enger. I tillegg til det har vi nettopp demonstrert hvordan du også kunne gi de tilpassede parametrene ved å sette opp <strong>Parameter En</strong> og <strong>Parameter To</strong>.</p><p>Du kan fylle ut skjemaet og lagre det ved å klikke på <strong>Lagre</strong> knapp. Vi har satt opp koden for dette i vår <code>index</code> Metode for kontrolleren, så det burde tråkke ut av esken! Og ja, ikke glem å sette statusen til <strong>aktivert</strong> hvis du vil ha metoden tilgjengelig i fronten!</p><p>I neste og siste del ser vi front-end-motparten av det samme. Ikke glem å dele tankene dine med fôren nedenfor!</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">Kode</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">Opprett en tilpasset betalingsmetode i OpenCart Del 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">Opprett en egendefinert betalingsmetode i OpenCart Del 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="/">no.accentsconagua.com</a><div class="h-block-a"></div></div> <div class="footer-text"> Interessant informasjon og nyttige tips om programmering. Nettstedutvikling, webdesign og webutvikling. Photoshop opplæringsprogrammer. Opprettelse av dataspill og mobile applikasjoner. Bli en profesjonell programmerer fra grunnen av. </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="Søke..."> <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>