Zdarzenie transaction_blik_level0:code_status_changed służy do monitorowania stanu samego 6-cyfrowego kodu BLIK. Jest to szczególnie przydatne, gdy chcesz na żywo aktualizować interfejs użytkownika w swoim sklepie (np. wyświetlić odpowiedni komunikat: w momencie, gdy status kod zostanie zmieniony).
Powiadomienie to jest wysyłane wyłącznie przy transakcjach inicjowanych kanałami wspierającymi przepisywanie kodu na stronie sprzedawcy, czyli:
- BLIK Level 0 (
blik-level0) - BLIK Płatności Powtarzalne (
blik-recurrent)
Zostanie ono wyzwolone, gdy zmieni się status podanego przez klienta kodu BLIK (np. kod zostanie uznany za poprawny – VALID, lub odrzucony/nieważny).
Gdy pole type w głównym obiekcie powiadomienia ma wartość transaction_blik_level0:code_status_changed, obiekt data będzie zawierał następujące informacje:
| Pole | Typ | Opis | Przykładowa wartość |
|---|---|---|---|
ticket_status | string | Status kodu BLIK | VALID |
transaction | object | Obiekt z informacjami o powiązanej transakcji | |
transaction.id | UUID | ID transakcji przesyłany po wygenerowaniu transakcji | 70bc5ab3-4973-4275-a0eb-08e3f2ab54f2 |
transaction.payer_transaction_id | char(8) | ID transakcji przekazane płacącemu | 6PB8JKKN |
transaction.service_id | char(8) | Identyfikator usługi (w SimPay Flow - ID usługi nadrzędnej) | e65c7519 |
transaction.status | TransactionStatusEnum | Aktualny status powiązanej transakcji | transaction_paid |
transaction.amount | object | Obiekt informacji o kwocie | |
transaction.amount.final_currency | ISO 4217 | Waluta, w której płacący dokonał płatności | PLN |
transaction.amount.final_value | string (%.2f) | Finalna kwota, którą płacący zapłacił | 360.00 |
transaction.amount.original_currency | ISO 4217 | Waluta, która była zadeklarowana przy inicjacji płatności | PLN |
transaction.amount.original_value | string (%.2f) | Zadeklarowana kwota przy inicjacji płatności | 360.00 |
transaction.amount.commission_system | string (%.2f) lub null | Kwota prowizji pobrana przez SimPay | 5.36 |
transaction.amount.commission_partner | string (%.2f) lub null | Kwota prowizji dla Partnera | 354.64 |
transaction.amount.commission_currency | ISO 4217 lub null | Waluta pobranej prowizji | PLN |
transaction.control | string lub null | Wartość pola control z inicjacji płatności (jeśli brak - null) | 111122223333 |
flow | object lub brak | Tylko dla submerchantów SimPay Flow | |
flow.submerchant_id | string | ID submerchanta | flsm_aaaabbbb |
flow.submerchant_custom_id | string | customId submerchanta | user-123 |
flow.flow_service_id | string | ID usługi Flow | flow_aaaabbbb |
Pamiętaj, że to powiadomienie skupia się na statusie kodu BLIK (ticket_status). Choć zawiera ono również aktualny status transakcji (transaction.status), to do finalnego wydawania towaru w sklepie rekomendujemy opieranie się na głównym evencie transaction:status_changed, który pojawia się po ostatecznym zaksięgowaniu środków.
Poniżej znajduje się kompletny zrzut (payload) powiadomienia wysyłanego dla zdarzenia transaction_blik_level0:code_status_changed.
(Przykładowa sygnatura została wygenerowana przy użyciu klucza IPN: UwSkKiIwlxIeOMF8MIq9iDkQWBTtjoJQ. Możesz użyć tego klucza i poniższych danych do przetestowania swojego algorytmu walidacji).
{
"type": "transaction_blik_level0:code_status_changed",
"notification_id": "019736c4-50c3-7108-944c-11a0f9c12b72",
"date": "2025-06-03T19:08:44+02:00",
"data": {
"ticket_status": "VALID",
"transaction": {
"id": "70bc5ab3-4973-4275-a0eb-08e3f2ab54f2",
"payer_transaction_id": "6PB8JKKN",
"service_id": "e65c7519",
"status": "transaction_paid",
"amount": {
"final_currency": "PLN",
"final_value": "360.00",
"original_currency": "PLN",
"original_value": "360.00",
"commission_system": "5.36",
"commission_partner": "354.64",
"commission_currency": "PLN"
},
"control": "111122223333"
}
},
"signature": "236197b1a75a8e1c33b0feea94cab753f4b0d7f5ffd044abeea36ea8b89566cc"
}Zobacz wyliczenie sygnatury
- Flatten wszystkich elementów po kolei + separacja
|:
Nasz ciąg będzie wyglądać tak:
transaction_blik_level0:code_status_changed|019736c4-50c3-7108-944c-11a0f9c12b72|2025-06-03T19:08:44+02:00|VALID|70bc5ab3-4973-4275-a0eb-08e3f2ab54f2|6PB8JKKN|e65c7519|transaction_paid|PLN|360.00|PLN|360.00|5.36|354.64|PLN|111122223333Dodaj klucz IPN na końcu ciągu:
...|UwSkKiIwlxIeOMF8MIq9iDkQWBTtjoJQOblicz SHA256 z powyższego ciągu i zakoduj go w hex:
<?php
$signature = hash('sha256', 'transaction_blik_level0:code_status_changed|019736c4-50c3-7108-944c-11a0f9c12b72|2025-06-03T19:08:44+02:00|VALID|70bc5ab3-4973-4275-a0eb-08e3f2ab54f2|6PB8JKKN|e65c7519|transaction_paid|PLN|360.00|PLN|360.00|5.36|354.64|PLN|111122223333|UwSkKiIwlxIeOMF8MIq9iDkQWBTtjoJQ');- Porównaj bezpieczną funkcją porównującą (np.
hash_equalsw PHP) obliczoną sygnaturę z tą przesłaną w polusignaturepowiadomienia. W tym przypadku wynikiem hashowania będzie236197b1a75a8e1c33b0feea94cab753f4b0d7f5ffd044abeea36ea8b89566cc.