Zdarzenie ipn:test to specjalny, pomocniczy typ powiadomienia. Służy ono wyłącznie do weryfikacji połączenia pomiędzy systemem SimPay a Twoim serwerem (Endpointem IPN) oraz do sprawdzenia poprawności zaimplementowanego przez Ciebie algorytmu wyliczania sygnatury kryptograficznej.
Dzięki niemu możesz przetestować odbieranie webhooków bez konieczności inicjowania i opłacania rzeczywistych, testowych transakcji na bramce płatniczej.
Powiadomienie to nie jest generowane automatycznie przez ruch klientów. Jest wysyłane **tylko na Twoje wyraźne żądanie **, po kliknięciu odpowiedniego przycisku testowego w Panelu Klienta SimPay (w ustawieniach danej usługi).
Gdy pole type w głównym obiekcie powiadomienia ma wartość ipn:test, obiekt data jest bardzo uproszczony i zawiera następujące informacje:
| Pole | Typ | Opis | Przykładowa wartość |
|---|---|---|---|
service_id | char(8) | Identyfikator usługi, dla której wyzwolono test | e65c7519 |
nonce | string | Losowy ciąg znaków gwarantujący unikalność żądania | 01JVZCXGZ77DJTM08WMSX34ETQ |
Pole nonce to losowy ciąg znaków generowany przy każdym kliknięciu testu w panelu. Sprawia on, że mimo niezmiennych innych parametrów usługi, sygnatura powiadomienia za każdym razem będzie inna. Dzięki temu masz pewność, że Twój serwer faktycznie liczy hash na żywo, a nie podaje zbuforowanej (zapisanej w cache) poprawnej odpowiedzi z poprzedniego testu.
Poniżej znajduje się kompletny zrzut (payload) powiadomienia wysyłanego dla zdarzenia ipn:test.
(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": "ipn:test",
"notification_id": "0196fece-c3e7-71ba-ac8a-ac64056d7d6b",
"date": "2025-05-23T22:21:25+02:00",
"data": {
"service_id": "e65c7519",
"nonce": "01JVZCXGZ77DJTM08WMSX34ETQ"
},
"signature": "02df1a420def7e5de9b316d2bd1ef70796f50abc461561a85bb1243f0a08984d"
}Zobacz wyliczenie sygnatury
- Flatten wszystkich elementów po kolei + separacja
|:
Nasz ciąg będzie wyglądać tak:
ipn:test|0196fece-c3e7-71ba-ac8a-ac64056d7d6b|2025-05-23T22:21:25+02:00|e65c7519|01JVZCXGZ77DJTM08WMSX34ETQDodaj klucz IPN na końcu ciągu:
...|UwSkKiIwlxIeOMF8MIq9iDkQWBTtjoJQOblicz SHA256 z powyższego ciągu i zakoduj go w hex:
<?php
$signature = hash('sha256', 'ipn:test|0196fece-c3e7-71ba-ac8a-ac64056d7d6b|2025-05-23T22:21:25+02:00|e65c7519|01JVZCXGZ77DJTM08WMSX34ETQ|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ędzie02df1a420def7e5de9b316d2bd1ef70796f50abc461561a85bb1243f0a08984d.