Struktura notyfikacji
Każda notyfikacja z Paymentic to HTTP POST wysyłany na URL endpointu zdefiniowany w panelu. Request składa się z trzech części:
- Linia startowa — metoda, ścieżka, wersja HTTP.
- Nagłówki — zawierają metadane niezbędne do weryfikacji (sygnatura, typ zdarzenia, czas wysłania).
- Body — payload w formacie JSON, różny w zależności od typu zdarzenia.
Przykładowy request
POST /yourpath HTTP/1.1
Host: yourdomain.com
User-Agent: Paymentic/1.1
Content-Type: application/json
Content-Length: 170
X-Paymentic-Event: PAYMENT.TRANSACTION_STATUS_CHANGED
X-Paymentic-Notification-Id: 01j96yn02bhbv8j1jjtk36zn2t
X-Paymentic-Time: 2024-09-20T09:48:03+02:00
X-Paymentic-Signature: 5Fil+PMpabLxsKwo3rWj9+o6gAi4ub93fismBewbYz46mHt7pjPHcHELUVw8McZ5nUb3feMVVBl+dPzXq2XgLQ==
{"transactionId":"FJRS-LY7-3W0-30K9","pointId":"000cb241","status":"CREATED","amount":10,"currency":"PLN","commission":null,"custom":null,"channelId":null}
Nagłówki
Paymentic wysyła następujące nagłówki przy każdej notyfikacji:
| Nagłówek | Wymagany | Opis |
|---|---|---|
User-Agent | Tak | Identyfikator systemu nadawczego w formacie Paymentic/{wersja} (np. Paymentic/1.1). |
Content-Type | Tak | Zawsze application/json. |
Content-Length | Tak | Długość body w bajtach. |
X-Paymentic-Event | Tak | Typ zdarzenia, np. PAYMENT.TRANSACTION_STATUS_CHANGED. Po tej wartości rozpoznajesz, jak sparsować body. |
X-Paymentic-Notification-Id | Tak | Unikalny identyfikator (ULID) tej konkretnej notyfikacji. Klucz idempotentności — zob. uwagi niżej. |
X-Paymentic-Time | Tak | Czas wysłania notyfikacji w formacie ISO 8601 (np. 2024-09-20T09:48:03+02:00). |
X-Paymentic-Signature | Tak | Sygnatura HMAC-SHA512 w Base64, służy do weryfikacji autentyczności — zob. Sygnatura. |
User-Agent a wersja notyfikacji
Nagłówek User-Agent ma formę Paymentic/{wersja}, np. Paymentic/1.1 lub Paymentic/1.2. Część po slashu
mówi Ci, w jakiej wersji schematu przychodzi body. Ten sam typ zdarzenia
(PAYMENT.TRANSACTION_STATUS_CHANGED) ma nieco inne pola w wersji 1.1 i 1.2 — zob.
Zmiana statusu transakcji.
Wersja z nagłówka User-Agent jest też jednym ze składników sygnatury. Do liczenia HMAC bierzesz
tylko samą wersję (np. 1.1), a nie całą wartość nagłówka. Szczegóły: Sygnatura.
X-Paymentic-Event
Lista aktualnie wysyłanych zdarzeń:
| Wartość | Co oznacza | Struktura body |
|---|---|---|
PAYMENT.TRANSACTION_STATUS_CHANGED | Zmiana statusu transakcji płatniczej | Zmiana statusu transakcji |
PAYMENT.REFUND_STATUS_CHANGED | Zmiana statusu zwrotu | Zmiana statusu zwrotu |
PAYMENT.TRANSACTION_BLIK_STATUS_CHANGED | Zmiana statusu transakcji BLIK (Level 0) | Zmiana statusu transakcji BLIK |
W kodzie obsłuż te zdarzenia w switch-u po wartości tego nagłówka — unikniesz parsowania body
pod zły schemat.