Integrați Gateway de plată Bitcoin în OpenCart Partea 1

Î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.

Noțiuni de bază

Î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.

1. Creați controlerul de administrare

  1. Navigheaza catre admin / controler / de plată
  2. Creați un fișier PHP și denumiți-l bitpay.php
  3. Deschideți fișierul din IDE preferat și creați o clasă după convenția de numire a clasei OpenCart, de exemplu: clasa ControllerPaymentBitpay extinde Controller
  4. În interiorul clasei de controler, definiți setarea implicită index funcţie. 
  5. Apoi, în interiorul acestei funcții, începeți să scrieți codul ca mai jos.

1.1 Încărcarea limbii și modelelor

$ 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

1.2 Configurarea titlului paginii

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

1.3. Parsarea elementelor de control pentru elementele de vizualizare

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

1.4. Trasează butoanele Salvare & Anulare

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

1.5. Obținerea statusurilor de comenzi disponibile

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

1.6. Preluarea datelor din baza de date

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

1.6 Redarea șablonului de vizualizare

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

2. Crearea vizualizării Admin

  1. Navigheaza catre admin / vizualizare / șablon / plată
  2. Creați un fișier și denumiți-l bitpay.tpl
  3. Puteți plasa propriul dvs. HTML. În cazul meu, am făcut asta folosind următorii pași.

2.1. Adăugarea antetului copilului

Pentru a încărca antetul pe care am trecut la copil 1.6:

 

2.2 Blocul de avertizare

Blocul de avertizare este o secțiune div care va afișa avertismentele utilizatorului dacă există:

 

2.3 Modelul complet

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.

Salvarea datelor

Î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ă

Introducere Validare

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.

Concluzie

Î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.

Cod