/plugin na publicznym originie aplikacji/API. Połączenie zawsze inicjuje serwer gry; nie wystawia on portu przychodzącego.
Uwierzytelnianie
Handshake namespace przekazuje:plugin z orders:write. Klucz musi być związany ze sklepem, serverId należeć do tego samego sklepu, a właściciel klucza nadal mieć do niego dostęp. Niepoprawne połączenie kończy się ogólnym unauthorized, bez ujawniania, który warunek zawiódł.
Zdarzenia protokołu v1
Backend wysyła pełny replay po każdym połączeniu oraz push po opłaceniu lub zmianie statusu. Powtórzone
order:deliver jest oczekiwane — o prawie wykonania decyduje atomowy claim i lokalny journal, a nie samo otrzymanie eventu.
Stany bezpieczeństwa
paidlubdispute→processing: tylko jedna instancja wygrywa warunkową zmianę w bazie.- Plugin zapisuje i fsyncuje
EXECUTINGprzed pierwszą komendą. - Po ostatniej komendzie zapisuje i fsyncuje
AWAITING_ACK. order:completeprzełącza zamówienie nacompleted; dopiero ACK usuwa lokalny wpis.- Restart z
AWAITING_ACKponawia tylko ACK. Restart zEXECUTINGnie powtarza komend i uruchamia ręczną weryfikację.
Nie usuwaj journalu, aby „odblokować” zamówienie. W panelu sprawdź faktyczny stan gracza i rozstrzygnij wpis ręcznie. Decyzja
retry czyści claim po stronie aplikacji i pozwala na nowy push; complete uznaje dostawę bez powtórzenia komend.Formatowanie komend
Komendy produktu są formatowane przez API przed wysłaniem świeżego snapshotu zwycięzcy claimu:
Wyrażenia matematyczne korzystają z ograniczonego parsera; nie są wykonywane jako kod. Progi
quantityTiers, wariant komend i bonus pakietu są rozstrzygane po stronie API. Plugin dodatkowo odrzuca komendy, których pierwsze słowo znajduje się w blockedCommands.
Jeżeli produkt wymaga gracza online, instancja wykonuje komendy dopiero po wykryciu właściwego nicku na dozwolonym serwerze. Długo oczekująca lokalna kopia jest sprawdzana przez order:verify, aby anulowane lub zwrócone zamówienie nie zostało wykonane ze starego eventu.