Intégration de Bitcoin Payment Gateway dans OpenCart Part 1

Dans cette série, nous allons envisager de construire un système de paiement Bitcoin dans notre installation d’OpenCart. Avant de commencer, je vous recommande de vous exercer au développement de base des modules OpenCart si vous n'êtes pas familiarisé avec la construction de vos propres modules..

Une fois cela fait, vous devriez avoir suffisamment de connaissances pour continuer à développer des modules plus avancés. Dans cette série, c'est exactement ce que nous visons.

Commencer

Avant de commencer à créer l'extension, configurez OpenCart sur votre ordinateur local. Ensuite, téléchargez la bibliothèque d'API BitPay à partir de la pièce jointe de l'article et placez-la dans la racine de votre magasin, comme indiqué dans la capture d'écran suivante:

Pour configurer et configurer notre module de paiement Bitcoin, nous avons besoin d'une interface d'administration. Pour ce faire, nous suivrons le modèle MVC pour l'implémentation de notre panneau d'administration.

1. Créez le contrôleur d'administration

  1. Aller vers admin / contrôleur / paiement
  2. Créez un fichier PHP et nommez-le bitpay.php
  3. Ouvrez le fichier dans votre IDE favori et créez une classe conformément à la convention d'appellation de la classe OpenCart, par exemple: la classe ControllerPaymentBitpay étend Controller
  4. Dans la classe du contrôleur, définissez la valeur par défaut indice une fonction. 
  5. Ensuite, dans cette fonction, commencez à écrire le code comme décrit ci-dessous.

1.1 Chargement de la langue et des modèles

$ this-> language-> load ('paiement / bitpay'); $ this-> load-> model ('localisation / statut_ordre'); // chargement du modèle pour obtenir les statuts de commande du système

1.2 Configuration du titre de la page

Pour définir le titre de la page du document, nous utilisons le code suivant:

$ this-> document-> setTitle ($ this-> language-> get ('text_title')); // Définition du titre de l'en-tête du document

1.3. Analyser les éléments des contrôleurs à afficher

/ * Assignation et analyse des valeurs from * / $ this-> data ['heading_title'] = $ this-> language-> get ('text_title'); $ this-> data ['text_enabled'] = $ this-> language-> get ('text_enabled'); // récupère le texte de langue par défaut $ this-> data ['text_disabled'] = $ this-> language-> get ('text_disabled'); // récupère le texte de langue par défaut $ this-> data ['text_high'] = $ this-> language-> get ('text_high'); $ this-> data ['text_medium'] = $ this-> language-> get ('text_medium'); $ this-> data ['text_low'] = $ this-> language-> get ('text_low'); $ this-> data ['api_key'] = $ this-> language-> get ('text_api_key'); $ this-> data ['installed_status'] = $ this-> language-> get ('text_confirmed_status'); $ this-> data ['invalid_status'] = $ this-> language-> get ('text_invalid_status'); $ this-> data ['transaction_speed'] = $ this-> language-> get ('text_transaction_speed'); $ this-> data ['test_mode'] = $ this-> language-> get ('text_test_mode'); $ this-> data ['status'] = $ this-> language-> get ('text_status'); $ this-> data ['sort_order'] = $ this-> language-> get ('text_sort_order'); $ this-> data ['button_save'] = $ this-> language-> get ('button_save'); // récupère le texte de langue par défaut $ this-> data ['button_cancel'] = $ this-> language-> get ('button_cancel'); // récupère le texte de langue par défaut $ this-> data ['tab_general'] = $ this-> language-> get ('tab_general'); // récupère le texte en langue par défaut / * Assignation de texte de fin * / 

1.4. Boutons Enregistrer et Annuler du routage

Le code suivant permet d'affecter des déclencheurs Action / Save & Cancel URL:

$ this-> data ['action'] = HTTPS_SERVER. 'index.php? route = payment /'.$ this-> payment_module_name.' & token = '. $ this-> session-> data ['token']; $ this-> data ['cancel'] = HTTPS_SERVER. 'index.php? route = extension / payment & token ='. $ this-> session-> data ['token']; 

1.5 Obtention des statuts de commande disponibles

Le code suivant obtient tous les statuts de commande du modèle de localisation (qui est pré-codé dans OpenCart) et les analyse pour la vue:

$ this-> data ['order_statuses'] = $ this-> model_localisation_order_status-> getOrderStatuses (); 

1.6. Récupérer des données de la base de données

Notre processus d'épargne viendra dans la section modèle. Cependant, le code suivant est chargé d'extraire ces données de module (le cas échéant) et de les analyser pour les afficher..

/ * Récupération des valeurs de champ enregistrées dans la base de données * / $ this-> data ['bitpay_api_key'] = $ this-> config-> get ('bitpay_api_key'); $ this-> data ['bitpay_confirmed_status_id'] = $ this-> config-> get ('bitpay_confirmed_status_id'); $ this-> data ['bitpay_invalid_status_id'] = $ this-> config-> get ('bitpay_invalid_status_id'); $ this-> data ['bitpay_transaction_speed'] = $ this-> config-> get ('bitpay_transaction_speed'); $ this-> data ['bitpay_test_mode'] = $ this-> config-> get ('bitpay_test_mode'); $ this-> data ['bitpay_status'] = $ this-> config-> get ('bitpay_status'); $ this-> data ['bitpay_sort_order'] = $ this-> config-> get ('bitpay_sort_order'); / * Fin des champs de la base de données * / 

1.6 Rendu du modèle de vue

Le code suivant ajoute des enfants à notre modèle de vue et le rend pour la vue utilisateur..

$ this-> template = 'payment / bitpay.tpl'; // Template Assigning $ this-> children = array ('common / header', 'common / footer'); // Fournit la liste des modèles de modèle $ this-> response-> setOutput ($ this-> render (TRUE), $ this-> config-> get ('config_compression')); // Rendu de la sortie du modèle

2. Création de la vue administrateur

  1. Aller vers admin / view / template / payment
  2. Créez un fichier et nommez-le bitpay.tpl
  3. Vous pouvez placer votre propre code HTML. Dans mon cas, je l'ai fait en utilisant les étapes suivantes.

2.1. Ajout d'en-tête enfant

Pour charger l'en-tête que nous avons transmis en tant qu'enfant à 1,6:

 

2.2 Bloc d'avertissement

Warning Block est une section div qui affiche les avertissements de l'utilisateur, le cas échéant:

 

2.3 Le modèle complet

Le code HTML complet ressemblera à quelque chose comme ci-dessous:

'; ">
*

À ce stade, nous en avons terminé avec la mise en page du module. Il est maintenant temps d’enregistrer les données du module dans la base de données. Nous allons donc mettre un petit code à l'intérieur du contrôleur à cet effet.

Sauvegarde des données

Dans la fonction par défaut de votre contrôleur, placez un code de sérialisation comme indiqué ci-dessous:

if (($ this-> request-> server ['REQUEST_METHOD'] == 'POST') && ($ this-> validate ())) // Vérifie si les données arrivent par la poste et validez-le $ this- > model_setting_setting-> editSetting ($ this-> payment_module_name, $ this-> request-> post); // sauvegarde de toutes les données dans la base de données $ this-> session-> data ['success'] = $ this-> language-> get ('text_success'); // Identifiant de la réussite $ this-> redirect (HTTPS_SERVER. 'Index.php? Route = extension / payment & token ='. $ This-> session-> data ['token']); // Redirection vers la liste des modules de paiement

Introduction à la validation

Voici la fonction de validation qui valide les données requises:

private $ error = array (); // Toutes les erreurs seront enregistrées dans ce tableau, fonction privée validate () // Vérification de la permission du module utilisateur si (! $ This-> user-> hasPermission ('modify', 'payment /'.$ this-> payment_module_name)) $ this-> error ['warning'] = $ this-> language-> get ('error_permission');  // La vérification des autorisations du module utilisateur se termine // Vérifiez si la clé API n'est pas vide si (! $ This-> request-> post ['bitpay_api_key']) $ this-> erreur ['api_key'] = $ this- > language-> get ('error_api_key');  // Api Check se termine ici // S'il n'y a pas d'erreur, la fonction renvoie True, sinon False if (! $ This-> error) return TRUE;  else return FALSE;  // La vérification booléenne se termine ici

Nous avons terminé la création de la structure du module de paiement pour le tableau de bord et vous devriez pouvoir tester le panneau d'administration. N'oubliez pas d'accorder la permission à l'utilisateur d'administration avant de tester.

Conclusion

Dans cet article, nous avons introduit la partie administrative du module de paiement. Notez que c’est une bonne idée de donner plus de contrôle à l’administrateur du site via une interface que, par exemple, d’exiger qu’ils écrivent du code..

Dans le prochain article, nous allons implémenter le module de paiement en ce qui concerne le front-end. En attendant, n'hésitez pas à répondre à vos questions ou commentaires via le formulaire ci-dessous.