In dieser Serie werden wir uns mit dem Aufbau eines Bitcoin-Zahlungssystems für die Installation von OpenCart befassen. Bevor wir beginnen, empfehle ich Ihnen, die grundlegende Entwicklung des OpenCart-Moduls zu üben, wenn Sie nicht mit dem Erstellen eigener Module vertraut sind.
Wenn Sie fertig sind, sollten Sie über genügend Kenntnisse verfügen, um fortschrittlichere Module entwickeln zu können. In dieser Serie wollen wir genau das tun.
Bevor Sie mit der Erstellung der Erweiterung beginnen, richten Sie OpenCart auf Ihrem lokalen Computer ein. Laden Sie als Nächstes die BitPay-API-Bibliothek aus dem Artikelanhang herunter und platzieren Sie sie wie in der folgenden Abbildung gezeigt in Ihrem Store-Stammverzeichnis:
Um unser Bitcoin Payment Module zu konfigurieren und einzurichten, benötigen wir eine Admin-Oberfläche. Dazu folgen wir dem MVC-Muster für die Implementierung unseres Admin-Panels.
Admin / Controller / Zahlung
. bitpay.php
. Klasse ControllerPaymentBitpay erweitert Controller
. Index
Funktion. $ this-> language-> load ('payment / bitpay'); $ this-> load-> model ('localization / order_status'); // Laden des Modells, um Systembestellstatus abzurufen
Um den Seitentitel des Dokuments festzulegen, verwenden wir den folgenden Code:
$ this-> document-> setTitle ($ this-> language-> get ('text_title')); // Festlegen des Dokumenttitels
/ * Zuweisung und Analyse der from Werte * / $ this-> data ['heading_title'] = $ this-> language-> get ('text_title'); $ this-> data ['text_enabled'] = $ this-> language-> get ('text_enabled'); // erhält Standardsprache text $ this-> data ['text_disabled'] = $ this-> language-> get ('text_disabled'); // erhält Standardsprache text $ 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 ['confirm_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'); // erhält den Standardsprachentext $ this-> data ['button_cancel'] = $ this-> language-> get ('button_cancel'); // erhält den Standardsprachentext $ this-> data ['tab_general'] = $ this-> language-> get ('tab_general'); // erhält Standardsprachentext / * Textende Zuordnung beenden * /
Der folgende Code wird zum Zuweisen von Action / Save & Cancel-URLs verwendet:
$ 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 = Erweiterung / Zahlung & Token ='. $ this-> session-> data ['token'];
Der folgende Code ruft alle Auftragsstatus aus dem Localization-Model (das in OpenCart vorcodiert ist) ab und analysiert es für die Ansicht:
$ this-> data ['order_statuses'] = $ this-> model_localisation_order_status-> getOrderStatuses ();
Unser Speichervorgang wird im Modellbereich erfolgen. Der folgende Code ist jedoch für das Abrufen dieser Moduldaten (falls vorhanden) und das Analysieren für die Ansicht verantwortlich.
/ * Abrufen der in der Datenbank gespeicherten Feldwerte * / $ 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'); / * Datenbankfelder werden abgerufen * /
Der folgende Code fügt der Ansichtsvorlage untergeordnete Elemente hinzu und rendert sie für die Benutzeransicht.
$ this-> template = 'payment / bitpay.tpl'; // Template Zuweisung von $ this-> children = array ('common / header', 'common / footer'); // Liefert die Liste der Template-Kinder. $ This-> response-> setOutput ($ this-> render (TRUE), $ this-> config-> get ('config_compression')); // Rendern der Vorlagenausgabe
admin / view / template / payment
. bitpay.tpl
. Um den Header zu laden, den wir als Kind übergeben haben 1.6:
Warnblock ist ein div-Bereich, in dem Benutzerwarnungen angezeigt werden, wenn
Der vollständige HTML-Code sieht wie folgt aus:
'; ">
An diesem Punkt sind wir mit dem Layout des Moduls fertig. Nun ist es Zeit, die Moduldaten in der Datenbank zu speichern. Wir werden zu diesem Zweck einen kleinen Code in den Controller einfügen.
Platzieren Sie in der Standardfunktion Ihres Controllers den folgenden Serialisierungscode:
if (($ this-> request-> server ['REQUEST_METHOD'] == 'POST') && ($ this-> validate ())) // Prüfung, ob die Daten per Post eingehen, und validieren $ this- > model_setting_setting-> editSetting ($ this-> payment_module_name, $ this-> request-> post); // alle Daten in der Datenbank speichern $ this-> session-> data ['success'] = $ this-> language-> get ('text_success'); // Erfolgskennung $ this-> redirect (HTTPS_SERVER. 'Index.php? Route = extension / payment & token ='. $ This-> session-> data ['token']); // Weiterleitung in die Liste der Zahlungsmodule
Das Folgende ist die Validierungsfunktion, die die erforderlichen Daten überprüft:
private $ error = array (); // Alle Fehler werden in diesem Array gespeichert. Private Funktion validate () // Benutzermodulberechtigung Prüfen Sie, ob (! $ This-> user-> hasPermission ('modify', 'payment /' .$ this-> payment_module_name)) $ this-> error ['warning'] = $ this-> language-> get ('error_permission'); // Benutzermodul-Berechtigungsprüfung endet // Überprüfen Sie, ob der API-Schlüssel nicht leer ist, wenn (! $ This-> request-> post ['bitpay_api_key']) $ this-> error ['api_key'] = $ this- > language-> get ('error_api_key'); // Api Check endet hier // Wenn kein Fehler vorliegt, gibt die Funktion True zurück. False if (! $ This-> error) return TRUE; else return FALSE; // Boolean Check endet hier
Wir haben das Layout des Zahlungsmoduls für das Dashboard erstellt, und Sie sollten in der Lage sein, das Admin-Panel zu testen. Vergessen Sie nicht, dem Administrator vor dem Testen die Berechtigung zu erteilen.
In diesem Artikel haben wir den administrativen Teil des Zahlungsmoduls eingeführt. Beachten Sie, dass es eine gute Idee ist, dem Websiteadministrator mehr Kontrolle über eine Schnittstelle zu geben als beispielsweise, dass er Code schreiben muss.
Im nächsten Artikel implementieren wir das Zahlungsmodul in Bezug auf das Frontend. In der Zwischenzeit können Sie Fragen oder Kommentare über das untenstehende Formular erstellen.