Перейти к содержанию

Работа с лицевыми счетами

Эти endpoints вызываются ПЛАТЁЖНЫМ ШЛЮЗОМ К ВАШЕЙ системе. Платёжный шлюз отправляет запрос, чтобы проверить существование лицевого счёта, либо чтобы добавить или удалить лицевой счёт. Ваша система возвращает HTTP 200 OK с указанной структурой ответа.

Информация о запросах

Базовый URL: https://ВАШ_BASE_URL/
Метод: POST

Заголовки запросов:

Имя заголовка Значение
Content-Type application/json
R1-Token <ваш_секретный_токен>

Аутентификация

Платёжный шлюз отправляет заголовок R1-Token с вашим токеном, который вы предварительно передаёте представителю R1.pay защищённым способом. Вам нужно проверять этот токен для подтверждения, что запрос исходит от доверенного шлюза. Обычно такую проверку внедряют в middleware, подключённому к защищаемым роутам API. Пример части кода на Python, реализующего такую проверку:

  EXPECTED_TOKEN = os.environ.get("R1_Token")
  token = request.headers.get("R1-Token")
  if not token:
      abort(401)

  received = token.encode("utf-8")
  expected = EXPECTED_TOKEN.encode("utf-8")

  if not hmac.compare_digest(received, expected):
      abort(401)

Важно: В целях безопасности токены рекомендуется хранить в зашифрованном виде, чтобы в случае взлома эти чувствительные данные не попали в руки злоумышленников. Если выявлен факт утечки, следует незамедлительно сгенерировать новый токен для платёжного шлюза R1.pay.


1. Проверка существования счёта

POST /account/check

Проверяет, существует ли счёт клиента в вашей системе.

Запрос

Структура запроса

Поле Тип Обязательное Описание
account string Да Номер договора или лицевого счёта
phone string Нет Телефон клиента (для дополнительной проверки)

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

{
  "account": "3494987",
  "phone": "79134441212"
}

Ответ

Структура ответа

Поле Тип Описание
account string Подтверждённый номер лицевого счёта (должен совпадать с запрошенным). Если счёт не найден, вернуть пустое значение
accepted string Дата заключения договора в формате YYYY-MM-DD. Если счёт не найден, вернуть пустое значение
msg string Текстовое сообщение. Пустое при успехе. В случае ошибки содержит описание ошибки, которое демонстрируется пользователю.

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

  • Счёт найден:
{
  "account": "3494987",
  "accepted": "2026-04-01",
  "msg": ""
}
  • Неверный формат номера лицевого счёта:
{
  "account": "",
  "accepted": "",
  "msg": "Неверный формат номера лицевого счёта"
}

2. Добавление счёта

POST /account/add

Вызывается, когда клиент добавляет лицевой счёт в свой профиль. Это уведомляет вашу систему, что можно производить отправку счетов на оплату для этого лицевого счёта.

Запрос

Структура запроса

Поле Тип Обязательное Описание
account string Да Номер лицевого счёта
phone string Нет Телефон клиента
added string Да Временная метка добавления (YYYY-MM-DD HH:MM:SS)

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

{
  "account": "3494987",
  "phone": "79134441212",
  "added": "2026-04-13 15:21:37"
}

Ответ

Структура ответа

Поле Тип Описание
account string Подтверждённый номер счёта (должен совпадать с запрошенным). В случае ошибки вернуть пустое значение
accepted string Дата принятия счёта (YYYY-MM-DD). В случае ошибки вернуть пустое значение
msg string Текстовое сообщение. Пустое при успехе. В случае ошибки вернуть описание, которое демонстрируется пользователю.

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

  • Информация подтверждена
{
  "account": "3494987",
  "msg": "",
  "accepted": "2026-04-13"
}
  • Лицевой счёт не найден
{
  "account": "",
  "accepted": "",
  "msg": "Счёт не найден в нашей системе"
}

3. Удаление счёта

POST /account/del

Вызывается, когда клиент удаляет лицевой счёт из своего профиля. Это уведомительный метод, ваша система должна вернуть HTTP 200 OK, но конкретные данные в ответе не обязательны.

Запрос

Структура запроса

Поле Тип Обязательное Описание
account string Да Номер лицевого счёта
phone string Нет Телефон клиента
removed string Да Временная метка удаления (YYYY-MM-DD HH:MM:SS)

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

{
  "account": "3494987",
  "phone": "79134441212",
  "removed": "2026-04-13 15:21:37"
}

Ответ

Структура ответа

Метод носит уведомительную функцию и не ожидает определённых данных. Верните любой валидный JSON-ответ с HTTP 200 OK

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

{
  "account": "3494987",
  "msg": ""
}