Обработка платежей
Получение уведомлений от Gram о оплаченном платеже
После успешной оплаты платежа, сервис отправляет запрос на Ваш сервер по адресу, который указан в настройках проекта.
В данном запросе содержится информация о платеже, а также подпись запроса, которую необходимо проверить при помощи секретного ключа.
GET
Запрос (уведомление) о платеже
GET
Запрос (уведомление) о платежеПараметр
Значение
Описание
result
string
Информация о типе запроса:
pay - успешная оплата платежа
error - ошибка при оплате
project_id
number
Идентификатор проекта в Gram
pay_id
string
Идентификатор платежа или клиента в Вашей системе
gram_id
number
Идентификатор платежа в системе Gram
amount
number
Сумма платежа
pay_amount
number
Сумма оплаченная клиентом
payment_currency
string
Валюта платежа
pay_currency
string
Валюта платежа со стороны клиента
profit
double
Доход с платежа без комиссии Gram
wallet
string
Номер карты или кошелёк клиента (если есть)
date
number
Дата создания платежа (UNIX Time)
date_complete
number
Дата проведения платежа (UNIX Time)
method
string
Код метода платежа
ip
string
IP клиента при оплате
Обработчик платежей
Для завершения платежа на Вашей стороны мы рекомендуем использовать наш обработчик. Если у Вас другой язык программирования, перепишите код, сохранив все основные проверки.
<?php
$params = $_GET;
$secretKey = ''; // Ваш секретный ключ
$signature = $params['signature'];
unset($params['signature']); // Удаляем из данных строку подписи
ksort($params, SORT_STRING); // Сортируем по ключам в алфавитном порядке элементы массива
array_push($params, $secretKey); // Добавляем в конец массива ключ
$signature_string = implode('{gg}', $params); // Конкатенируем значения через символ "{gg}"
$signature_hash = hash('sha256', $signature_string);
if ($signature != $signature_hash) {
echo json_encode(array('error' => array('message' => 'Invalid signature')));
exit;
}
$account = $params['pay_id'];
switch ($params['result']) {
case "pay":
echo json_encode(array('result' => array('message' => 'Success')));
exit;
break;
case "error":
echo json_encode(array('error' => array('message' => 'Error')));
exit;
break;
default:
echo json_encode(array('error' => array('message' => 'Empty')));
exit;
break;
}
?>
Если Gram не получит ответа от Вашего сайта, то он посчитает, что вы не получили информацию о платеже и отметит это в статусе обработчика. Повторных запросов сервис не отправляет.
Last updated