Перейти к содержимому

Получение курса

Метод возвращает курс конвертации между двумя валютами для указанного проекта. Используйте запрос перед расчётом суммы платежа или выплаты в другой валюте.

Формат HTTP-запросов — в разделе Формат запроса к API.

Принцип работы

  1. Запрос — ваш сервер вызывает get_rate с partner_id, project_id, currency_from, currency_to и подписью sign.
  2. Проверка — API проверяет подпись и права партнёра на проект.
  3. Ответ — JSON с полем rate: сколько единиц currency_to соответствует одной единице currency_from.

Техническая информация

Эндпоинтhttps://api.1payment.com/get_rate
МетодGET
Формат ответаJSON
АвторизацияAPI Key — участвует в генерации подписи sign

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

Обязательные

ПараметрТипОписание
partner_idIntegerВаш уникальный ID в системе 1Payment.
project_idIntegerИдентификатор проекта.
currency_fromStringВалюта отправки (ISO code, например usdt).
currency_toStringВалюта получения (ISO code, например rub).
signStringКонтрольная подпись запроса (см. раздел «Подпись»).

Формирование подписи (sign)

Подпись: MD5, lowercase (hex). Общие правила — Формат запроса к API.

Формула:

MD5(get_rate + <параметры_без_sign_в_алфавитном_порядке_через_&> + <API_KEY>)

Пример строки до хеширования:

get_ratecurrency_from=usdt&currency_to=rub&partner_id=1234&project_id=5678secret_key

Проверка подписи в документации

Проверка подписи {{method}}

Вставьте параметры запроса (JSON), API key и подпись. Виджет автоматически проверит корректность.

Строка параметров: currency_from=usdt&currency_to=rub&partner_id=1234&project_id=5678
Строка для MD5: get_ratecurrency_from=usdt&currency_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
}
ПолеТипОписание
rateNumberКурс конвертации currency_fromcurrency_to.

Ошибка запроса (400):

{
  "error_code": 2
}

Расшифровка error_code — в Коды ошибок (API).

Связанные разделы

Статья была полезна?