Créer un mode de paiement personnalisé dans OpenCart Partie 2

De nombreuses méthodes de paiement sont disponibles dans le noyau OpenCart lui-même et de nombreuses autres sont disponibles dans le magasin OpenCart sous la forme d’extensions tierces. Bien que vous vous trouviez parfois dans une situation où vous aviez besoin de quelque chose de différent, il n’existait aucune méthode disponible pour votre choix de passerelle de paiement ou vous souhaitiez une logique différente. Dans les deux cas, il ne vous reste plus que la seule option: créer un nouveau module de méthode de paiement dans OpenCart..

Dans ce tutoriel, nous verrons la partie back-end de la méthode personnalisée. Nous verrons comment répertorier votre méthode de paiement personnalisée avec les autres méthodes de paiement. De plus, nous vérifierons comment vous pouvez créer le formulaire de configuration pour votre méthode de paiement personnalisée.

Nous supposerons que notre nom de méthode de paiement personnalisé est "personnalisé". Vous devez créer au moins trois fichiers pour pouvoir configurer les éléments. Vérifions la même chose en détail.

Configuration du contrôleur

Allez-y et créez le fichier du contrôleur à admin / contrôleur / paiement / custom.php. Collez le contenu suivant dans le fichier de contrôleur nouvellement créé. custom.php. Ce fichier sera chargé d’afficher notre formulaire de configuration d’arrière-plan en appelant le fichier d’affichage approprié et en sauvegardant en même temps le fichier. poster valeurs du formulaire dans la base de données.

langue-> charge ('paiement / coutume'); $ this-> document-> setTitle ('Configuration du mode de paiement personnalisé'); $ this-> load-> model ('setting / setting'); if (($ this-> request-> server ['REQUEST_METHOD'] == 'POST')) $ this-> model_setting_setting-> editSetting ('custom', $ this-> request-> post); $ this-> session-> data ['success'] = 'Sauvegardé.'; $ this-> redirect ($ this-> url-> link ('extension / payment', 'token ='. $ this-> session-> data ['token'], 'SSL'));  $ this-> data ['cap_title'] = $ this-> language-> get ('cap_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 ('localisation / statut_ordre'); $ 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 ()); 

Comme vous pouvez le constater, le nom de la classe respecte les conventions de dénomination OpenCart standard. Comprenons chaque section.

Au début du indice méthode, nous chargeons le fichier de langue et définissons la valeur du </code> étiquette.</p><pre>$ this-> language-> load ('paiement / coutume'); $ this-> document-> setTitle ('Configuration du mode de paiement personnalisé');</pre><p>Dans la section suivante, nous chargeons le fichier de modèle "<code>setting.php</code> qui nous fournira les méthodes pour économiser <strong>poster</strong> valeurs à la base de données. Nous vérifions également si <strong>poster</strong> les valeurs sont disponibles, nous allons l'enregistrer dans la base de données.</p><pre>$ this-> load-> model ('setting / setting'); if (($ this-> request-> server ['REQUEST_METHOD'] == 'POST')) $ this-> model_setting_setting-> editSetting ('custom', $ this-> request-> post); $ this-> session-> data ['success'] = 'Sauvegardé.'; $ this-> redirect ($ this-> url-> link ('extension / payment', 'token ='. $ this-> session-> data ['token'], 'SSL')); </pre><p>De plus, quelques lignes de code sont utilisées pour configurer les étiquettes statiques qui seront utilisées dans le fichier de modèle..</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>Ensuite, nous avons configuré la variable "action" pour nous assurer que le formulaire est soumis à notre méthode "index" lors de sa soumission. Et de la même manière, l'utilisateur est ramené à la liste des méthodes de paiement s'il clique sur le bouton "Annuler".</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>De plus, il existe un code pour renseigner les valeurs par défaut des champs du formulaire de configuration en mode ajout ou édition..</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>Dans la section suivante, nous chargeons les différentes valeurs d’état d’ordre de la zone disponible, qui seront utilisées pour la liste déroulante dans le formulaire de configuration du système. <strong>Statut de la commande</strong> champ.</p><pre>$ this-> load-> model ('localisation / statut_ordre'); $ this-> data ['order_statuses'] = $ this-> model_localisation_order_status-> getOrderStatuses ();</pre><p>Enfin, nous affectons notre fichier de modèle personnalisé <code>custom.tpl</code> et rendre la vue.</p><pre>$ this-> template = 'payment / custom.tpl'; $ this-> children = array ('common / header', 'common / footer'); $ this-> response-> setOutput ($ this-> render ());</pre><p>C'est la configuration du fichier du contrôleur.</p><h2>Fichiers de langue et de modèle</h2><p>Alors maintenant que nous en avons terminé avec le fichier contrôleur, créons les fichiers de langage et de modèle. Allez-y et créez le fichier de langue à <code>admin / langue / anglais / paiement / custom.php</code>. Assurez-vous que votre fichier de langue ressemble au code que nous avons fourni ci-dessous dans notre exemple. <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>Comme vous pouvez le constater, nous venons de configurer les variables de langue précédemment utilisées dans le fichier contrôleur. C'est assez simple et direct.</p><p>Créons le fichier de vue. Allez-y et créez le fichier modèle à <code>admin / view / template / payment / custom.tpl</code>. Collez le contenu suivant dans le fichier de modèle nouvellement créé. <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']; ?>"sélectionné =" sélectionné "><?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; ?>"taille =" 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; ?>"taille =" 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>Encore une fois, cela devrait être assez facile à comprendre: Le but de ce fichier modèle est de fournir le formulaire de configuration pour notre méthode de paiement personnalisée. Il utilise les variables que nous avons définies précédemment dans le fichier du contrôleur.</p><h2>À quoi ça ressemble</h2><p>Nous avons fini avec les fichiers mis en place. Il est maintenant temps d'aller de l'avant et de tout voir en action. Rendez-vous sur la section admin de l'OpenCart et allez à <strong>Extensions> Paiement</strong>. Vous devriez voir que notre méthode personnalisée est listée juste en dessous de la <strong>Paiement à la livraison</strong>.</p><img src="//accentsconagua.com/img/images_12/create-a-custom-payment-method-in-opencart-part-2.png"><p>Clique sur le <strong>installer</strong> lien pour installer notre méthode de paiement personnalisée. Après l’installation, vous devriez pouvoir voir le <strong>modifier</strong> lien pour ouvrir le formulaire de configuration. Clique sur le <strong>modifier</strong> lien.</p><img src="//accentsconagua.com/img/images_12/create-a-custom-payment-method-in-opencart-part-2_2.png"><p>C'est donc le formulaire de configuration pour lequel nous avons effectué tout le travail nécessaire jusqu'à présent! Comme vous pouvez le constater, nous avons fourni le générique <strong>Statut de la commande</strong> et "<strong>Statut</strong> des champs. En plus de cela, nous venons de montrer comment vous pouvez également fournir les paramètres personnalisés en configurant <strong>Premier paramètre</strong> et <strong>Paramètre deux</strong>.</p><p>Vous pouvez remplir le formulaire et le sauvegarder en cliquant sur le bouton <strong>sauvegarder</strong> bouton. Nous avons mis en place le code pour cela dans notre <code>indice</code> méthode de contrôleur donc il devrait fonctionner hors de la boîte! Et oui, n'oubliez pas de définir le statut sur <strong>Activée</strong> si vous voulez que votre méthode soit disponible dans le front-end!</p><p>Dans la prochaine et dernière partie, nous verrons la contrepartie initiale de la même chose. N'oubliez pas de partager vos pensées en utilisant le flux ci-dessous!</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">Créer un mode de paiement personnalisé dans OpenCart Partie 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">Créer un mode de paiement personnalisé dans OpenCart Part 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="/">fr.accentsconagua.com</a><div class="h-block-a"></div></div> <div class="footer-text"> Informations intéressantes et conseils utiles sur la programmation. Développement de sites Web, conception de sites Web et développement Web. Tutoriels Photoshop. Création de jeux informatiques et d'applications mobiles. Devenez un programmeur professionnel à partir de zéro. </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="Chercher..."> <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>