После успешной оплаты наш сервер посылает запрос-уведомление (callback или webhook) на адрес, который вы указали в настройках проекта.
Ниже представлена таблица с параметрами, передаваемые на вашу страницу. Параметры передаются методом POST
Параметр | Тип | Описание |
---|---|---|
payment_id | int | Номер заказа в вашей системе |
shop | int | ID вашего магазина. |
amount | float | Сумма заказа. |
profit | float | Сумма заказа с учетом комиссии. |
desc | string | Название или описание товара. |
currency | string | Валюта по стандарту ISO 4217 (По умолчанию: RUB) |
sign | string | Секретный ключ (Подробнее о секретном ключе). |
string | Эл. Почта покупателя. | |
date | datetime | Дата оплаты. |
method | string | Способ оплаты (Cписок названий методов). |
custom | array | Массив с дополнительными параметрами, которые вы передали |
Обязательно сравнивайте подпись, которая приходит на вашу страницу оплаты, что бы защитить ее от запросов злоумышленников. Для сравнения подписи сложите те же параметры, что и при оплате: secret (секретный ключ), desc, currency, shop, payment_id и amount с чередованием знака " | " без пробелов через каждый параметр в одну строку и зашифруйте ее с помощью функции md5, как вы делали это со страницей оплаты, только параметры расположены в противоположном порядке, сравните получившиеся подписи. Пример представлен ниже.
$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
( 'Подпись не совпадает.'
);
}
// Все хорошо, выполняйте ваш код
=
$_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%.