Возврат покупателя в мерчант в случае успеха и неудачи
Редирект покупателя
Производим редирект покупателя на ваши URL успеха и неудачи.
URL успеха и неудачи подтягиваются из настроек мерчанта.
В случае если URL были указаны при создания заказа, то они будут в приоретете вне зависимости от значений в настройках мерчанта.
Метод запроса: GET
INFO
Важно! Данный метод не предназначен для провередения операций. Т.е проводить зачисление средств по данному методу не безопасно.
Используйте данные из Webhook или API
Параметры запроса
Данные передаются в формате application/x-www-form-urlencoded, т.е в виде ключ-значение query1=value1&query2=value2
| Имя поля | Тип поля | Описание |
|---|---|---|
| invoice_id | string format: uuid required | ID операции в нашей системе |
| order_id | string min: 1 max: 100 required | ID платежа в вашей системе |
| amount | number format: double required | Сумма к оплате. (Если в сумме есть копейки, то отправляйте их с разделителем ".") Пример: 10.28 |
| currency | string enum: [RUB, UAH, USD, EUR] required | Валюта платежа |
| merchant_id | string format: uuid required | Идентификатор мерчанта |
| custom_fields | object optional | Дополнительные параметры пользователя Важно: При генерации подписи ключи объекта сортируются лексикографически (ksort), и в подписываемую строку добавляются только значения (не ключи). Формат передачи в URL: custom_fields[key1]=value1 |
| signature | string format: hex length: 64 required | Цифровая подпись запроса. Алгоритм: HMAC-SHA256 Формирование подписи: 1. invoice_id 2. order_id 3. amount (как строка, значение не округлять) 4. currency 5. merchant_id 6. Если есть custom_fields: значения, отсортированные по ключам Разделитель: ":" (двоеточие) Пример: `a1b2c3...f64` Секретный ключ для подписи находится тут: Настроить Webhook и секрет |
Базовые примеры кода для проверки подлинности:
php
<?php
// Секретный ключ для проверки подлинности
$secret = 'example';
$sign_parts = [];
// Обязательные параметры в строгом порядке
$sign_parts[] = $_GET['invoice_id'];
$sign_parts[] = $_GET['order_id'];
$sign_parts[] = $_GET['amount'];
$sign_parts[] = $_GET['currency'];
$sign_parts[] = $_GET['merchant_id'];
// Обработка custom_fields
if(!empty($_GET['custom_fields']) && is_array($_GET['custom_fields'])) {
$custom_fields = $_GET['custom_fields'];
ksort($custom_fields);
// Добавляем только значения
foreach($custom_fields as $value) {
if(is_string($value)) {
$sign_parts[] = $value;
}
}
}
// Формируем строку для подписи
$sign_string = implode(':', $sign_parts);
// Генерируем подпись
$calculated_sign = hash_hmac('sha256', $sign_string, $secret);
// Получаем подпись из запроса
$received_sign = $_GET['signature'];
if(hash_equals($calculated_sign, $received_sign)) {
echo 'Подпись верна';
} else {
echo 'Подпись неверная';
}
?>