PaymentNut
Документация для разработчиков / Работа с уведомлениями / Успешная оплата
PaymentNut может отправлять уведомления на Ваш веб–сайт, которые так же известны как обратные вызовы или вебхуки. В настоящее время предусмотрен один тип уведомлений – об успешной оплате, а более конкретно – при авторизации транзакции Банком.

Данное уведомление отправляется после того, как оплата была успешно проведена и получена авторизация эмитента.

Включение уведомлений и настройка URL адреса осуществляется через раздел настроек Проекта в Личном Кабинете.

Метод отправки: POST
Параметры уведомления:

Параметр Значение
transaction_id Идентификатор транзакции
date_created Время создания (Unix timestamp)
date_authorized Время авторизации (Unix timestamp)
status Статус транзакции на момент отправки уведомления:

3 – Авторизована

4 – Завершена
description Назначение платежа
amount Сумма
currency_code Код валюты (ISO 4217)
originator_object_type Связанный объект, которым инициализирована транзакция:

1 – Счет

2 – Продукт

3 – Вызов по API

4 – Подписка
originator_object_id Идентификатор связанного объекта
subscription_enabled Транзакция по подписке:

1 – Да

0 – Нет
subscription_initial_transaction Транзакция по подписке является установочным платежом:

1 – Да

0 – Нет (является регулярным платежом)
subscription_id Идентификатор подписки
reference_1 Значение поля reference_1 (при вызове по API)
reference_2 Значение поля reference_2 (при вызове по API)
reference_3 Значение поля reference_3 (при вызове по API)
coupon_code Код купона акции
promotion_id Идентификатор акции кода купона
card_first_six Первые 6 цифр номера карты
card_last_four Последние 4 цифры номера карты
card_type Платежная система карты
card_issuer Эмитент карты
card_issuer_country Код страны эмитента карты (ISO 3166-1 alpha-2)
transaction_email Email введеный при оплате
signature Значение подписи; составляется на основе значений нескольких вышеуказанных параметров и API ключа проекта, см. ниже


Формирование значения подписи

Подпись в уведомлении нужна для того, что бы третье лицо не могло отправить уведомление от имени PaymentNut, не зная при этом API ключ Вашего Проекта. Значение API ключа доступно в настройках Проекта Личного Кабинета его владельцу. В подпись, кроме API ключа, входят значения некоторых параметров уведомления, финальное значение подписи шифруется по алгоритму MD5.

Для формирования значения подписи, возьмите полученные значения параметров следующим образом: transaction_id, status, amount, currency_code, originator_object_type, originator_object_id, reference_1, reference_2, reference_3, api_key в одну строку (разделяя значения запятой и пробелом) и зашифруйте ее по алгоритму MD5. Далее, сравните вычисленное значение подписи с полученным значением подписи.

Например (PHP):

$inbound_transaction_id=$_POST['transaction_id'];
$inbound_transaction_date_created=$_POST['date_created'];
$inbound_transaction_date_authorized=$_POST['date_authorized'];
$inbound_status=$_POST['status'];
$inbound_description=$_POST['description'];
$inbound_amount=$_POST['amount'];
$inbound_currency_code=$_POST['currency_code'];
$inbound_originator_object_type=$_POST['originator_object_type'];
$inbound_originator_object_id=$_POST['originator_object_id'];
$inbound_subscription_enabled=$_POST['subscription_enabled'];
$inbound_subscription_initial_transaction=$_POST['subscription_initial_transaction'];
$inbound_subscription_id=$_POST['subscription_id'];
$inbound_reference_1=$_POST['reference_1'];
$inbound_reference_2=$_POST['reference_2'];
$inbound_reference_3=$_POST['reference_3'];
$inbound_coupon_code=$_POST['coupon_code'];
$inbound_promotion_id=$_POST['promotion_id'];
$inbound_card_first_six=$_POST['card_first_six'];
$inbound_card_last_four=$_POST['card_last_four'];
$inbound_card_type=$_POST['card_type'];
$inbound_card_issuer=$_POST['card_issuer'];
$inbound_card_issuer_country=$_POST['card_issuer_country'];
$inbound_transaction_email=$_POST['transaction_email'];
$inbound_signature=$_POST['signature'];

$api_key='8E4D3A85BC544BB8FB9EC6E4FFCA1582';

$computed_signature=md5("$inbound_transaction_id, $inbound_status, $inbound_amount, $inbound_currency_code, $inbound_originator_object_type, $inbound_originator_object_id, $inbound_reference_1, $inbound_reference_2, $inbound_reference_3, $api_key");

if ($computed_signature===$inbound_signature)
{
echo 1;

//подпись верна, можно обработать платеж
}




Прием уведомления

В ответ на прием уведомления, система ожидает получить простой строчный ответ с цифрой 1 (один), как показано в примере выше (echo 1;).

В случае, невозможности соединения с Вашим веб–сайтом или при отсутствии ответа 1, система предпримет 48 попыток отправить данное уведомление с интервалом 15 минут.