I denna serie ska vi se på att bygga ett Bitcoin betalningssystem i vår installation av OpenCart. Innan vi börjar, rekommenderar jag att du övar den grundläggande OpenCart-modulen om du inte känner till hur du bygger egna moduler.
När du är klar ska du ha tillräckligt med kunskap för att fortsätta utveckla mer avancerade moduler. I den här serien är det precis vad vi strävar efter att göra.
Innan vi börjar bygga förlängningen, ställer du in OpenCart på din lokala maskin. Hämta sedan BitPay API-biblioteket från artikelfästet och placera det i din butiksrots som visas i följande skärmdump:
För att konfigurera och konfigurera vår Bitcoin Payment Module behöver vi ett admingränssnitt. För att göra detta följer vi MVC-mönstret för att implementera vår adminpanel.
admin / styrenheten / betalning
. bitpay.php
. klass ControllerPaymentBitpay utökar Controller
. index
fungera. $ This-> språk-> last (betalning / bitpay '); $ This-> last> modell ( 'lokalisering / BREV'); // Laddar modellen för att få ordning Orderstatus
För att ange Sidtitel för dokumentet använder vi följande kod:
$ This-> dokument-> setTitle ($ this-> språk-> get ( 'text_title')); // Ställa in rubrikrubrikens titel
/ * Tilldela och analysera värdena från * / $ this-> data ['heading_title'] = $ this-> language-> get ('text_title'); $ this-> data ['text_enabled'] = $ this-> language-> get ('text_enabled'); // får standard språktext $ this-> data ['text_disabled'] = $ this-> language-> get ('text_disabled'); // får standard språktext $ 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 ['confirmed_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'); // får standard språktext $ this-> data ['button_cancel'] = $ this-> language-> get ('button_cancel'); // får standard språktext $ this-> data ['tab_general'] = $ this-> language-> get ('tab_general'); // får standard språktext / * Avsluta textöverföring * /
Följande kod används för att tilldela åtgärd / spara och avbryta webbadresser som triggar:
$ this-> data ['action'] = HTTPS_SERVER. 'index.php? route = betalning /'.$ this-> payment_module_name.' & token = '. $ This-> Session-> data [ 'token']; $ this-> data ['cancel'] = HTTPS_SERVER. 'index.php? route = extension / payment & token ='. $ This-> Session-> data [ 'token'];
Följande kod får alla orderstatuser från lokaliseringsmodellen (som är förkodad till OpenCart) och analyserar den för visningen:
$ this-> data ['order_statuses'] = $ this-> model_localisation_order_status-> getOrderStatuses ();
Vår sparprocess kommer i modellavsnittet. Emellertid är följande kod ansvarig för att hämta denna moduldata (om någon) och analysera den för visning.
/ * Hämta de fältvärden som sparas i databasen * / $ 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'); / * Databasfält som hämtar slutar * /
Följande kod lägger till barn i vår visningsmall och gör den till användarvyn.
$ this-> template = 'payment / bitpay.tpl'; // Mall Tilldela $ this-> children = array ('common / header', 'common / footer'); // Ange listan med mall childeren $ this-> response-> setOutput ($ this-> render (TRUE), $ this-> config-> get ('config_compression')); // Rendering av mallutmatningen
admin / view / mall / betalning
. bitpay.tpl
. För att ladda den rubrik som vi passerade som barn på 1,6:
Varning Block är en div sektion som kommer att visa användarvarningar om något:
Den fullständiga HTML-filen kommer att se ut som nedan:
'; ">
Vid denna tidpunkt är vi färdiga med modulens layout. Nu är det dags att spara moduldata i databasen. Så vi lägger lite kod inuti regulatorn för detta ändamål.
Inuti din regulators standardfunktion, placera någon serialiseringskod enligt nedan:
om (($ this-> request-> server ['REQUEST_METHOD'] == 'POST') && ($ this-> validera ())) // Kontrollera om data kommer via post och validera det $ this- > model_setting_setting-> editSetting ($ this-> payment_module_name, $ this-> request-> post); // Spara alla data i databasen $ this-> session-> data ['success'] = $ this-> language-> get ('text_success'); // Succesidentifierare $ this-> omdirigera (HTTPS_SERVER. 'Index.php? Route = extension / payment & token ='. $ This-> session-> data ['token']); // Omdirigering till listan över betalningsmoduler
Följande är valideringsfunktionen som validerar nödvändiga data:
privat $ error = array (); // Alla fel sparas i den här listan. Privata funktioner Validera () // Användarmodul Tillstånd Kontrollera om (! $ This-> user-> hasPermission ('modify', 'payment /'.$ this-> payment_module_name)) $ this-> error ['warning'] = $ this-> language-> get ('error_permission'); // Användarmodul Tillståndskontroll Avsluta // Kontrollera om API-nyckeln inte är tom om (! $ This-> request-> posta ['bitpay_api_key']) $ this-> error ['api_key'] = $ this- > språk-> get ( 'error_api_key'); // Api Check slutar här // Om det inte finns något fel returnerar funktionen True else False if (! $ This-> error) return TRUE; annars returnera FALSE; // Boolean Check slutar här
Vi är klara att skapa betalningsmodullayouten för instrumentbrädan, och du borde kunna testa drivrutinspanelen. Kom ihåg att bevilja tillstånd till administratörsanvändaren före provningen.
I den här artikeln introducerade vi den administrativa delen av betalningsmodulen. Observera att det är en bra idé att ge webbplatsadministratören mer kontroll via ett gränssnitt än att säga att de måste skriva in kod.
I nästa artikel genomför vi betalningsmodulen med avseende på fronten. Under tiden kan du skicka några frågor eller kommentarer via formuläret nedan.