Dans le tutoriel précédent, nous avons commencé à mettre en place un système de paiement Bitcoin. Plus précisément, nous avons introduit un tableau de bord pour permettre à nos utilisateurs d’administrer le plug-in. Dans ce tutoriel, nous allons continuer à travailler sur le plugin en construisant le front-end du magasin..
catalogue / contrôleur / paiement
. bitpay.php
. la classe ControllerPaymentBitpay étend Controller
. indice
une fonction.indice()
fonction, écrivez le code comme ci-dessous.La première ligne du code suivant charge sa langue dans le contrôleur et les lignes suivantes analysent les liens et les textes de langue pour l'utilisation de la vue..
$ this-> language-> load ('paiement / bitpay'); $ this-> data ['button_bitpay_confirm'] = $ this-> language-> get ('text_button_confirm'); $ this-> data ['continue'] = $ this-> url-> link ('checkout / success');
Pour définir la destination du modèle:
$ this-> template = $ this-> config-> get ('config_template'). '/template/payment/bitpay.tpl';
Pour rendre le modèle: $ this-> render ();
.
Jusqu'à présent, nous n'avons écrit que du code qui traite spécifiquement des paramètres du module et de sa présentation. Ici, nous allons nous concentrer spécifiquement sur la communication avec l’API. À cet égard, nous allons créer une autre fonction dans notre contrôleur, chargée de la communication avec l'API BitPay..
Nous allons donc créer un fonction publique send ()
pour atteindre notre objectif, et directement dans cette fonction, le code est expliqué ligne par ligne comme ci-dessous:
Nous avons deux bibliothèques / classes requises à charger dans notre contrôleur, à savoir l'API de bibliothèque BitPay et le modèle de commande:
include DIR_APPLICATION. '… /bitpay/bp_lib.php'; $ this-> load-> model ('commande / commande');
(La bibliothèque BitPay n'étant pas une bibliothèque OpenCart, nous avons directement inclus ses fonctions dans notre contrôleur, comme indiqué à la première ligne ci-dessus.)
Pour obtenir les détails complets de la commande, nous pouvons utiliser ceci:
$ order = $ this-> model_checkout_order-> getOrder ($ this-> session-> data ['order_id']);
Les variables assignées obtiennent tous les détails nécessaires sous la forme d'un tableau.
Et pour formater la devise sélectionnée par défaut pour l'ordre, nous utilisons:
$ price = $ this-> devise-> format ($ order ['total'], $ order ['code_monnaie'], $ order ['valeur_monnaie'], false);
Le code suivant permet d'interagir avec l'API et d'analyser les données requises dans la fonction API..
$ posData = $ order ['order_id']; // Informations de commande à publier dans l'API $ options = array ('apiKey' => $ this-> config-> get ('bitpay_api_key'), // clé d'API extraite de la base de données 'notificationURL' => $ this-> url-> link ('payment / bitpay / callback'), // L'URL de rappel de l'API 'redirectURL' => $ this-> url-> link ('account / order / info & order_id ='. $ order ['order_id'] ), // Informations sur la commande URL 'currency' => $ order ['code_monnaie'], // Code de la devise commandée 'transactionSpeed' => $ this-> config-> get ('bitpay_transaction_speed'), // vitesse de transaction la documentation de l'API pour plus de détails) 'testMode' => $ this-> config-> get ('bitpay_test_mode') // Définit le mode test activé ou désactivé); $ response = bpCreateInvoice ($ order ['order_id'], $ price, $ posData, $ options); // Analyse les informations dans l'API
Pour certaines actions non valides, l'API renvoie une erreur à l'utilisateur. Le code suivant renvoie donc une réponse au format JSON:
if (array_key_exists ('error', $ response)) echo "\" error \ ": \" Erreur: Problème de communication avec le fournisseur de paiement. \\ nVeuillez réessayer plus tard. \ ""; Echho "\ "url \": \ "". $ response ["url"]. "\" ";
Son nom doit clairement indiquer qu'il s'agira de la fonction de rappel de l'API. Il renvoie les informations de paiement nécessaires et les envoie à l'utilisateur. Suivez les étapes ci-dessous:
rappeler()
. DIR_APPLICATION. '… /Bitpay/bp_lib.php';
.$ apiKey = $ this-> config-> get ('bitpay_api_key');
$ response = bpVerifyNotification ($ apiKey);
if (is_string ($ response))
// Affiche le code d'erreur de réponse ici
switch ($ response ['status'])) // Si la commande est réussie et complète le cas 'confirmé': le cas 'complete': $ this-> load-> model ('checkout / order'); // Chargement du modèle de commande $ order_id = $ response ['posData']; // Obtention de l'ID de commande à partir de la réponse $ order = $ this-> model_checkout_order-> getOrder ($ order_id); // Obtenir les détails de la commande $ this-> model_checkout_order-> confirm ($ order_id, $ this-> config-> get ('bitpay_confirmed_status_id')); // Confirmer le statut de la commande en tant que pause complète; case 'invalid': // Si la commande est invalide en raison de certains problèmes $ this-> load-> model ('checkout / order'); // chargement du modèle de commande $ order_id = $ response ['posData']; // Obtention de l'ID de commande à partir de la réponse $ order = $ this-> model_checkout_order-> getOrder ($ order_id); // Obtenir les détails de la commande $ this-> model_checkout_order-> confirm ($ order_id, $ this-> config-> get ('bitpay_invalid_status_id')); // Confirmer le statut de la commande en tant que pause invalide;
La vue que nous avons créée est assez simple, juste un bouton avec une requête Ajax à l’API:
Cette série est une introduction à la construction de modules OpenCart plus avancés. À partir de là, vous devriez pouvoir suivre la documentation OpenCart afin de continuer à construire ce plugin (et même certains de vos propres).
S'il vous plaît laissez toutes les questions, commentaires et commentaires dans le formulaire ci-dessous.