Формирование сигнатуры
Для проверки подлинности webhook-запроса необходимо сверить подпись из
заголовка signature
с вычисленной подписью по следующему
алгоритму:
md5(sha256({PAYMENT_ID}:{SIG_KEY}:{STATUS_ID}:{AMOUNT}))
PAYMENT_ID
- идентификатор платежа (response['id']
)SIG_KEY
- ключ подписи, предоставленный клиентуSTATUS_ID
- идентификатор статуса (response['status']['id']
)AMOUNT
- сумма платежа (response['amount']
)
Пример реализации на Python:
import hashlib
def signature(payment_id, sig_key, status_id, amount):
plain_text = f'{payment_id}:{sig_key}:{status_id}:{amount}'
check_sum_sha256 = hashlib.new('sha256')
check_sum_sha256.update(plain_text.encode())
check_sum_md5 = hashlib.new('md5')
check_sum_md5.update(check_sum_sha256.digest())
check_sum = check_sum_md5.hexdigest()
return check_sum
# Пример использования
payment_id = "97048cb2-f36f-410a-8e5e-574e0f20905e"
sig_key = "your_signature_key"
status_id = "SUCCESS"
amount = "10.00"
calculated_signature = signature(payment_id, sig_key, status_id, amount)
print(f"Calculated signature: {calculated_signature}")