Przejdź do treści
Ostatnia aktualizacja

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.

Kiedy wysyłany jest ten event?

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


Struktura obiektu data

Gdy pole type w głównym obiekcie powiadomienia ma wartość ipn:test, obiekt data jest bardzo uproszczony i zawiera następujące informacje:

PoleTypOpisPrzykładowa wartość
service_idchar(8)Identyfikator usługi, dla której wyzwolono teste65c7519
noncestringLosowy ciąg znaków gwarantujący unikalność żądania01JVZCXGZ77DJTM08WMSX34ETQ
Wskazówka

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.


Przykładowy Payload JSON

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
  1. 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|01JVZCXGZ77DJTM08WMSX34ETQ
  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', 'ipn:test|0196fece-c3e7-71ba-ac8a-ac64056d7d6b|2025-05-23T22:21:25+02:00|e65c7519|01JVZCXGZ77DJTM08WMSX34ETQ|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 02df1a420def7e5de9b316d2bd1ef70796f50abc461561a85bb1243f0a08984d.