Svaki korak može da propadne — i u svakom sistem mora da ostane u jasnom stanju.
checkout.example.rs
Transakcija za porudžbinu #4821
LIVE
nema razlika
Dvostruki klik
jedna transakcija
Iznos izmenjen
potpis ispravan
Klijent zatvorio karticu
callback primljen
Gateway nije odgovorio
status se proverava
Povraćaj
vraćeno
Dnevno usklađivanje
nema razlika
ŠTA MOŽE POĆI NAOPAKO
01Dvostruki klikKljuč transakcije čini ponavljanje bezbednim: dva zahteva prave jedno plaćanje, a ne dva skidanja
02Iznos izmenjenIznos se uzima iz porudžbine na serveru, a ne iz forme — potpis zahteva se proverava
03Klijent zatvorio karticuIshod stiže posebnim obaveštenjem gateway-a — porudžbina se ažurira i bez povratka klijenta
04Gateway nije odgovorioTransakcija se označava kao neizvesna i ispituje se: status se traži dok ne postane jasan
05PovraćajPun ili delimičan, vezan za izvornu transakciju; ponovljeni zahtev ne pravi drugi povraćaj
06Dnevno usklađivanjeIzvod se upoređuje sa transakcijama: razlike se izlistavaju, a ne traže ručno
POZNATA SLIKA
Šta biva kada je naplata povezana „po uputstvu“
Minimalno povezivanje
Klijentu je dvaput skinut novac, jer je dvaput kliknuo
Status porudžbine se menja samo kada se klijent vrati na sajt nakon plaćanja
Ako gateway ne odgovori, transakcija zauvek ostaje u neizvesnom stanju
Povraćaj se radi u portalu banke, a sistem za to ne zna
Usklađivanje je knjigovođa, izvod i veče sa kalkulatorom krajem meseca
Inženjersko povezivanje
Ponovljen zahtev sa istim ključem vraća istu transakciju, a ne pravi novu
Ishod stiže na server direktno i obrađuje se nezavisno od pregledača
Neizvesne transakcije automatski se proveravaju do konačnog statusa
Povraćaj ide kroz sistem, pa porudžbina, magacin i izveštaj odmah saznaju
Usklađivanje je dnevno i automatsko: spisak razlika stiže ujutru
OBIM POSLA
Šta ulazi u rad sa plaćanjima
Model transakcija
Porudžbina i plaćanje su različiti entiteti sa svojim stanjima; prelazi su izričito opisani.
Povezivanje gateway-a
Inicijalizacija, potpis zahteva, obrada odgovora i zaštićena obaveštenja banke.
Ponovljivost operacija
Ključevi idempotentnosti, da ponovljen zahtev ne postane drugo skidanje.
Odbijanja i istek vremena
Jasna poruka klijentu, čuvanje porudžbine i automatsko razrešavanje nejasnih statusa.
Povraćaji i storniranja
Pune i delimične operacije iz admin panela uz proveru prava i zapis ko ih je izvršio.
Usklađivanje
Dnevno upoređivanje transakcija sa izvodom i izveštaj o onome što se ne poklapa.
Dnevnik i vidljivost
Svaki pokušaj je sačuvan sa odgovorom gateway-a; porast odbijanja vidi se odmah, a ne po žalbama.
Test scenariji
Proveravamo ne samo uspešno plaćanje, već i odbijanje, prekid, dvostruki klik i povraćaj.
TEHNOLOŠKI OKVIR
Od čega se sastoji pouzdanost
Forma bankePodaci kartice unose se na strani banke i ne stižu na Vaš serverPotpis zahtevaIznos i parametri zaštićeni su potpisom — ne mogu se menjati u pregledačuKljučevi idempotentnostiPonovljen zahtev vraća raniji rezultat umesto nove transakcijeRed obaveštenjaObaveštenja gateway-a obrađuju se jedno po jedno i preživljavaju restart serveraPozadinska proveraTransakcije bez konačnog statusa proveravaju se dok se ne razrešeIzveštaj usklađivanjaDnevno upoređivanje sa izvodom i spisak neslaganja
Ugovor o prihvatanju kartica i tarife su između Vas i banke. Mi odgovaramo za to da se novac i porudžbine poklapaju, a sporna situacija rešava po dnevniku, a ne po sećanju.
PITANJA
Šta se obično pita
Klijentu je dvaput skinut novac. Kako je to moguće?
Najčešće zbog nedostatka ključa idempotentnosti: korisnik je dvaput kliknuo ili je pregledač ponovio zahtev nakon prekida, pa su nastale dve transakcije. Ispravno rešenje nije sakriti dugme na sekundu, već omogućiti da ponovljeni zahtev sa istim ključem vrati raniju transakciju.
Šta sa „zaglavljenim“ plaćanjima?
Nastaju kada gateway ne odgovori na vreme, a ishod je na njegovoj strani već poznat. Takve transakcije označavamo kao neizvesne i povremeno tražimo status dok ne postane konačan. Bez tog mehanizma novac je skinut, a porudžbina neplaćena — i to se rešava ručno.
Treba li čuvati podatke kartica za ponovljena plaćanja?
Ne. Za ponovljena plaćanja banka izdaje token vezan za karticu: čuva se kod Vas umesto podataka i radi samo za Vaše transakcije. Sami brojevi kartica se na Vašem serveru ne pojavljuju, pa Vas obaveze čuvanja ne obavezuju.
Kako znati da je udeo odbijanja porastao?
Po dnevniku transakcija i njegovom praćenju. Svaki pokušaj se čuva zajedno sa kodom odgovora banke, pa se vidi ne samo „manje je plaćanja“, već i zašto: nedovoljno sredstava, ograničenje, neuspela potvrda. To su različiti problemi sa različitim rešenjima.
Može li se povezati više načina plaćanja odjednom?
Da, i to je uobičajeno: kartica, uplata po predračunu i pouzeće žive zajedno. Važno je da svaki način ima svoj lanac statusa: pouzeće se potvrđuje izveštajem kurirske službe, a ne izvodom banke, inače usklađivanje prestaje da se poklapa.