Przejdź do treści
Ostatnia aktualizacja

Zdarzenie: transaction_blik_level0:code_status_changed

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).

Kiedy wysyłany jest ten event?

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).


Struktura obiektu data

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:

PoleTypOpisPrzykładowa wartość
ticket_statusstringStatus kodu BLIKVALID
transactionobjectObiekt z informacjami o powiązanej transakcji
transaction.idUUIDID transakcji przesyłany po wygenerowaniu transakcji70bc5ab3-4973-4275-a0eb-08e3f2ab54f2
transaction.payer_transaction_idchar(8)ID transakcji przekazane płacącemu6PB8JKKN
transaction.service_idchar(8)Identyfikator usługi (w SimPay Flow - ID usługi nadrzędnej)e65c7519
transaction.statusTransactionStatusEnumAktualny status powiązanej transakcjitransaction_paid
transaction.amountobjectObiekt informacji o kwocie
transaction.amount.final_currencyISO 4217Waluta, w której płacący dokonał płatnościPLN
transaction.amount.final_valuestring (%.2f)Finalna kwota, którą płacący zapłacił360.00
transaction.amount.original_currencyISO 4217Waluta, która była zadeklarowana przy inicjacji płatnościPLN
transaction.amount.original_valuestring (%.2f)Zadeklarowana kwota przy inicjacji płatności360.00
transaction.amount.commission_systemstring (%.2f) lub nullKwota prowizji pobrana przez SimPay5.36
transaction.amount.commission_partnerstring (%.2f) lub nullKwota prowizji dla Partnera354.64
transaction.amount.commission_currencyISO 4217 lub nullWaluta pobranej prowizjiPLN
transaction.controlstring lub nullWartość pola control z inicjacji płatności (jeśli brak - null)111122223333
flowobject lub brakTylko dla submerchantów SimPay Flow
flow.submerchant_idstringID submerchantaflsm_aaaabbbb
flow.submerchant_custom_idstringcustomId submerchantauser-123
flow.flow_service_idstringID usługi Flowflow_aaaabbbb
Wskazówka

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.


Przykładowy Payload JSON

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
  1. 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|111122223333
  1. Dodaj klucz IPN na końcu ciągu: ...|UwSkKiIwlxIeOMF8MIq9iDkQWBTtjoJQ

  2. Oblicz 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');
  1. Porównaj bezpieczną funkcją porównującą (np. hash_equals w PHP) obliczoną sygnaturę z tą przesłaną w polu signature powiadomienia. W tym przypadku wynikiem hashowania będzie 236197b1a75a8e1c33b0feea94cab753f4b0d7f5ffd044abeea36ea8b89566cc.