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

R1.pay: инструкция по интеграции

Версия 1.5. Дата обновления 02.09.2026

О сервисе R1.pay

Сервис R1.pay - это платёжный шлюз, интеграция с которым позволит поставщику услуг выставлять счета на оплату своим клиентам, использующим данный сервис, а также принимать оплату за оказанные услуги.

Интеграция осуществляется по протоколу HTTP/JSON. Все endpoints ожидают тело запроса в формате application/json и возвращают JSON-ответы.

Базовый URL шлюза: https://paygw.robstor.ru/

Функции системы

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

Подробнее см. в разделе Работа с лицевыми счетами.

Шлюз обращается к API вашей системы для:

Что вам нужно сделать: Реализовать указанные endpoints на своей стороне.

2. Выгрузка счетов

Подробнее см. в разделе Выгрузка счетов.

2.1. Отправка пакета счетов в API шлюза:

Что вам нужно сделать: Реализовать клиент для вызова endpoints шлюза

2.2. Получение вебхук-уведомлений о загрузке счетов

Что вам нужно сделать: Реализовать обработчик вебхука.

3. Работа с платежами

Подробнее см. в разделе Работа с платежами.

3.1. Общий функционал по работе с платежами

  • Платёжный шлюз обеспечивает отправку денежных средств со счёта клиента на расчётный счёт поставщика услуг.

3.2. Получение вебхук-уведомлений о платежах

Что вам нужно сделать: Реализовать обработчик вебхука.

Безопасность запросов

Безопасность запросов при взаимодействии сервисов осуществляется с использованием API-токенов. Все API endpoints требуют аутентификацию через добавление в раздел header запроса ключа R1-Token со значением токена аутентификации. Для подключения к вашим API вы выдаёте сгенерированный токен представителю сервиса R1.pay, а для обращения к API шлюза вам нужно получить наш токен, сгенерированный для вашего сервиса.

Пример CURL запроса с использованием токена аутентификации:

curl -X POST https://paygw.robstor.ru/api/v1/invoices/status \
  -H "Content-Type: application/json" \
  -H "R1-Token: ваш_секретный_токен" \
  -d '{
    "push_id": 12345
  }'

Пример части кода на 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)