Получение курса
Метод возвращает курс конвертации между двумя валютами для указанного проекта. Используйте запрос перед расчётом суммы платежа или выплаты в другой валюте.
Формат HTTP-запросов — в разделе Формат запроса к API.
Принцип работы
- Запрос — ваш сервер вызывает
get_rateсpartner_id,project_id,currency_from,currency_toи подписьюsign. - Проверка — API проверяет подпись и права партнёра на проект.
- Ответ — JSON с полем
rate: сколько единицcurrency_toсоответствует одной единицеcurrency_from.
Техническая информация
| Эндпоинт | https://api.1payment.com/get_rate |
| Метод | GET |
| Формат ответа | JSON |
| Авторизация | API Key — участвует в генерации подписи sign |
Параметры запроса
Обязательные
| Параметр | Тип | Описание |
|---|---|---|
partner_id | Integer | Ваш уникальный ID в системе 1Payment. |
project_id | Integer | Идентификатор проекта. |
currency_from | String | Валюта отправки (ISO code, например usdt). |
currency_to | String | Валюта получения (ISO code, например rub). |
sign | String | Контрольная подпись запроса (см. раздел «Подпись»). |
Формирование подписи (sign)
Подпись: MD5, lowercase (hex). Общие правила — Формат запроса к API.
Формула:
MD5(get_rate + <параметры_без_sign_в_алфавитном_порядке_через_&> + <API_KEY>)Пример строки до хеширования:
get_ratecurrency_from=usdt¤cy_to=rub&partner_id=1234&project_id=5678secret_keyПроверка подписи в документации
Проверка подписи {{method}}
Вставьте параметры запроса (JSON), API key и подпись. Виджет автоматически проверит корректность.
Строка параметров:
currency_from=usdt¤cy_to=rub&partner_id=1234&project_id=5678Строка для MD5:
get_ratecurrency_from=usdt¤cy_to=rub&partner_id=1234&project_id=5678Ожидаемая подпись:
e6361ec42b5d5e2cee28968b4528e291Подпись не совпадает
Примеры запроса
const crypto = require('crypto');
const axios = require('axios');
async function getRate(apiKey, partnerId, projectId, currencyFrom, currencyTo) {
const params = {
partner_id: partnerId,
project_id: projectId,
currency_from: currencyFrom,
currency_to: currencyTo,
};
// 1. Сортировка параметров по алфавиту
const sortedKeys = Object.keys(params).sort();
const queryString = sortedKeys.map((key) => `${key}=${params[key]}`).join('&');
// 2. Подпись с префиксом get_rate
const baseString = `get_rate${queryString}${apiKey}`;
params.sign = crypto.createHash('md5').update(baseString).digest('hex');
// 3. GET-запрос
const response = await axios.get('https://api.1payment.com/get_rate', { params });
return response.data;
}
const apiKey = process.env.ONEPAYMENT_API_KEY;
getRate(apiKey, 1234, 5678, 'usdt', 'rub').then(console.log);Ответ API
Успешный ответ (200):
{
"rate": 72.44
}| Поле | Тип | Описание |
|---|---|---|
rate | Number | Курс конвертации currency_from → currency_to. |
Ошибка запроса (400):
{
"error_code": 2
}Расшифровка error_code — в Коды ошибок (API).