Обзор API и аутентификация
QuantaPay предоставляет простой REST-подобный API для создания платежей, запроса информации о транзакциях и управления вашим аккаунтом программным путем.
QuantaPay предоставляет простой REST-подобный API для создания платежей, запроса транзакций и управления вашей учетной записью программным способом.
Endpoint
Все API-запросы отправляются на один endpoint:
POST https://cloud.quantapay.app/api.php
Content Type
Запросы используютapplication/x-www-form-urlencoded(стандартная кодировка HTML-форм).
curl -X POST https://cloud.quantapay.app/api.php \
-d "function=get-balances" \
-d "api-key=YOUR_API_KEY"
Authentication
Каждый API-запрос должен включать вашAPI Keyв качестве POST-параметра.
| Parameter | Type | Required | Description |
|---|---|---|---|
api-key | string | Yes | Ваш API key. Находится в Settings → Account. |
function | string | Yes | Имя вызываемой API-функции. |
Getting Your API Key
- Войдите вcloud.quantapay.app
- Перейдите вSettings → Account
- Скопируйте свой API Key
Security: Храните свой API key в секрете. Не раскрывайте его в клиентском коде или публичных репозиториях.
HMAC Signature (Optional)
Дляcreate-checkout-sessionвы можете добавить проверку подписи HMAC-SHA256, чтобы предотвратить несанкционированное изменение запроса.
How It Works
- Сформируйте строку данных для подписи:
{price}|{currency}|{order_id}|{timestamp} - Сгенерируйте HMAC-SHA256, используя вашWebhook Secret Keyв качестве секрета.
- Включите
подписьивременную меткув ваш запрос
Пример (PHP)
$webhook_secret = 'your-webhook-secret-key';
$price = '49.99';
$currency = 'usd';
$order_id = 'ORD-12345';
$timestamp = time();
$sign_data = $price . '|' . $currency . '|' . $order_id . '|' . $timestamp;
$signature = hash_hmac('sha256', $sign_data, $webhook_secret);
// Include in your API request:
// signature={$signature}×tamp={$timestamp}
Пример (Node.js)
const crypto = require('crypto');
const webhookSecret = 'your-webhook-secret-key';
const price = '49.99';
const currency = 'usd';
const orderId = 'ORD-12345';
const timestamp = Math.floor(Date.now() / 1000);
const signData = `${price}|${currency}|${orderId}|${timestamp}`;
const signature = crypto.createHmac('sha256', webhookSecret).update(signData).digest('hex');
Примечание: Временная метка должна отличаться от времени сервера не более чем на 5 минут, иначе запрос будет отклонен с ошибкой "Request expired".
Формат ответа
Успех
{
"success": true,
"response": { ... }
}
Ошибка
{
"success": false,
"error_code": "error-code-slug",
"message": "Human-readable error description"
}
Коды ошибок
| Код ошибки | Description |
|---|---|
missing-function-name | Параметрfunctionне был включен в запрос. |
function-not-found | Указанное имя функции не существует. |
api-key-not-found | Параметрapi-keyПараметр не был включен. |
invalid-api-key | Предоставленный API-ключ неверен. |
missing-argument | Для указанной функции отсутствует обязательный параметр. |
Ограничения скорости
Строгих ограничений скорости нет, но чрезмерные запросы могут быть ограничены. При обычном использовании (менее 100 запросов в минуту) ограничение не применяется.