Уведомление после успешной оплаты

После успешной оплаты наш сервер посылает запрос-уведомление (callback или webhook) на адрес, который вы указали в настройках проекта.

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

Ниже представлена таблица с параметрами, передаваемые на вашу страницу. Параметры передаются методом POST

Параметр Тип Описание
payment_id int Номер заказа в вашей системе
shop int ID вашего магазина.
amount float Сумма заказа.
profit float Сумма заказа с учетом комиссии.
desc string Название или описание товара.
currency string Валюта по стандарту ISO 4217 (По умолчанию: RUB)
sign string Секретный ключ (Подробнее о секретном ключе).
email string Эл. Почта покупателя.
date datetime Дата оплаты.
method string Способ оплаты (Cписок названий методов).
custom array Массив с дополнительными параметрами, которые вы передали
Расшифровка и сравнение подписи

Обязательно сравнивайте подпись, которая приходит на вашу страницу оплаты, что бы защитить ее от запросов злоумышленников. Для сравнения подписи сложите те же параметры, что и при оплате: secret (секретный ключ), desc, currency, shop, payment_id и amount с чередованием знака " | " без пробелов через каждый параметр в одну строку и зашифруйте ее с помощью функции md5, как вы делали это со страницей оплаты, только параметры расположены в противоположном порядке, сравните получившиеся подписи. Пример представлен ниже.

Пример генерации секретного ключа и сравнения. (PHP)
<?php

$secret = 'SECRET KEY'; // Ваш секретный ключ

// Занесение параметров в массив
$array = array (

$secret,
$desc = $_POST['desc'],
$currency = $_POST['currency'],
$shop = $_POST['shop'],
$payment_id = $_POST['payment_id'],
$amount = $_POST['amount']

);

// Соединение массива в строку и хеширование функцией md5
$sign = md5 ( implode ( '|', $array ) );

IF ( $sign != $_POST[ 'sign' ] ) {
die( 'Подпись не совпадает.' );
}

// Все хорошо, выполняйте ваш код

$email = $_POST[ 'email' ]; // Электронная почта пользователя
$profit = $_POST[ 'profit' ]; // Сумма к получению
$date = $_POST[ 'date' ]; // Дата операции
$method = $_POST[ 'method' ]; // Способ оплаты

// Переданные вами параметры
$custom1 = $_POST[ 'custom' ][ 'param1' ];
$custom2 = $_POST[ 'custom' ][ 'param2' ];
?>

Уведомление о платеже

Рекомендуем включить эту функцию, если вы ждете платеж по выписанному счету, а так-же если вы принимаете мало платежей и обрабатываете их в ручную. Вы будете получать сообщение на почту каждый раз, когда пользователь совершит транзакцию.
Не рекомендуем включать эту функцию, когда вы принимаете много платежей и вы их успешно автоматизировали, не стоит заспамлять вашу почту и нагружать сервер просто так.

Подписи не совпадают, частые ошибки

Можно легко допустить ошибку в сравнении подписей как на странице с оплатой, так и на странице с уведомлением (sendback). Если у вас не совпадают подписи, выполните следующие шаги:
1. Внимательно проверьте порядок переменных, которые вы хешируете для составления подписи, они обязательно должны быть в том порядке, в котором они представлены на примере.

2. Внимательно проверьте тип переменной. Попробуйте преобразовать все переменные в нужный тип, тип передаваемых данных указан в таблице выше. Пример ошибки - сумма в INTEGER отличается от суммы FLOAT при одинаковом значении, например: 100 и 100.00

3. Проверьте еще раз ваш секретный ключ. Может быть вы перегенерировали его, либо скопировали его не полностью. Зайдите в настройки вашего проекта, сгенерируйте ваш секретный ключ заново и попробуйте еще раз.

4. Если не получается сравнить подписи, заново скопируйте код из примера, поменяйте в нем ID проекта и секретный ключ, укажите уникальный ID платежа, код из примера заработает на 100%.

Главная
Подключение
Добавление проекта Модерация проекта Настройки проекта Добавление личных данных
Прием платежей
Форма оплаты Уведомление об оплате Переадресация после оплаты Методы оплаты
Допольнительно
Зачем нужен секретный ключ