Integrieren Sie das Bitcoin Payment Gateway in OpenCart Teil 1

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.

Fertig machen

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.

1. Erstellen Sie den Admin Controller

  1. Navigiere zu Admin / Controller / Zahlung
  2. Erstellen Sie eine PHP-Datei und benennen Sie sie bitpay.php
  3. Öffnen Sie die Datei in Ihrer bevorzugten IDE und erstellen Sie eine Klasse gemäß der Namenskonvention der OpenCart-Klasse. Beispiel: Klasse ControllerPaymentBitpay erweitert Controller
  4. Definieren Sie in der Controller-Klasse den Standard Index Funktion. 
  5. Beginnen Sie dann innerhalb dieser Funktion, den Code wie unten beschrieben zu schreiben.

1.1 Sprache und Modelle laden

$ this-> language-> load ('payment / bitpay'); $ this-> load-> model ('localization / order_status'); // Laden des Modells, um Systembestellstatus abzurufen

1.2 Seitentitel einrichten

Um den Seitentitel des Dokuments festzulegen, verwenden wir den folgenden Code:

$ this-> document-> setTitle ($ this-> language-> get ('text_title')); // Festlegen des Dokumenttitels

1.3. Analysieren der zu betrachtenden Controller-Elemente

/ * 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 * / 

1.4. Routing-Schaltflächen zum Speichern und Abbrechen

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']; 

1,5. Verfügbare Bestellstatus abrufen

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 (); 

1.6. Daten aus der Datenbank abrufen

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 * / 

1.6 Rendern der Ansichtsvorlage

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

2. Admin View erstellen

  1. Navigiere zu admin / view / template / payment
  2. Erstellen Sie eine Datei und benennen Sie sie bitpay.tpl
  3. Sie können Ihren eigenen HTML-Code einfügen. In meinem Fall habe ich das mit den folgenden Schritten gemacht.

2.1. Header-Kind hinzufügen

Um den Header zu laden, den wir als Kind übergeben haben 1.6:

 

2.2 Warnblock

Warnblock ist ein div-Bereich, in dem Benutzerwarnungen angezeigt werden, wenn

 

2.3 Die vollständige Vorlage

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.

Speichern der Daten

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

Einführung Validierung

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.

Fazit

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.