Im vorherigen Tutorial haben wir mit der Einführung eines Bitcoin-Zahlungssystems begonnen. Insbesondere haben wir ein Dashboard eingeführt, mit dem unsere Benutzer das Plugin verwalten können. In diesem Lernprogramm werden wir das Plugin weiterentwickeln, indem wir das Store-Frontend erstellen.
Katalog / Controller / Zahlung
. bitpay.php
. Klasse ControllerPaymentBitpay erweitert Controller
. Index
Funktion.Index()
Funktion, schreiben Sie den Code wie folgt.Die erste Zeile des folgenden Codes lädt seine Sprache in den Controller, und die nächsten Zeilen analysieren Links und Sprachtexte für die Ansicht.
$ this-> language-> load ('payment / bitpay'); $ this-> data ['button_bitpay_confirm'] = $ this-> language-> get ('text_button_confirm'); $ this-> data ['continue'] = $ this-> url-> link ('checkout / success');
So legen Sie das Vorlagenziel fest:
$ this-> template = $ this-> config-> get ('config_template'). "/template/payment/bitpay.tpl";
So rendern Sie die Vorlage: $ this-> render ();
.
Bis jetzt haben wir nur Code geschrieben, der sich speziell mit den Einstellungen des Moduls und seinem Layout befasst. Hier konzentrieren wir uns speziell auf die Kommunikation mit der API. In diesem Zusammenhang erstellen wir eine weitere Funktion in unserem Controller, die für die Kommunikation mit der BitPay-API verantwortlich ist.
Also schaffen wir eine öffentliche Funktion send ()
Um unser Ziel zu erreichen, wird der Code direkt in dieser Funktion Zeile für Zeile wie folgt erklärt:
Wir haben zwei erforderliche Bibliotheken / Klassen, die in unseren Controller geladen werden sollen, d. H. Die BitPay Library API und das Order Model:
include DIR_APPLICATION. '… /bitpay/bp_lib.php'; $ this-> load-> model ('Checkout / order');
(Da die BitPay Library keine OpenCart-basierte Bibliothek ist, haben wir ihre Funktionen direkt in unsere Steuerung aufgenommen, wie in der ersten Zeile oben gezeigt.)
Um die vollständigen Bestelldetails zu erhalten, können wir Folgendes verwenden:
$ order = $ this-> model_checkout_order-> getOrder ($ this-> session-> data ['order_id']);
Die zugewiesenen Variablen erhalten alle notwendigen Details in Form eines Arrays.
Und für die Formatierung der Standardwährung der Bestellung verwenden wir:
$ price = $ this-> Currency-> Format ($ order ['total'], $ order ['currency_code'], $ order ['currency_value'], false);
Der folgende Code ist für die Interaktion mit der API und das Analysieren der erforderlichen Daten für die API-Funktion verantwortlich.
$ posData = $ order ['order_id']; // Bestellinformationen, die in das API $ options = Array geschrieben werden sollen ('apiKey' => $ this-> config-> get ('bitpay_api_key')), // API-Schlüssel aus der Datenbank 'notificationURL' => $ this-> abgerufen url-> link ('payment / bitpay / callback'), // Die API-Callback-URL 'redirectURL' => $ this-> url-> link ('account / order / info & order_id ='. $ order ['order_id'] ), // Bestellinformations-URL 'currency' => $ order ['currency_code'], // Bestellter Währungscode 'transactionSpeed' => $ this-> config-> get ('bitpay_transaction_speed'), // Transaktionsgeschwindigkeit (Siehe die API-Dokumentation für Details) 'testMode' => $ this-> config-> get ('bitpay_test_mode') // Testmodus aktivieren oder deaktivieren (aktivieren); $ response = bpCreateInvoice ($ order ['order_id'], $ price, $ posData, $ options); // Analysiere die Informationen in die API
Bei einigen ungültigen Aktionen gibt die API einen Fehler an den Benutzer zurück. Der folgende Code gibt uns also eine Antwort im JSON-Format:
if (array_key_exists ('error', $ response) echo "\" error \ ": \": Fehler: Problem beim Kommunizieren mit dem Zahlungsanbieter. \\ nBitte versuchen Sie es später erneut. \ ""; else echo "\ "url \": \ "". $ response ["url"]. "\" ";
Aus seinem Namen sollte klar sein, dass dies die API-Callback-Funktion sein würde. Es gibt die erforderlichen Zahlungsinformationen zurück und wirft sie dem Benutzer zu. Folgen Sie den Schritten wie folgt:
Ruf zurück()
. DIR_APPLICATION. '… /Bitpay/bp_lib.php';
.$ apiKey = $ this-> config-> get ('bitpay_api_key');
$ response = bpVerifyNotification ($ apiKey);
if (is_string ($ response))
// Zeigt den Antwortfehlercode hier an
switch ($ response ['status']) // Wenn der Auftrag erfolgreich ist und den Fall abgeschlossen hat 'bestätigt': Fall 'abgeschlossen': $ this-> load-> model ('Checkout / order'); // Laden des Bestellmodells $ order_id = $ response ['posData']; // Holen der Bestell-ID aus der Antwort $ order = $ this-> model_checkout_order-> getOrder ($ order_id); // Bestelldetails abrufen $ this-> model_checkout_order-> confirm ($ order_id, $ this-> config-> get ('bitpay_confirmed_status_id')); // Bestätige den Bestellstatus als vollständigen Bruch; case 'invalid': // Wenn der Auftrag aufgrund einiger Probleme ungültig ist $ this-> load-> model ('checkout / order'); // Laden des Bestellmodells $ order_id = $ response ['posData']; // Holen der Bestell-ID aus der Antwort $ order = $ this-> model_checkout_order-> getOrder ($ order_id); // Bestelldetails abrufen $ this-> model_checkout_order-> confirm ($ order_id, $ this-> config-> get ('bitpay_invalid_status_id')); // Bestätigen Sie den Bestellstatus als ungültigen Bruch.
Die von uns erstellte Ansicht ist ziemlich einfach, nur eine Schaltfläche mit einer Ajax-Anforderung an die API:
Diese Serie dient als Einführung in die Entwicklung fortschrittlicherer OpenCart-Module. Von hier aus sollten Sie in der Lage sein, die OpenCart-Dokumentation zu befolgen, um dieses Plugin weiterentwickeln zu können (und sogar einige von Ihnen selbst)..
Bitte hinterlassen Sie alle Fragen, Kommentare und Rückmeldungen im untenstehenden Formular.