În această serie, vom analiza construirea unui sistem de plăți Bitcoin în instalarea OpenCart. Înainte de a începe, vă recomandăm să practicați dezvoltarea modulului OpenCart de bază dacă nu sunteți familiarizat cu modul de a construi propriile module.
După ce ați terminat, trebuie să aveți suficiente cunoștințe pentru a continua dezvoltarea modulelor mai avansate. În această serie, exact asta ne propunem să facem.
Înainte de a începe construirea extensiei, configurați OpenCart pe mașina dvs. locală. Apoi, descărcați Biblioteca API BitPay din atașamentul de articol și plasați-o în rădăcina magazinului după cum se arată în următoarea imagine de ecran:
Pentru a configura și a configura modulul de plată Bitcoin, avem nevoie de o interfață de administrare. Pentru a face acest lucru, vom urma modelul MVC pentru implementarea panoului nostru admin.
admin / controler / de plată
. bitpay.php
. clasa ControllerPaymentBitpay extinde Controller
. index
funcţie. $ This-> language-> de încărcare ( 'plată / bitpay'); $ This-> a sarcinii> modelul ( 'localizare / order_status'); // încărcarea modelului pentru a obține statutul de comandă al sistemului
Pentru a seta titlul de pagină al documentului, folosim următorul cod:
$ This-> pe documente> SetTitle ($ this-> language-> get ( 'text_title')); // Stabiliți titlul titlului documentului
/ * Atribuirea și parsarea valorilor din * / $ this-> data ['title_title'] = $ this-> language-> get ('text_title'); $ acest-> date ['text_enabled'] = $ this-> language-> get ('text_enabled'); // primește textul limbii implicite $ this-> data ['text_disabled'] = $ this-> language-> get ('text_disabled'); // primește textul limbii implicite $ this-> data ['text_high'] = $ this-> language-> get ('text_high'); $ this-> data ['text_medium'] = $ acest-> limbă-> primi ('text_medium'); $ acest-> date ['text_low'] = $ this-> language-> get ('text_low'); $ this-> data ['api_key'] = $ acest-> limbă-> obține ('text_api_key'); $ this-> data ['confirmat_status'] = $ this-> language-> get ('text_confirmed_status'); $ this-> data ['invalid_status'] = $ acest-> limbă-> primi ('text_invalid_status'); $ this-> data ['transaction_speed'] = $ acest-> limbă-> obține ('text_transaction_speed'); $ this-> data ['test_mode'] = $ acest-> limbă-> primi ('text_test_mode'); $ acest-> date ['status'] = $ this-> language-> get ('text_status'); $ acest-> date ['sort_order'] = $ this-> language-> get ('text_sort_order'); $ this-> data ['button_save'] = $ acest-> limbă-> primi ('button_save'); // primește textul limbii implicite $ this-> data ['button_cancel'] = $ this-> language-> get ('button_cancel'); // primește textul limbii implicite $ this-> data ['tab_general'] = $ this-> language-> get ('tab_general'); // primește textul limbajului implicit / * End Text Assignation * /
Următorul cod este utilizat pentru a atribui declanșatoare de acțiuni / salvare & anulare a adreselor URL:
$ this-> data ['action'] = HTTPS_SERVER. 'index.php? route = plată /'.$ acest nume-> numele plății_module.' & token = '. $ This->> Session- date [ 'jeton']; $ this-> data ['anulați'] = HTTPS_SERVER. 'index.php? route = extensie / plată & token ='. $ This->> Session- date [ 'jeton'];
Următorul cod obține toate stadiile comenzilor din modelul de localizare (care este pre-codificat în OpenCart) și îl analizează pentru vizualizare:
$ this-> data ['ordine_status'] = $ this-> model_localisation_order_status-> getOrderStatuses ();
Procesul nostru de salvare va veni în secțiunea de model. Cu toate acestea, următorul cod este responsabil pentru preluarea datelor modulului (dacă există) și parsarea acestuia pentru vizualizare.
/ * Preluarea valorilor câmpului salvate în baza de date * / $ this-> data ['bitpay_api_key'] = $ this-> config-> get ('bitpay_api_key'); $ acest-> date ['bitpay_confirmed_status_id'] = $ this-> config-> get ('bitpay_confirmed_status_id'); $ this-> data ['bitpay_invalid_status_id'] = $ acest-> config-> get ('bitpay_invalid_status_id'); $ acest-> date ['bitpay_transaction_speed'] = $ this-> config-> get ('bitpay_transaction_speed'); $ acest-> date ['bitpay_test_mode'] = $ this-> config-> get ('bitpay_test_mode'); $ acest-> date ['bitpay_status'] = $ this-> config-> get ('bitpay_status'); $ acest-> date ['bitpay_sort_order'] = $ this-> config-> get ('bitpay_sort_order'); / * Câmpurile bazei de date preiau capete * /
Următorul cod adaugă copii în șablonul de vizualizare și îl redă pentru vizualizarea utilizatorului.
$ this-> template = 'plata / bitpay.tpl'; // șablon care atribuie $ this-> children = array ('common / header', 'common / footer'); // Oferă lista de șabloane childeren $ this-> response-> setOutput ($ this-> render (TRUE), $ this-> config-> get ('config_compression')); // Realizarea șablonului de ieșire
admin / vizualizare / șablon / plată
. bitpay.tpl
. Pentru a încărca antetul pe care am trecut la copil 1.6:
Blocul de avertizare este o secțiune div care va afișa avertismentele utilizatorului dacă există:
HTML-ul complet va arata cam asa:
„;">
În acest moment, am terminat cu aspectul modulului. Acum este timpul să salvați datele modulului în baza de date. Deci vom pune un mic cod în interiorul controlerului în acest scop.
În interiorul funcției implicite a controlerului, plasați un cod de serializare după cum se arată mai jos:
dacă ($ this-> request-> server ['REQUEST_METHOD'] == 'POST') && ($ this-> validate ()) // Verificați dacă datele vin prin post și validați > model_setting_setting-> editSetting ($ this-> name_module_name, $ this-> request-> post); // salvarea tuturor datelor în baza de date $ this-> session-> data ['succes'] = $ this-> language-> get ('text_success'); // Identifier de succes $ this-> redirect (HTTPS_SERVER. 'Index.php? Route = extensie / plată & token ='. $ This-> session-> data ['token']); // Redirecționarea către lista modulelor de plată
Următoarea este funcția de validare care validează datele solicitate:
privat $ error = array (); // Toate erorile vor fi salvate în această funcție privată de matrice validate () // User Permission Module Verificați dacă (! $ This-> user-> hasPermission ('modify', 'payment /'.$ this-> payment_module_name)) $ this-> error ['avertisment'] = $ this-> language-> get ('error_permission'); // Verificarea permisiunilor pentru modulul de utilizator se termină // Verificați dacă cheia API nu este goală dacă (! $ This-> request-> post ['bitpay_api_key']) $ this-> error ['api_key'] = > language-> get ( 'error_api_key'); // Api Check se termină aici // Dacă nu există nici o eroare, funcția returnează True else False dacă (! $ This-> error) returnează TRUE; altceva return FALSE; // Verificarea booleană se termină aici
Am terminat crearea structurii modulului de plată pentru tabloul de bord și ar trebui să aveți posibilitatea de a încerca să conduceți panoul de administrare. Nu uitați să acordați permisiunea utilizatorului de administrare înainte de testare.
În acest articol, am introdus partea administrativă a modulului de plată. Rețineți că este o idee bună să oferiți mai mult control administratorului site-ului printr-o interfață decât, de exemplu, să solicitați scrierea în cod.
În următorul articol, vom implementa modulul de plată cu privire la front-end. Între timp, nu ezitați să scrieți întrebări sau comentarii prin formularul de mai jos.