ŠTUDIJA PRIMERA
Leanpay
Obročna plačila za WooCommerce in OpenCart z verificiranimi callbacki in prikazom obročnih cen.
Povzetek
- Industrija: Consumer finance / BNPL (obročni nakupi)
- Deliverable: WooCommerce gateway + prikaz obročnih cen; OpenCart payment modul + widgeti + admin tooling (OCMOD)
- Vloga: Arhitektura, implementacija, integracijsko testiranje
- Integracijske točke: Leanpay vendor API (`/vendor/token`, `/vendor/checkout`, `/vendor/installment-plans`), status callbacki, checkout tokovi + storefront widgeti + admin nastavitve
- Status: Produkcijsko pripravljena integracija
Kontekst
Leanpay omogoča obročno plačevanje za spletne trgovce. Za WooCommerce in OpenCart trgovine mora integracija slediti checkout/order lifecycleu, jasno komunicirati obročne cene skozi storefront in ostati operativno varna pri asinhronih izidih (redirect tokovi + server callbacki).
Problem
Obročna plačila prinesejo več izzivov kot preprost redirect:
- Trgovec potrebuje ažurne obročne plane (po trgu in finančnem produktu/skupini).
- Checkout mora kupca preusmeriti v Leanpay flow in ga varno vrniti nazaj.
- Zaključek naročila mora temeljiti na verificiranem server callbacku (ne na parametrih return URL).
- Administracija potrebuje operativno preglednost (status, logi/metapodatki) in akcije (npr. potrditev dostave).
Cilji projekta
- Leanpay kot prvovrstna plačilna metoda v WooCommerce in OpenCart.
- Prikaz obročnih cen in kalkulator UI na catalog/product/checkout straneh.
- Samodejna in ročna sinhronizacija obročnih planov.
- Zaključevanje naročil prek verificiranih status callbackov in shranjevanje Leanpay metapodatkov.
- Podpora več trgom/okoljem ter tipičnim platformnim feature setom.
Omejitve in izzivi
- Callback pot mora biti avtoritativna (brez “status by redirect URL”).
- Preprečiti neskladja pri zaokroževanju/valutah in uveljaviti market-specific min/max limite.
- Ohraniti nastavitve pregledne (WooCommerce settings; OpenCart multi-store settings).
- Widgeti morajo pravilno reagirati na cart total in variacije, brez vpliva na checkout stabilnost.
Pregled rešitve
Razvili smo Leanpay module za dve platformi s skupnim ciljem: varno obročno plačevanje + konsistenten UX prikaza obročnih cen.
- WooCommerce: gateway + widgeti + scheduled sync planov + admin meta box akcije.
- OpenCart: payment extension + events-based widgeti + lokalno shranjevanje transakcij/planov + admin konfiguracija + OCMOD stolpec statusa v order listu.
Arhitektura in tehnični pristop
WooCommerce modul
Konfiguracija (wp-admin)
- API key + secret, environment (production/sandbox), market endpoint (`si`, `hr`, `ro`, `hu`).
- Callback URL je prikazan kot read-only “API Vendor URL” za kopiranje v Leanpay vendor nastavitve.
- Min/max order total + opcijski IP allowlist v sandbox načinu.
- Title/description + order statusi za success/failure in opcijske custom redirect strani.
Sinhronizacija obročnih planov + shranjevanje
- Ob aktivaciji ustvari WP DB tabelo (`wp_leanpay_cene_tmp_2022`).
- Fetch `vendor/installment-plans` po trgu in lokalno hrani skupine/plane za hitro renderiranje.
- Podpira daily scheduled update in ročni “Update product prices” v nastavitvah.
Storefront widgeti
- Catalog: oznaka “od X / mesec” v product loopu.
- Product: kalkulator tooltip z jQuery UI sliderjem; variacije se osvežujejo prek AJAX.
- Checkout: prikaz obročnih opcij in opcijska “dinamična” obogatitev naslova plačilne metode.
- Shortcode: `[leanpay_catalog]`, `[leanpay_product_page]`.
Inicializacija plačila (token → checkout)
- `process_payment()` preusmeri na interno confirmation skripto.
- Token request na `https://{env}.leanpay.{market}/vendor/token` in submit na `https://{env}.leanpay.{market}/vendor/checkout`.
- Payload vključuje vendor transaction id, amount, billing podatke, jezik in cart items.
Verifikacija status callbacka
- Callback endpoint parsira JSON in poišče order iz `vendorTransactionId`.
- Validira `md5Signature` z `API_secret` in deterministično posodobi order status.
- Na order shrani diagnostične metapodatke (npr. `leanpay_vendor_transaction_id`, `leanpay_order_status`).
Admin operacije
- Meta box (HPOS-safe screen id) prikazuje Leanpay status in omogoča operativne akcije.
- AJAX akcija za potrditev dostave (`/vendor/transaction/delivery`).
- AJAX akcija za status verifikacijskega dokumenta (`/api/verification-document/get`) in zapis v order meta.
WooCommerce Blocks + HPOS kompatibilnost
- Deklarira kompatibilnost z `custom_order_tables` (HPOS) in `cart_checkout_blocks`.
- Registrira Blocks payment method integracijo (`assets/js/checkout.js`).
OpenCart modul
Plačilni tok
- Validira base currency in min/max totale (market-specific privzete vrednosti; RO se razlikuje).
- Generira UUID `vendorTransactionId` in ga shrani v `mojakoda_leanpay_transactions`.
- Pridobi token prek Leanpay in preusmeri na `vendor/checkout?token=...`.
Verificiran callback + mapiranje statusov
- Status endpoint: `index.php?route=extension/payment/leanpay/status`.
- Validira JSON shemo in preveri MD5 podpis z nastavljeno “secret word”.
- `SUCCESS` mapira na konfiguriran “paid” status (z audit komentarjem) in status zapiše v transakcijsko tabelo.
Sinhronizacija planov + lokalno shranjevanje
- Skupine in `loanAmounts` JSON shrani v `mojakoda_leanpay_installments` po državi.
- V adminu se izbere instalment group za prikaz v storefrontu.
Storefront widgeti (Events)
- Vstavi instalment UI na product page (tooltip + slider), checkout in category listing.
- Naloži jQuery UI + `leanpay.css` za kalkulator UI.
Admin UX + operacije
- Multi-store nastavitve (opcijski “global settings”), geo-zone omejitev, sort order in debug logging.
- OCMOD doda stolpec “Leanpay Status” v admin order list (vir: transakcijska tabela).
Tehnološki sklad
- 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 APIji (token, checkout, obročni plani, status callbacki)
Proces implementacije
- Definiranje modela statusov naročil in določitev verificiranega callbacka kot vira resnice.
- Implementacija konfiguracije gatewaya in environment/market logike po platformah.
- Implementacija pridobivanja planov + lokalno shranjevanje + izbira skupine v adminu.
- Dodajanje storefront widgetov (catalog/product/checkout) in cart/variation-aware osveževanja.
- Implementacija verifikacije podpisov in determinističen zaključek naročil.
- Admin tooling (WooCommerce meta box akcije; OpenCart status v order listu prek OCMOD).
Rezultati in učinek
- Leanpay obročna plačila delujejo v WooCommerce in OpenCart z predvidljivim zaključevanjem naročil.
- Kupec vidi obročne cene pravočasno in ima konsistenten kalkulator UX skozi checkout.
- Operativa ima preglednost in akcije v adminu (status metapodatki, delivery/verification tokovi, logi).
- Podatki o obročnih planih ostajajo ažurni z background updateom in ročnimi overridei.
Refleksija
Pri obročnih plačilih je stabilnost odvisna od tega, da je podpisan server callback edini vir resnice. Redirect/return tok je UX pot, ne signal za avtorizacijo. To prepreči lažne “paid” statuse in zmanjša support breme zaradi dvoumnih izidov.
Povzetek
Leanpay smo integrirali v WooCommerce in OpenCart kot varno obročno plačilo z lokalnim shranjevanjem planov, prikaznimi widgeti in verificiranimi status callbacki. OpenCart paket dodatno vključuje OCMOD izboljšavo, ki v admin order listu prikaže Leanpay status.