Обработка платежей

Получение уведомлений от Gram о оплаченном платеже

После успешной оплаты платежа, сервис отправляет запрос на Ваш сервер по адресу, который указан в настройках проекта.

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

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