Jak działają płatności API dla dostawców
Interfejs API płatności to umowa między Twoją aplikacją a dostawcą, która zmienia „tworzenie płatności”, „potwierdzenie” 3DS, „zwrot środków”, „zapłać klientowi” i „uzyskać status” w wiarygodne, powtarzalne połączenia. Pod okapem są dziesiątki zasad: tokenizacja, idempotencja, haki internetowe, przeciwdziałanie oszustwom, kolejki, SLA i audyt. Poniżej znajduje się praktyczna mapa jak to działa dla większości dostawców.
Podstawowy model: jakie podmioty są prawie zawsze
Płatność/opłata - próba umorzenia (autoryzacja + przechwytywanie lub natychmiastowy zakup).
Metoda płatności - karta (PAN/token), rachunek bankowy/alias, portfel, metoda lokalna.
Klient - podmiot klient/płatnik (czasami opcjonalnie).
Wypłata/przelew - płatność wychodząca na rzecz klienta/handlowca.
Zwrot/cofnięcie - powrót do pierwotnej płatności (zamknięta pętla).
Zdarzenie Webhook - powiadomienie o stanie asynchronicznym.
Spór/obciążenie zwrotne - spór o sieć płatniczą (dla kart).
Zamówienie/Faktura - kontekst biznesowy wokół płatności.
Uwierzytelnianie i bezpieczeństwo
Klucze API/OAuth 2. 0/mTLS - dla serwera-serwera.
Żetony klienckie są jednorazowe żetony dla frontu (aby nie świecić tajemnic).
Tokenizacja kart - PAN trafia do dostawcy; Masz tylko token.
PCI DSS - jeśli widzisz PAN, jesteś w strefie PCI; lepiej unikać i używać pól hostowanych/SDK.
HMAC podpis haki - sprawdzenie, czy wydarzenie pochodzi od dostawcy.
Architektura podwójnej strefy - front publiczny (JS/SDK) i prywatne oparcie (klucze, logika ryzyka).
Idempotencja, kolejki i spójność
Idempotence-Key w nagłówku: powtarzanie żądania (z timeout) nie tworzy duplikatu.
Outbox/Saga z Tobą: „wysłać płatność → napisać do księgi → czekać na webhook” został uzgodniony.
Retrai z backoff - tylko dla błędów tymczasowych. Wymagana jest matryca wydobywalna/niepoddająca się odtworzeniu.
Typowe punkty końcowe (schematy i przepływ)
1) Karty (Visa/Mastercard itp.)
POST/payments - utwórz płatność („kwota”, „waluta”, „payment _ method _ token”, „capture” = false/true).
POST/payments/{ id }/confirm - тА3-D Secure 2 (challenge/redirect result).
POST/payments/{ id }/capture - capture after authorization (partial/full).
POST/payments/{ id }/refund - zwrot (w częściach, do pierwotnej kwoty).
GET/payments/{ id} - статра (autoryzowany, przechwytywany, nieudany, requires_action).
3-D Secure/SCA: dostawca zwróci 'requires _ action' + 'client _ secret '/URL dla wyzwania. Po potwierdzeniu przez klienta, przód zwróci wynik do backendu → wyciągniesz '/potwierdź '.
2) A2A/Otwarta bankowość (płatność przez bank)
POST/płatności → odpowiedź z 'redirect _ url' do banku klienta.
Klient jest autoryzowany przez bank → webhook 'payment. udało się/nie powiodło ".
GET/payments/{ id} - status końcowy (często tylko asynchroniczny).
3) Metody lokalne (PIX, PayID, FPX, iDEAL itp.)
POST/payments → get 'qr _ code '/' deeplink '/' copy _ code'.
Pokaż użytkownikowi, czekaj na hak o rejestracji.
Czasy kodu i TTL są częścią umowy.
4) Wypłaty
POST/payouts („kwota”, „waluta”, „destination _ token” ила „card _ token ”/„ bank _ alias”).
GET/payouts/{ id} - статеса ('queued', 'sent', 'paid', 'failed').
Wypłata webhooks. paid/failed 'jest źródłem prawdy.
Zamknięta pętla: lepiej zapłacić do źródła (odwrócenie) przed alternatywami.
Webhooks: „źródło prawdy”
Zdarzenia: "płatność. oczekujące/autoryzowane/przechwycone/nieudane „,” płatność. requires_action', zwrot pieniędzy. udało się „,” wypłata. płatny „,” spór. stworzony ", itp.
Dostawa: z retras podpisanych przez HMAC, często „co najmniej raz” → zachować opiekuna idempotent.
Najlepsza praktyka: przetwarzanie haka → aktualizacja księgi → odpowiedź 2xx. Każda logika biznesowa po jest asynchroniczna.
Błąd i przetwarzanie stanu
Kody HTTP: sukces „2xx”; błąd klienta „4xx” (walidacja, oszustwo/awaria banku, nieprawidłowy token); „5xx” - dostawca.
Мрибина откавова: „niewystarczające _ fundusze”, „do _ not _ honor”, „stolen _ card”, „limit _ exceeded”, „risk _ decline”, „bank _ niedostępny”.
Redo windows: dla 3DS - nie można bez końca wycofać; dla A2A - przekierowanie/kod TTL są ważne; za wypłaty - backoff.
Środki zapobiegawcze i ryzyko
Odciski palców i dane behawioralne - za pośrednictwem JS/SDK dostawcy lub własnej warstwy.
Listy: ryzyko BIN, czarne/białe listy metod/ASN/kraje.
Regulowane bramy: limity nowych narzędzi, cool-off, prędkość, kontrole progowe RG/AML.
Zasady: „pass/step-up/hold/block” w oparciu o zasady punktacji +.
Cechy na szynach
Karty: autoryzacja vs rozliczenie (kwota może być przesunięta), 3DS2, zwroty na pierwotnej transakcji, spory/obciążenia zwrotne.
A2A/Open Bankowość: przekierowanie/przepływ zgody, wysoki apruv, niski koszt; wszystko jest asynchroniczne i bardzo zależne od banku.
Lokalny szybki: QR/alias, instant webhook, TTL i ścisła kompilacja.
OCT/Push-to-Card (płatności kartami): potrzebujesz tokenów kart, wsparcia szybkich funduszy od emitenta, bez 3DS.
Wersioning i kompatybilność
Wersje API: '/v1 ', „wersje danych” w nagłówku lub phicheflags.
Zmiany kompatybilne z tyłem: tylko pola nieniszczące.
Depresje: harmonogram wycofywania starych wersji, przewodniki migracji, duplikaty haków internetowych podczas migracji.
Obserwowalność i SLA
Metryka: czas autoryzacji/płatności p95, stawka zatwierdzenia według BIN/bank/metoda, udział retras, webhooks-lag.
Dzienniki: korelacja przez 'request _ id',' idempotence _ key ',' payment _ id'.
Ostrzeżenia: gwałtowny wzrost liczby odmów w odniesieniu do konkretnego banku/kraju, wzrost terminów, duplikaty zdarzeń.
Zamiana i finanse
Rejestr: podwójny wpis, niezmienne dzienniki, statusy „autoryzowane/przechwytywane/refundowane”.
Kompilacja trójstronna: Twój rejestr Waszych książeczek z hakami i raportami bankowymi.
Referencje: zachowaj 'provider _ reference', 'network _ reference', 'payout _ reference' - to zapisuje wsparcie.
Piaskownica, certyfikacja i produkcja
Piaskownica: tokeny testowe/karty/banki, symulacja 3DS/redirects, „przyciski” dla statusów haków webowych.
Przypadki testowe: sukces/awaria, wyzwanie 3DS, timeout dostawcy, duplicate webhook, częściowe przechwytywanie/zwrot, przekierowanie anulowania, wypłata nie powiodła się.
Go-live: klucze prod, domeny webhook, lista IP-permlist, włączyć przeciwdziałanie oszustwom, ustawić limity i alerty.
Mini-przykłady (schemat)
Utwórz płatność (karta)
POST/v1/płatności
{
„kwota”: 9232, „waluta”: „EUR”, „payment_method_token"” pm_tok_123, „” capture „: true,” metadane „: {” order _ id': „ORD-1001”}
}
→ 200 {"id':" pay_abc, "" status ":" requires_action, "" next_action": {"typ": "przekierować", "url':"... "}}
Hak na udanej rejestracji
POST/haki internetowe
{
"typ": "płatność. „,” dane „: {” id': „pay _ abc',” kwota „: 9232,” waluta „:” EUR „,” metadane „: {” order _ id': „ORD-1001”}
}
Wypłata
POST/v1/wypłaty
{
„kwota”: 5000, „waluta”: „EUR”, „destination_token":” dest_tok_456, „” metadane „: {” user _ id': „u _ 77”}
}
Lista kontrolna wdrażania
1. Kluczowa architektura: tajemnice serwera oddzielnie, tajemnice klienta - jednorazowo.
2. Idempotencja: w każdym wezwaniu do pisania + idempotent webhook handlers.
3. Haki internetowe: podpis HMAC, retrai, kolejka zadań, monitorowanie opóźnień.
4. 3DS/SCA i przekierowania: obsługa anulowania/timeouts, próbowanie friend-UX ponownie.
5. Antyfraud/limity: prędkość, nowe szczegóły, czarne listy, progi RG/AML.
6. Księga i pojednanie: podwójne wejście, trójstronne pojednanie, anomalie.
7. Orkiestra: dostawca zapasowy, zasady routingu według BIN/country/amount.
8. Monitorowanie: deski rozdzielcze zatwierdzają szybkość/p95/przekładki, wpisy bankami/metodami.
9. Legal/PCI: tokenizacja, polityka zwrotu, zamknięta pętla wypłat.
10. Plan degradacji: kill-switch kanał, kolejki, tryb ręczny dla operacji krytycznych.
Częste błędy
Przechowywanie PAN po jego stronie bez PCI i tokenizacji.
Brak idempotencji → zduplikowane płatności/wypłaty z terminami.
Logika odpowiedzi synchronicznych bez uwzględnienia haków webowych.
Jeden dostawca na rynek, brak awaryjnej/kaskady.
Nie 3DS cofnąć/przekierować przetwarzania → utracone pojemniki recyklingu.
Słaby pakiet → „zamrożone” i „utracone” transakcje.
Brak jasnych SLA i wpisów → problem, który widzi klient, a nie ty.
Mini-FAQ
Co jest bardziej niezawodne: status synchroniczny lub hak?
Webhook jest źródłem prawdy; odpowiedź synchroniczna - tylko „działanie zaakceptowane/potrzebne”.
Możesz zrobić bez 3DS?
Zależy od regulacji/ryzyka. WE/UK - SCA jest obowiązkowy; dla wysokiego ryzyka, krok do góry jest lepszy.
Jak zwiększyć szybkość zatwierdzania?
BIN/bank/metoda orkiestra, lokalne szyny, inteligentne retras, poprawne deskryptory, niski FPR anti-fraud.
Dlaczego wypłata „nie jest natychmiastowa”?
Zależy od szyny (OST/A2A/local), banku odbiorcy i limitów. Niech będzie uczciwe okno SLA i strumień statusu.
Płatności API to nie tylko "utwórz płatność. "Ta dyscyplina: bezpieczne uwierzytelnianie → tokenizacja → idempotencja → asynchroniczne webhaki → rejestr i składanie → zwalczanie oszustw/AML → orkiestra i monitorowanie. Zbuduj proces zgodnie z tym schematem, zachowaj kanały zapasowe i przejrzysty UX - a Twoja warstwa płatności będzie szybka, przewidywalna i odporna na awarie banków i dostawców.