Формирование сигнатуры

Для проверки подлинности 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}")