Zdarzenie subscription:status_changed służy do monitorowania cyklu życia subskrypcji (płatności powtarzalnych) powiązanych z kontem Twojego klienta. Pozwala ono Twojej aplikacji na automatyczne zarządzanie dostępem do usług abonamentowych, bez konieczności ręcznego sprawdzania, czy klient opłacił kolejny okres rozliczeniowy.
Powiadomienie to jest wyzwalane wyłącznie, gdy korzystasz z metod płatności obsługujących subskrypcje (np. BLIK Płatności Powtarzalne). Otrzymasz je między innymi, gdy:
- Subskrypcja zostanie pomyślnie aktywowana (zmiana na
subscription_active), co jest sygnałem do uruchomienia cyklicznej usługi dla klienta. - Subskrypcja wygaśnie z powodu braku środków lub utraty ważności metody płatności klienta (zmiana na
subscription_expired). - Klient lub sklep ręcznie anuluje plany abonamentowe (zmiana na
subscription_cancelled).
Gdy pole type w głównym obiekcie powiadomienia ma wartość subscription:status_changed, obiekt data będzie zawierał następujące informacje:
| Pole | Typ | Opis | Przykładowa wartość |
|---|---|---|---|
id | UUID | ID subskrypcji w systemie SimPay | 019972b1-e4df-70c4-8c9b-6a89f6ccc948 |
service_id | char(8) | Identyfikator usługi | e65c7519 |
status | SubscriptionStatusEnum | Aktualny status subskrypcji | subscription_active |
mode | SubscriptionModeEnum | Tryb subskrypcji (metoda płatności) | BLIK |
created_at | ISO 8601 | Data utworzenia subskrypcji | 2025-09-22T20:31:25+02:00 |
updated_at | ISO 8601 | Data ostatniej aktualizacji statusu subskrypcji | 2025-09-22T20:31:32+02:00 |
blik | object | Obiekt ze szczegółami BLIK (przesyłany tylko przy mode == BLIK) | |
blik.model | BlikSubscriptionModelEnum | Model subskrypcji BLIK | O |
blik.currency | char(3) | Waluta subskrypcji BLIK | PLN |
blik.alias | object | Dane powiązanego aliasu BLIK | |
blik.alias.id | UUID | ID aliasu BLIK | 019972b1-e4c0-714f-a10b-f88a158bee50 |
blik.alias.type | string | Typ aliasu BLIK | PAYID |
blik.alias.value | string | Wartość aliasu BLIK | AABBCCDD |
blik.alias.label | string | Etykieta wyświetlana w aplikacji mobilnej banku | testy |
blik.alias.status | BlikAliasStatusEnum | Status aliasu BLIK | alias_active |
blik.alias.created_at | ISO 8601 | Data utworzenia aliasu | 2025-09-22T20:31:25+02:00 |
blik.alias.updated_at | ISO 8601 | Data ostatniej aktualizacji aliasu | 2025-09-22T20:31:32+02:00 |
Logika dostępu do Twojej usługi abonamentowej powinna opierać się na polu status. Jeśli otrzymasz webhook ze statusem subscription_expired, subscription_cancelled lub subscription_fraudulent, Twój system powinien automatycznie wstrzymać świadczenie usługi na rzecz klienta.
Poniżej znajduje się kompletny zrzut (payload) powiadomienia wysyłanego dla zdarzenia subscription:status_changed (w tym przypadku udana aktywacja).
(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": "subscription:status_changed",
"notification_id": "019972b2-0360-7177-a635-f26b05f632b8",
"date": "2025-09-22T20:31:32+02:00",
"data": {
"id": "019972b1-e4df-70c4-8c9b-6a89f6ccc948",
"service_id": "e65c7519",
"status": "subscription_active",
"mode": "BLIK",
"created_at": "2025-09-22T20:31:25+02:00",
"updated_at": "2025-09-22T20:31:32+02:00",
"blik": {
"model": "O",
"currency": "PLN",
"alias": {
"id": "019972b1-e4c0-714f-a10b-f88a158bee50",
"type": "PAYID",
"value": "AABBCCDD",
"label": "testy",
"status": "alias_active",
"created_at": "2025-09-22T20:31:25+02:00",
"updated_at": "2025-09-22T20:31:32+02:00"
}
}
},
"signature": "0851c6bc63e92bff424a83ab9067c192d6e9a1b5d67ade9960f0cce67216d3f1"
}Zobacz wyliczenie sygnatury
- Flatten wszystkich elementów po kolei + separacja
|:
Nasz ciąg będzie wyglądać tak:
subscription:status_changed|019972b2-0360-7177-a635-f26b05f632b8|2025-09-22T20:31:32+02:00|019972b1-e4df-70c4-8c9b-6a89f6ccc948|e65c7519|subscription_active|BLIK|2025-09-22T20:31:25+02:00|2025-09-22T20:31:32+02:00|O|PLN|019972b1-e4c0-714f-a10b-f88a158bee50|PAYID|AABBCCDD|testy|alias_active|2025-09-22T20:31:25+02:00|2025-09-22T20:31:32+02:00Dodaj klucz IPN na końcu ciągu:
...|UwSkKiIwlxIeOMF8MIq9iDkQWBTtjoJQOblicz SHA256 z powyższego ciągu i zakoduj go w hex:
<?php
$signature = hash('sha256', 'subscription:status_changed|019972b2-0360-7177-a635-f26b05f632b8|2025-09-22T20:31:32+02:00|019972b1-e4df-70c4-8c9b-6a89f6ccc948|e65c7519|subscription_active|BLIK|2025-09-22T20:31:25+02:00|2025-09-22T20:31:32+02:00|O|PLN|019972b1-e4c0-714f-a10b-f88a158bee50|PAYID|AABBCCDD|testy|alias_active|2025-09-22T20:31:25+02:00|2025-09-22T20:31:32+02:00|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ędzie0851c6bc63e92bff424a83ab9067c192d6e9a1b5d67ade9960f0cce67216d3f1.