Документация API

Всё необходимое для интеграции платёжной системы Aura Pay в ваш проект

Быстрый старт

Интеграция Aura Pay состоит из нескольких простых шагов. Вы можете начать принимать платежи за 15 минут.

1. Получите API-ключи

После регистрации и прохождения модерации, в личном кабинете в разделе «Настройки проекта» вы найдёте:

  • Shop ID — идентификатор вашего магазина
  • Secret Key — секретный ключ для подписи запросов
  • API Key — ключ для авторизации запросов

Никогда не передавайте Secret Key третьим лицам и не используйте его на стороне клиента (frontend).

2. Базовый URL

Все запросы к API направляются по адресу:

https://api.aura-pay.shop/v1/

3. Формат данных

API принимает и возвращает данные в формате JSON. Все запросы должны содержать заголовок:

Content-Type: application/json

Авторизация

Для авторизации используется API-ключ, который передаётся в заголовке каждого запроса.

HTTP Header
Authorization: Bearer YOUR_API_KEY

Подпись запросов

Для критически важных операций (создание платежа, возврат) запрос подписывается с помощью Secret Key по алгоритму HMAC-SHA256.

Python
import hmac, hashlib, json def sign_request(data, secret_key): payload = json.dumps(data, sort_keys=True) signature = hmac.new( secret_key.encode(), payload.encode(), hashlib.sha256 ).hexdigest() return signature

Создание платежа

Для создания платежа отправьте POST-запрос на эндпоинт:

POST /v1/payments/create

Параметры запроса

Параметр Тип Описание
amount обязательный number Сумма платежа в рублях (мин. 10 ₽)
order_id обязательный string Уникальный идентификатор заказа в вашей системе
description опционально string Описание платежа (до 256 символов)
success_url опционально string URL для перенаправления после успешной оплаты
fail_url опционально string URL для перенаправления при ошибке оплаты
webhook_url опционально string URL для уведомлений о статусе платежа
expire опционально integer Время жизни платежа в минутах (по умолчанию 60)

Пример запроса

cURL
curl -X POST https://api.aura-pay.shop/v1/payments/create \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_API_KEY" \ -d '{ "amount": 1500.00, "order_id": "ORDER-12345", "description": "Оплата заказа #12345", "success_url": "https://example.com/success", "fail_url": "https://example.com/fail" }'

Пример ответа

JSON Response — 200 OK
{ "status": "success", "data": { "id": "pay_8f2k4j6h8d", "amount": 1500.00, "currency": "RUB", "status": "pending", "payment_url": "https://pay.aura-pay.shop/p/pay_8f2k4j6h8d", "expire_at": "2026-02-12T15:30:00Z" } }

Статус платежа

Для проверки статуса платежа используйте GET-запрос:

GET /v1/payments/{payment_id}/status

Возможные статусы

Статус Описание
pending Платёж создан, ожидает оплаты
processing Платёж обрабатывается
completed Платёж успешно завершён
failed Платёж отклонён
expired Истекло время ожидания оплаты
refunded Средства возвращены

Вебхуки (Webhooks)

Aura Pay отправляет POST-уведомления на указанный вами URL при изменении статуса платежа.

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

JSON Webhook Body
{ "event": "payment.completed", "data": { "id": "pay_8f2k4j6h8d", "amount": 1500.00, "currency": "RUB", "status": "completed", "order_id": "ORDER-12345", "paid_at": "2026-02-12T14:35:22Z" }, "signature": "a1b2c3d4e5f6..." }

Проверка подписи

Обязательно проверяйте подпись вебхука перед обработкой платежа:

PHP
function verifyWebhook($body, $signature, $secretKey) { $data = json_decode($body, true); unset($data['signature']); $payload = json_encode($data, JSON_SORT_KEYS); $expected = hash_hmac('sha256', $payload, $secretKey); return hash_equals($expected, $signature); }

Ваш сервер должен ответить HTTP 200 в течение 10 секунд. При отсутствии ответа уведомление будет повторно отправлено через 5, 30 и 60 минут.

Коды ошибок

При возникновении ошибки API возвращает JSON с описанием проблемы.

Код HTTP Описание
INVALID_API_KEY 401 Неверный API-ключ
INVALID_SIGNATURE 401 Неверная подпись запроса
INVALID_AMOUNT 400 Некорректная сумма платежа
DUPLICATE_ORDER 409 Заказ с таким order_id уже существует
PAYMENT_NOT_FOUND 404 Платёж не найден
SHOP_BLOCKED 403 Магазин заблокирован
RATE_LIMIT 429 Превышен лимит запросов (100 запросов/мин)
INTERNAL_ERROR 500 Внутренняя ошибка сервера

Пример ответа с ошибкой

JSON Response — 400
{ "status": "error", "code": "INVALID_AMOUNT", "message": "Сумма платежа должна быть не менее 10 ₽" }