Majoritatea sistemelor de plată presupun că rețeaua este mereu prezentă. La poarta unui stadion în ziua meciului sau la un bar de festival aflat la trei câmpuri distanță de cel mai apropiat turn de telefonie, pur și simplu nu este. Conectivitatea slăbește exact atunci când volumul tranzacțiilor atinge vârful — iar un terminal care nu mai acceptă plăți în clipa în care pierde semnalul este mai rău decât lipsa oricărui terminal.
Rețeaua este o optimizare, nu o dependență
Proiectăm terminalele să proceseze mai întâi o atingere local și să se sincronizeze cu backend-ul mai târziu. Fiecare dispozitiv conține un element securizat rezistent la manipulare, care păstrează un sold semnat, un contor monoton și un set de limite de risc emise ultima dată când a fost online. O atingere este autorizată pe baza acelei stări locale în mult sub o sută de milisecunde, fără niciun drum dus-întors. Backend-ul este tratat ca o destinație finală pentru înregistrare, nu ca un gardian al vânzării.
Autorizarea offline funcționează doar dacă regulile sunt conservatoare. Fiecare card sau brățară are un plafon per tranzacție, un plafon offline cumulativ și o limită de viteză; dacă oricare dintre ele este depășită, terminalul forțează o verificare online sau refuză. Aceste praguri sunt setate pentru fiecare eveniment pe baza profilului de cheltuieli estimat, astfel încât expunerea în cel mai rău caz a unei locații complet deconectate este mărginită și cunoscută înainte de deschiderea porților.
Stochează, transmite și reconciliază
Fiecare atingere autorizată este scrisă într-o coadă de tip append-only pe dispozitiv, fiecare intrare fiind idempotentă și semnată. Când conectivitatea revine — Wi-Fi, rețea celulară sau un dispozitiv al personalului care străbate sala ca un curier — coada se golește către serviciul de decontare, care elimină duplicatele pe baza identificatorului stabil al fiecărei intrări. Pentru că scrierile sunt idempotente, reluarea aceluiași lot de două ori nu schimbă nimic, ceea ce înseamnă că putem reîncerca agresiv fără niciun risc de dublă taxare.
Tratează rețeaua ca pe o optimizare, nu ca pe o dependență. Vânzarea s-a întâmplat deja; sincronizarea ei este doar contabilitate.— Protocore · Inginerie de plăți
Cele mai grele probleme sunt cele lipsite de strălucire: un terminal care pierde alimentarea în mijlocul unei scrieri, o brățară folosită la două baruri în aceeași fereastră offline, un ceas care derivează pe parcursul unei ture lungi. Le gestionăm prin scrieri atomice jurnalizate care supraviețuiesc unei căderi de tensiune, prin rezolvarea conflictelor în favoarea registrului înregistrat al locației și prin contoare care sunt semnate, nu doar considerate de încredere. Nimic din toate acestea nu este exotic. Este aceeași disciplină pe care sistemele distribuite o folosesc de zeci de ani, aplicată unui dispozitiv care întâmplător încape într-o singură mână.
La o implementare cashless recentă am procesat 2,4 milioane € pentru aproximativ 80.000 de participanți pe parcursul a trei zile, cu perioade în care zone întregi au funcționat offline minute în șir, fără ca vreun participant să observe. Acesta este scopul: reziliența ar trebui să fie invizibilă. Persoana care atinge terminalul ca să cumpere o băutură nu ar trebui să afle niciodată că rețeaua era cel mai fragil lucru din clădire.
Ai un sistem de construit?
Spune-ne care e problema. Revenim cu o arhitectură și un plan.
Începe un proiect