I den forrige opplæringen begynte vi å implementere et Bitcoin betalingssystem. Spesielt introduserte vi et dashbord for å gjøre det mulig for brukerne å administrere plugin. I denne veiledningen vil vi fortsette å jobbe med pluginet ved å bygge butikkfronten.
katalog / styreenhet / betaling
. bitpay.php
. klassen ControllerPaymentBitpay utvider kontrolleren
. index
funksjon.indeks ()
funksjon, skriv koden som under.Den første linjen i følgende kode laster språket sitt inn i kontrolleren, og de neste linjene analyserer koblinger og språktekster for visningsbruken.
$ Dette-> Språk> load ( 'betaling / bitpay'); $ this-> data ['button_bitpay_confirm'] = $ this-> language-> get ('text_button_confirm'); $ this-> data ['continue'] = $ this-> url-> link ('kassa / suksess');
Slik angir du maledestinasjonen:
$ this-> template = $ this-> config-> get ('config_template'). '/Template/payment/bitpay.tpl';
Slik lager du mal: $ Dette-> render ();
.
Frem til dette punktet har vi kun skrevet kode som omhandler modulens innstillinger og layout. Her skal vi fokusere spesielt på å kommunisere med API. I denne forbindelse vil vi skape en annen funksjon inne i vår kontroller som er ansvarlig for kommunikasjon med BitPay API.
Så vi skal skape en offentlig funksjon send ()
for å oppnå vårt mål, og rett innenfor denne funksjonen er koden forklart linje for linje som nedenfor:
Vi har to nødvendige biblioteker / klasser som skal lastes inn i vår kontroller, dvs. BitPay Library API og Order Model:
inkludere DIR_APPLICATION. '... /bitpay/bp_lib.php'; $ Dette-> last> modell ( 'checkout / ordre');
(Siden BitPay-biblioteket ikke er et OpenCart-basert bibliotek, inkluderte vi direkte sine funksjoner i vår kontroller som vist i første linje ovenfor.)
For å få fullstendig Bestillingsdetaljer kan vi bruke dette:
$ order = $ this-> model_checkout_order-> getOrder ($ this-> session-> data ['order_id']);
De tildelte variablene får alle nødvendige detaljer i form av en matrise.
Og for å formatere ordren som standard valgt valuta, bruker vi:
$ price = $ this-> currency-> format ($ rekkefølge ['total'], $ rekkefølge ['currency_code'], $ rekkefølge ['currency_value'], falsk);
Følgende kode er ansvarlig for samhandling med API og analyse av de nødvendige dataene til API-funksjonen.
$ posData = $ rekkefølge ['order_id']; // Ordreinformasjon som skal legges inn i API $ options = array ('apiKey' => $ this-> config-> get ('bitpay_api_key'), // API-nøkkel hentet fra databasen 'notificationURL' => $ this-> url-> link ('betaling / bitpay / tilbakeringing'), // tilbakekallingsadressen for API 'redirectURL' => $ this-> url-> link ('konto / ordre / info & order_id ='. $ rekkefølge ['order_id'] ), // Ordreinformasjon URL 'valuta' => $ rekkefølge ['currency_code'], // Bestilt valuta kode 'transactionSpeed' => $ this-> config-> get ('bitpay_transaction_speed'), // Transaksjonshastighet API-dokumentasjonen for detaljer) 'testMode' => $ this-> config-> get ('bitpay_test_mode') // Sett testmodus aktivert eller deaktivert); $ respons = bpCreateInvoice ($ rekkefølge ['order_id'], $ pris, $ posData, $ alternativer); // Parse informasjonen til API
For noen ugyldige handlinger kaster API-en en feil tilbake til brukeren. Så kaster følgende kode et svar i JSON-format til oss:
hvis (array_key_exists ('error', $ response) echo "\" error \ ": \" Feil: Problem kommuniserer med betalingsleverandøren. \\ nVennligst prøv igjen senere. \ ""; else echo "\ "url \": \ "". $ respons ["url"]. "\" ";
Det bør være klart fra navnet at dette ville være API tilbakeringingsfunksjonen. Den returnerer nødvendig betalingsinformasjon og kaster den til brukeren. Følg trinnene nedenfor:
Ring tilbake()
. DIR_APPLICATION. '... /bitpay/bp_lib.php';
.$ apiKey = $ this-> config-> get ('bitpay_api_key');
$ response = bpVerifyNotification ($ apiKey);
hvis (is_string ($ respons))
// Vis svarfeilskoden her
bytte ($ respons ['status']) // Hvis ordren er vellykket og fullstendig tilfelle 'bekreftet': sak 'fullstendig': $ this-> load-> model ('checkout / order'); // Laster bestillingsmodellen $ order_id = $ respons ['posData']; // Få bestillings-ID fra svaret $ order = $ this-> model_checkout_order-> getOrder ($ order_id); // Få bestillingsdetaljer $ this-> model_checkout_order-> bekreft ($ order_id, $ this-> config-> get ('bitpay_confirmed_status_id')); // Bekreft bestillingsstatus som fullstendig pause; saken 'ugyldig': // Hvis bestillingen er ugyldig på grunn av noen problemer $ this-> load-> model ('checkout / order'); // laster bestillingsmodellen $ order_id = $ respons ['posData']; // Få bestillings-ID fra svaret $ order = $ this-> model_checkout_order-> getOrder ($ order_id); // Få bestillingsdetaljer $ this-> model_checkout_order-> bekreft ($ order_id, $ this-> config-> get ('bitpay_invalid_status_id')); // Bekreft bestillingsstatus som ugyldig pause;
Visningen vi opprettet er ganske enkel, bare en knapp med en Ajax-forespørsel til API:
Denne serien tjener som en introduksjon til å bygge mer avanserte OpenCart-moduler. Herfra bør du kunne følge OpenCart-dokumentasjonen for å fortsette å bygge ut dette pluginet (og til og med noen av dine egne).
Vennligst legg inn alle spørsmål, kommentarer og tilbakemelding i skjemaet under.