Przejdź do głównej zawartości

Sygnatura

Paymentic przy każdej notyfikacji przesyła sygnaturę w nagłówku X-Paymentic-Signature

Sygnatura notyfikacji może zostać obliczona za pomocą HASH HMAC SHA512 (RFC 2104 i RFC 6234).

Struktura do generowania sygnatury

W strukturze należy złączyć wartości (konkatenacja) z nagłówków i body oddzielając jest | (Unicode U+007C) w kolejności: X-Paymentic-Event, User-Agent (Wersja z user-agenta np. 1.1), Body, X-Paymentic-Notification-Id, X-Paymentic-Time

PAYMENT.TRANSACTION_STATUS_CHANGED|1.1|{"transactionId":"FJRS-LY7-3W0-30K9","pointId":"000cb241","status":"CREATED","amount":10,"currency":"PLN","commission":null,"custom":null,"channelId":null}|01j96yn02bhbv8j1jjtk36zn2t|2024-09-20T09:48:03+02:00

Przykłady jak wygenerować sygnaturę w różnych językach

<?php
$signatureKey = '99ab572393014a7c2f20fe53253fc37819371a033c4507055e94e816683b9c8d';
$payload = 'PAYMENT.TRANSACTION_STATUS_CHANGED|1.1|{"transactionId":"FJRS-LY7-3W0-30K9","pointId":"000cb241","status":"CREATED","amount":10,"currency":"PLN","commission":null,"custom":null,"channelId":null}|01j96yn02bhbv8j1jjtk36zn2t|2024-09-20T09:48:03+02:00';

echo base64_encode(hash_hmac('sha512', $payload, $signatureKey, true));

Do porównania otrzymanej sygnatury z własnym wynikiem użyj hash_equals($received, $computed) zamiast === — chroni to przed atakiem timingowym.

Przetestuj generowanie sygnatury

Zawartość body w postaci nieprzetworzonej z requestu przesłanego przez Paymentic
Z nagłówka X-Paymentic-Notification-Id
Z nagłówka X-Paymentic-Time
Z nagłówka User-Agent (Paymentic/1.1)
Z nagłówka X-Paymentic-Event
Klucz do podpisu sygnatury notyfikacji z panelu klienta