STUDIJA SLUČAJA
Leanpay
Obročno plaćanje za WooCommerce i OpenCart s verificiranim callbackovima i prikazom cijena na rate.
Sažetak
- Industrija: Consumer finance / BNPL (kupnja na rate)
- Isporuka: WooCommerce gateway + prikaz cijena na rate; OpenCart payment modul + widgeti + admin alati (OCMOD)
- Uloga: Arhitektura, implementacija, integracijsko testiranje
- Integracijske točke: Leanpay vendor API (`/vendor/token`, `/vendor/checkout`, `/vendor/installment-plans`), status callbacki, checkout tokovi + storefront widgeti + admin postavke
- Status: Integracija spremna za produkciju
Kontekst
Leanpay omogućuje obročno plaćanje za online trgovce. Za WooCommerce i OpenCart trgovine integracija mora pratiti životni ciklus checkouta i narudžbe, jasno prikazivati cijene na rate u storefrontu i ostati operativno sigurna pri asinkronim ishodima (redirect tokovi + serverski callbackovi).
Problem
Obročno plaćanje donosi više izazova nego jednostavan redirect:
- Trgovac treba ažurne planove otplate (po tržištu i financijskom proizvodu/grupi).
- Checkout mora kupca preusmjeriti u Leanpay tok i sigurno ga vratiti natrag.
- Zaključivanje narudžbe mora se temeljiti na verificiranom serverskom callbacku (ne na parametrima return URL-a).
- Administracija treba operativnu preglednost (status, logovi/metapodatci) i akcije (npr. potvrda dostave).
Ciljevi projekta
- Leanpay kao prvoklasna metoda plaćanja u WooCommerceu i OpenCartu.
- Prikaz cijena na rate i UI kalkulator na stranicama kataloga/proizvoda/checkouta.
- Automatska i ručna sinkronizacija planova otplate.
- Zaključivanje narudžbi preko verificiranih status callbackova i pohrana Leanpay metapodataka.
- Podrška za više tržišta/okruženja i tipičan skup značajki platforme.
Ograničenja i izazovi
- Callback putanja mora biti autoritativna (bez “status by redirect URL”).
- Spriječiti neusklađenosti pri zaokruživanju/valutama i uvesti min/max limite specifične za tržište.
- Zadržati postavke preglednima (WooCommerce settings; OpenCart multi-store settings).
- Widgeti moraju ispravno reagirati na ukupnu vrijednost košarice i varijacije, bez utjecaja na stabilnost checkouta.
Pregled rješenja
Razvili smo Leanpay module za dvije platforme sa zajedničkim ciljem: sigurno obročno plaćanje i dosljedan UX prikaza cijena na rate.
- WooCommerce: gateway + widgeti + planirana sinkronizacija planova + admin meta box akcije.
- OpenCart: payment extension + widgeti bazirani na Events + lokalna pohrana transakcija/planova + admin konfiguracija + OCMOD stupac statusa u listi narudžbi.
Arhitektura i tehnički pristup
WooCommerce modul
Konfiguracija (wp-admin)
- API key + secret, environment (production/sandbox), market endpoint (`si`, `hr`, `ro`, `hu`).
- Callback URL je prikazan kao read-only “API Vendor URL” za kopiranje u Leanpay vendor postavke.
- Min/max order total + opcijski IP allowlist u sandbox načinu rada.
- Title/description + order statusi za success/failure i opcijske prilagođene redirect stranice.
Sinkronizacija planova otplate + pohrana
- Pri aktivaciji stvara WP DB tablicu (`wp_leanpay_cene_tmp_2022`).
- Dohvaća `vendor/installment-plans` po tržištu i lokalno pohranjuje grupe/planove za brzo renderiranje.
- Podržava dnevno planirano ažuriranje i ručni “Update product prices” u postavkama.
Storefront widgeti
- Katalog: oznaka “od X / mjesec” u product loopu.
- Proizvod: kalkulator tooltip s jQuery UI sliderom; varijacije se osvježavaju preko AJAX-a.
- Checkout: prikaz opcija na rate i opcijsko “dinamično” obogaćivanje naziva metode plaćanja.
- Shortcode: `[leanpay_catalog]`, `[leanpay_product_page]`.
Inicializacija plaćanja (token → checkout)
- `process_payment()` preusmjerava na internu confirmation skriptu.
- Token request na `https://{env}.leanpay.{market}/vendor/token` i submit na `https://{env}.leanpay.{market}/vendor/checkout`.
- Payload uključuje vendor transaction id, iznos, billing podatke, jezik i stavke košarice.
Verifikacija status callbacka
- Callback endpoint parsira JSON i pronalazi narudžbu iz `vendorTransactionId`.
- Validira `md5Signature` s `API_secret` i deterministički ažurira status narudžbe.
- U narudžbu sprema dijagnostičke metapodatke (npr. `leanpay_vendor_transaction_id`, `leanpay_order_status`).
Admin operacije
- Meta box (HPOS-safe screen id) prikazuje Leanpay status i omogućuje operativne akcije.
- AJAX akcija za potvrdu dostave (`/vendor/transaction/delivery`).
- AJAX akcija za status verifikacijskog dokumenta (`/api/verification-document/get`) i upis u order meta.
WooCommerce Blocks + HPOS kompatibilnost
- Deklarira kompatibilnost s `custom_order_tables` (HPOS) i `cart_checkout_blocks`.
- Registrira Blocks payment method integracijo (`assets/js/checkout.js`).
OpenCart modul
Tok plaćanja
- Validira osnovnu valutu i min/max iznose (zadane vrijednosti specifične za tržište; RO se razlikuje).
- Generira UUID `vendorTransactionId` i sprema ga u `mojakoda_leanpay_transactions`.
- Dohvaća token preko Leanpaya i preusmjerava na `vendor/checkout?token=...`.
Verificiran callback + mapiranje statusov
- Status endpoint: `index.php?route=extension/payment/leanpay/status`.
- Validira JSON shemu i provjerava MD5 potpis s postavljenom “secret word”.
- `SUCCESS` mapira na konfiguriran “paid” status (s audit komentarom) i status upisuje u transakcijsku tablicu.
Sinkronizacija planova + lokalna pohrana
- Skupine i `loanAmounts` JSON sprema u `mojakoda_leanpay_installments` po državi.
- U adminu se odabire instalment group za prikaz u storefrontu.
Storefront widgeti (Events)
- Umeće instalment UI na product page (tooltip + slider), checkout i category listing.
- Učitava jQuery UI + `leanpay.css` za kalkulator UI.
Admin UX + operacije
- Multi-store postavke (opcijski “global settings”), ograničenje geo-zona, sort order i debug logging.
- OCMOD dodaje stupac “Leanpay Status” u admin order list (izvor: transakcijska tablica).
Tehnološki stack
- WordPress + WooCommerce (gateway + Blocks integracija)
- OpenCart (payment extension + Events + OCMOD)
- PHP (moduli, callback verifikacija, lokalna persistenca)
- JavaScript/CSS (widgeti, jQuery UI slider, admin settings UI)
- Leanpay vendor API-ji (token, checkout, planovi otplate, status callbacki)
Proces implementacije
- Definiranje modela statusa narudžbi i određivanje verificiranog callbacka kao izvora istine.
- Implementacija konfiguracije gatewaya i environment/market logike po platformama.
- Implementacija dohvaćanja planova + lokalna pohrana + odabir grupe u adminu.
- Dodavanje storefront widgeta (catalog/product/checkout) i cart/variation-aware osvježavanja.
- Implementacija verifikacije potpisa i determinističko zaključivanje narudžbi.
- Admin alati (WooCommerce meta box akcije; OpenCart status u order listi preko OCMOD-a).
Rezultati i učinak
- Leanpay plaćanja na rate rade u WooCommerceu i OpenCartu s predvidljivim zaključivanjem narudžbi.
- Kupac vidi cijene na rate na vrijeme i ima dosljedan kalkulator UX kroz checkout.
- Operativa ima preglednost i akcije u adminu (status metapodatci, delivery/verification tokovi, logovi).
- Podaci o planovima otplate ostaju ažurni uz pozadinska ažuriranja i ručne override-e.
Refleksija
Kod plaćanja na rate stabilnost ovisi o tome da je potpisani serverski callback jedini izvor istine. Redirect/return tok je UX put, a ne signal za autorizaciju. To sprječava lažne “paid” statuse i smanjuje opterećenje podrške zbog dvosmislenih ishoda.
Sažetak
Leanpay smo integrirali u WooCommerce i OpenCart kao sigurno obročno plaćanje s lokalnom pohranom planova, widgetima za prikaz i verificiranim status callbackovima. OpenCart paket dodatno uključuje OCMOD poboljšanje koje u listi narudžbi u adminu prikazuje Leanpay status.