ŠTUDIJA PRIMERA
Paywiser
WooCommerce payment gateway plugin za kartična plačila.
Povzetek
- Industrija: Payments / Merchant acquiring
- Deliverable: WordPress + WooCommerce payment gateway plugin
- Vloga: Arhitektura, implementacija, integracijsko testiranje
- Integracijske točke: WooCommerce legacy checkout + WooCommerce Blocks checkout, postback endpoint, redirect return handling
- Status: Produkcijska integracija
Kontekst
Paywiser ponuja merchant acquiring in payment gateway infrastrukturo za kartična plačila. Za WooCommerce trgovce mora integracija slediti življenjskemu ciklu naročil in obvladati asinhrone izide (redirect tokovi in server-side postbacki) brez dvoumnih stanj.
Problem
Kartični plačilni tokovi v WooCommerce imajo nekaj nespremenljivih zahtev:
- Checkout mora prehajati v predvidljiva stanja (pending → paid/failed).
- Redirect-based tokovi morajo pravilno obravnavati “customer returned”.
- Server-to-server notifikacije je treba verificirati proti manipulaciji.
- Moderen checkout (WooCommerce Blocks) potrebuje ločen integracijski sloj.
Cilji projekta
- Paywiser kot prvovrstna plačilna metoda v WooCommerce checkoutu.
- Podpora Paywiser **Redirect** in **Hosted** rešitvam z enim pluginom.
- Verifikacija postback payloadov in deterministično posodabljanje stanj naročil.
- Kompatibilnost z legacy checkout in Blocks checkout.
Omejitve in izzivi
- Slediti `WC_Payment_Gateway` lifecycle, da checkout ostane stabilen.
- Postback/return parametre obravnavati kot nezaupanja vredne in jih verificirati.
- Izogniti se zaokrožitvenim odstopanjem z usklajenimi zneski z WooCommerce totals.
- Nastavitve ohraniti pregledne in prijazne v `WooCommerce → Settings → Payments`.
Pregled rešitve
Implementirali smo WooCommerce gateway plugin, ki:
- registrira novo plačilno metodo (`paywiser`) z nastavljivim naslovom/opisom
- podpira dva načina: Redirect (kupec se preusmeri na Paywiser plačilne strani) in Hosted (podatki kartice se vnesejo v checkout UI in se pošljejo Paywiserju).
- pošlje transakcije na Paywiser TxHandler prek HTTP POST na `https://office.paywiser.com/secure/txHandler.php`
- prejme in verificira rezultate prek postback endpointa (`/wc-api/pw-postback`) in return URL handlerja na strani `order-received` (kjer je relevantno).
Arhitektura in tehnični pristop
Konfiguracija gatewaya
- `sid` in `rcode`
- tip rešitve: `redirect` ali `hosted`
- akcija transakcije: `PREAUTH` ali `PAYMENT`
Zagon checkouta
- pošlje formo na TxHandler z zneski/valuto, podatki kupca/računa, postback URL in redirect URL
- vključi request hash (MD5) za validacijo zahteve
Postback verifikacija in zaključek naročila
Postback handler verificira payload s podpisom `vrfy` SHA-256 (na osnovi `sid;rcode;txid;status;amount;currency;tx_action`).
- uspešna plačila: `payment_complete(txid)` (različice glede na redirect/hosted)
- neuspešna plačila: status `failed` z diagnostičnim sporočilom
WooCommerce Blocks podpora
Plugin vključuje Blocks integracijo (`checkout.js`) in deklarira kompatibilnost z WooCommerce funkcijami (Cart/Checkout Blocks).
Tehnološki sklad
- WordPress
- WooCommerce
- PHP (WooCommerce gateway implementacija)
- JavaScript (Blocks checkout integracija + input masking za hosted flow)
- Paywiser TxHandler + postback verifikacija (Acquiring API)
Proces implementacije
- Modeliranje redirect vs hosted tokov in mapiranje v WooCommerce statusne tranzicije.
- Implementacija gateway nastavitev in validacije v wp-admin.
- Implementacija TxHandler POST pošiljanja in request hashinga.
- Dodajanje verificiranega postback handlerja (`/wc-api/pw-postback`) in return URL verifikacije.
- Integracija WooCommerce Blocks checkout in end-to-end testiranje obeh rešitev.
Rezultati in učinek
- WooCommerce trgovci lahko omogočijo Paywiser kartična plačila s predvidljivim tokom.
- podprti sta redirect in hosted rešitvi
- server-side postbacki so verificirani pred spremembo stanja
- checkout ostaja kompatibilen z legacy in Blocks checkout izkušnjo
Refleksija
Redirect-based plačila so operativno varna le, če je server-to-server postback vir resnice in je pred spremembo stanja verificiran. To prepreči “status po URL parametru” prakse in zmanjša support breme zaradi dvoumnih izidov.
Povzetek
Plugin integrira Paywiser v WooCommerce z dvema podprtima načinoma plačila, verificiranim postbackom in kompatibilnostjo z legacy in Blocks checkout tokovi.