STUDIJA SLUČAJA
Paywiser
WooCommerce payment gateway dodatak za kartična plaćanja.
Sažetak
- Industrija: Payments / Merchant acquiring
- Deliverable: WordPress + WooCommerce payment gateway plugin
- Uloga: Arhitektura, implementacija, integracijsko testiranje
- Integracijske točke: WooCommerce legacy checkout + WooCommerce Blocks checkout, postback endpoint, redirect return handling
- Status: Produkcijska integracija
Kontekst
Paywiser nudi merchant acquiring i payment gateway infrastrukturu za kartična plaćanja. Za WooCommerce trgovce integracija mora slijediti životni ciklus narudžbi i pokriti asinkrone ishode (redirect tokovi i server-side postbackovi) bez dvosmislenih statusa.
Problem
Kartični tokovi plaćanja u WooCommerceu imaju nekoliko nepromjenjivih zahtjeva:
- Checkout mora prelaziti u predvidljive statuse (pending → paid/failed).
- Redirect-based tokovi moraju pravilno obrađivati “customer returned”.
- Server-to-server notifikacije treba verificirati protiv manipulacije.
- Moderni checkout (WooCommerce Blocks) zahtijeva zaseban integracijski sloj.
Ciljevi projekta
- Paywiser kao prvoklasna metoda plaćanja u WooCommerce checkoutu.
- Podrška Paywiser **Redirect** i **Hosted** rješenjima u jednom pluginu.
- Verifikacija postback payloadova i determinističko ažuriranje statusa narudžbi.
- Kompatibilnost s legacy checkoutom i Blocks checkoutom.
Ograničenja i izazovi
- Slijediti `WC_Payment_Gateway` lifecycle kako bi checkout ostao stabilan.
- Postback/return parametre tretirati kao nepouzdane i verificirati ih.
- Izbjeći odstupanja u zaokruživanju usklađenim iznosima s WooCommerce totalsima.
- Postavke zadržati preglednima i prijateljskima u `WooCommerce → Settings → Payments`.
Pregled rješenja
Implementirali smo WooCommerce gateway plugin koji:
- registrira novu metodu plaćanja (`paywiser`) s podesivim naslovom/opisom
- podržava dva načina: Redirect (kupac se preusmjerava na Paywiser stranicu za plaćanje) i Hosted (podaci kartice unose se u checkout UI i šalju Paywiseru).
- šalje transakcije na Paywiser TxHandler putem HTTP POST-a na `https://office.paywiser.com/secure/txHandler.php`
- prima i verificira rezultate putem postback endpointa (`/wc-api/pw-postback`) i return URL handlerja na strani `order-received` (gdje je relevantno).
Arhitektura i tehnički pristup
Konfiguracija gatewaya
- `sid` i `rcode`
- tip rješenja: `redirect` ili `hosted`
- akcija transakcije: `PREAUTH` ili `PAYMENT`
Zagon checkouta
- šalje formu na TxHandler s iznosima/valutom, podacima kupca/računa, postback URL i redirect URL
- uključuje request hash (MD5) za validaciju zahtjeva
Postback verifikacija i zaključek narudžbe
Postback handler verificira payload s potpisom `vrfy` SHA-256 (na temelju `sid;rcode;txid;status;amount;currency;tx_action`).
- uspješna plaćanja: `payment_complete(txid)` (varijante ovisno o redirect/hosted)
- neuspješna plaćanja: status `failed` s dijagnostičkim porukama
WooCommerce Blocks podrška
Plugin uključuje Blocks integraciju (`checkout.js`) i deklarira kompatibilnost s WooCommerce funkcijama (Cart/Checkout Blocks).
Tehnološki stack
- 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 i mapiranje u WooCommerce statusne tranzicije.
- Implementacija gateway nastavitev i validacije u wp-admin.
- Implementacija TxHandler POST pošiljanja i request hashinga.
- Dodajanje verificiranega postback handlerja (`/wc-api/pw-postback`) i return URL verifikacije.
- Integracija WooCommerce Blocks checkout i end-to-end testiranje obeh rješenja.
Rezultati i učinak
- WooCommerce trgovci mogu omogućiti Paywiser kartična plaćanja s predvidljivim tokom.
- podržane su redirect i hosted varijante
- server-side postbackovi se verificiraju prije promjene statusa
- checkout ostaje kompatibilan s legacy i Blocks checkout iskustvom
Refleksija
Redirect-based plaćanja operativno su sigurna samo ako je server-to-server postback izvor istine i ako je verificiran prije promjene statusa. To sprječava prakse “status po URL parametru” i smanjuje opterećenje podrške zbog dvosmislenih ishoda.
Sažetak
Plugin integrira Paywiser u WooCommerce s dva podržana načina plaćanja, verificiranim postbackom i kompatibilnošću s legacy i Blocks checkout tokovima.