Главная
api-pay api-b2b api-b2b-agent api-bonus api-bonus-lk api-support
api-benzuber api-benzuber (goods) api-benzuber (с эквайрингом) webview-benzuber Сценарии заправки Случаи изменения заказов Чек-лист приложений
GS-Планшет GS-Desktop GS-Carwash
Поиск документов

Авторизация

или просто отсканируйте QR-код телефоном с установленным приложением Benzuber
Для получения полного доступа к документации введите свой номер сотового телефона.
При необходимости обращайтесь в службу поддержки Benzuber или по телефону 8 (800) 250-98-93.

API-BENZUBER (с эквайрингом)

API Benzuber (с эквайрингом) – расширение протокола API-Benzuber для возможности проведения оплаты за топливо, используя эквайринговые возможности Benzuber.

img

Для реализации взаимодействия партнёру необходимо реализовать запросы:

Для обеспечения безопасного доступа и идентификации партнера для работы с протоколом предоставляется уникальный ключ apikey, который используется во всех запросах.

Базовый URL_BZ – адрес для обращения к серверу Benzuber. Все запросы выполняются HTTP/HTTPS запросами (GET или POST) вида: URL_BZ + /команда/?apikey={apikey}

HTTP коды ответа:

200 – запрос выполнен успешно
401 – ошибка авторизации, доступ запрещен
4хх, 5хх – ошибка при выполнении запроса

в случае ошибки при выполнении запроса в ответе будет содержаться информация

{
    "error":string,  //идентификатор ошибки
    "error_description":string //описание ошибки
}

Работа с пользователями

Для возможности выполнения заправок пользователям, в приложении партнёра, должны быть реализованы механизмы авторизации пользователя на стороне Benzuber, а также реализованы сценарии работы с банковскими картами, которые пользователь планирует использовать.

Авторизация и информация о пользователе

/user/{phone}/init/ Инициирование авторизации пользователя по номеру телефона, отправка SMS сообщения пользователю для подтверждения

/user/{phone}/init/{pin}/ Передача полученного PIN-кода из SMS сообщения для подтверждения авторизации пользователя

/user/{authid}/state/ Получение информации о текущем статусе авторизации пользователя и списка доступных платежных средств

/user/{authid}/logout/ Удаление авторизации пользователя в сервисе Benzuber

Работа с платежными картами пользователя

/user/{authid}/card/attach/ Инициирование привязки банковской карты к профилю пользователя, с вызовом банковской формы для ввода реквизитов карты

/user/{authid}/card/attach/{attachid}/state/ Получение информации о состоянии инициированной ранее привязки банковской карты

/user/{authid}/card/{cardid}/remove/ Удаление привязанной карты из профиля пользователя

Работа с АЗС и заказами

Запросы по работе с АЗС и постановки заказа аналогичны запросам общего протокола API-Benzuber, с добавлением необходимых данных связанных с пользователем и его методом оплаты.

/stations/ Получение списка станций доступных партнеру, с гео-данными, доступными видами топлива и структурой ТРК на каждой станции.

/price/ Получение информации о ценах на топливо на всех доступных партнёру АЗС.

/stations/{stationid}/columns/ Получение информации по станции, структура и доступность колонок (ТРК), доступные виды топлива на каждой колонке и цены на топливо. Рекомендуется запрашивать для получения оперативной информации о станции.

/order/ Передача запроса на выполнение топливного заказа, с указанием пользователя и метода оплаты

/order/{orderid}/cancel/ Возможность инициировать отмену ранее созданного заказа партнёром.

/order/{orderid}/state/ Получение информации о ранее созданном заказе партнёра

Уведомления для партнера

При выполнении сценария обработки заказа, партнёр получает запросы-уведомления.

/order/accept/ Подтверждение приёма заказа от партнёра

/order/volume/ Уведомление о текущем объеме налитого топлива, при выполнении заказа

/order/ Уведомление о текущем состоянии заказа


Работа с пользователями

Авторизация пользователя

Инициирование авторизации пользователя по номеру телефона, отправка SMS сообщения пользователю для подтверждения. У высланного кода установлен срок действия 10 минут. В случае повторной отправки запроса в этот период - новой SMS отправлено не будет, а в ответе будет информация о сроке действия высланного кода.

Запрос

(GET) URL_BZ + /user/{phone}/init/
Параметр Описание
Обязательный
phone
Строка
номер телефона пользователя. 11 цифр в формате 79ххххххххх

Ответ

Content type: application/json

{
  "authExpiration": (string)
}
Параметр Описание
Обязательный
authExpiration
Строка
количество секунд до окончания действия высланного PIN-кода

Возможные ошибки

error error_description
invalid phone недопустимый номер сотового телефона

Подтверждение PIN-кода

Передача полученного PIN-кода из SMS сообщения для подтверждения авторизации пользователя. В случае передачи верного кода, в ответ будет передан идентификатор пользователя authId, который используется в дальнейшем для идентификации пользователя.

Идентификатор является действующим в течение 30 дней, и автоматически продлевается при использовании сервиса пользователем.

Запрос

(GET) URL_BZ + /user/{phone}/init/{pin}/
Параметр Описание
Обязательный
phone
Строка
номер телефона пользователя. 11 цифр в формате 79ххххххххх
Обязательный
pin
Строка
PIN-код полученный пользователем в SMS

Ответ

Content type: application/json

{
  "authId": (string),
  "isOrderAvailable" : (boolean),
  "userCards" : [
    {
        "id": (numeric),
        "title" : (string)
    },
    ...
  ]
}
Параметр Описание
Обязательный
authId
Строка
Идентификатор пользователя партнёра в Benzuber.
Обязательный
isOrderAvailable
Bolean
Признак доступности заправки для пользователя
true - доступно, false - заправка запрещена
Обязательный
userCards
Массив
Список доступных банковских карт пользователя.
Каждый элемент списка структура вида
{"id" - идентификатор карты, "title" - представление карты}.
Например {"id":34,"title":"МИР ** 1232"}

Возможные ошибки

error error_description
invalid pin предоставлен неверный PIN-код
pin expired срок действия PIN-кода закончился
invalid phone недопустимый номер сотового телефона

Информация о пользователе

Получение информации о текущем статусе авторизации пользователя и списка доступных платежных средств

Запрос

(GET) URL_BZ + /user/{authId}/state/
Параметр Описание
Обязательный
authId
Строка
Идентификатор пользователя, полученный при авторизации в Benzuber

Ответ

Content type: application/json

{
  "clientPhone": (string),
  "isOrderAvailable" : (boolean),
  "userCards" : [
    {
        "id": (numeric),
        "title" : (string)
    },
    ...
  ]
}
Параметр Описание
Обязательный
clientPhone
Строка
Номер телефона пользователя
Обязательный
isOrderAvailable
Bolean
Признак доступности заправки для пользователя
true - доступно, false - заправка запрещена
Обязательный
userCards
Массив
Список доступных банковских карт пользователя.
Каждый элемент списка структура вида
{"id" - идентификатор карты, "title" - представление карты}.
Например {"id":34,"title":"МИР ** 1232"}

Возможные ошибки

error error_description
auth expired Идентификатор пользователя неверный (в том числе просрочен)

Удаление авторизации пользователя

Удаление авторизации пользователя в сервисе Benzuber.

Запрос

(GET) URL_BZ + /user/{authId}/logout/
Параметр Описание
Обязательный
authId
Строка
Идентификатор пользователя, полученный при авторизации в Benzuber

Ответ

Content type: application/json

{
  "status": "ok"
}

Работа с платежными картами пользователя

Привязка банковской карты

Инициирование привязки банковской карты к профилю пользователя, с вызовом банковской формы для ввода реквизитов карты

Запрос

(POST) URL_BZ + /user/{authId}/card/attach/
Request body schema application/json

{
    "return": (string)
}
Параметр Описание
Обязательный
authId
Строка
Идентификатор пользователя, полученный при авторизации в Benzuber
Обязательный
return
Строка
URL адрес, на который следует вернуть пользователя после ввода реквизитов карты на платежной форме

Ответ

Content type: application/json

{
  "attachId": (string),
  "redirectUrl" : (boolean)
}
Параметр Описание
Обязательный
attachId
Строка
Идентификатор сессии привязки карты
Обязательный
redirectUrl
Строка
URL-адрес, платежной формы, которую нужно открыть для пользователя для ввода реквизитов карты

Возможные ошибки

error error_description
auth expired Идентификатор пользователя неверный (в том числе просрочен)
invalid request не указаны обязательные параметры

Состояние процесса привязки карты

Получение информации о состоянии инициированной ранее привязки банковской карты

Запрос

(POST) URL_BZ + /user/{authId}/card/attach/{attachid}/state/
Параметр Описание
Обязательный
authId
Строка
Идентификатор пользователя, полученный при авторизации в Benzuber
Обязательный
attachid
Строка
Идентификатор сессии привязки карты

Ответ

Content type: application/json

{
  "status": (string)
}
Параметр Описание
Обязательный
status
Строка
Текущий статус привязки карты:
"ok" - карта успешно привязана
"failed" - привязка карты не удалась
"progress" - идет обработка сценария привязки карты

Возможные ошибки

error error_description
attach not found Идентификатор сессии привязки карта неверный (не найден)
auth expired Идентификатор пользователя неверный (в том числе просрочен)

Удаление привязанной карты

Удаление привязанной карты из профиля пользователя

Запрос

(POST) URL_BZ + /user/{authId}/card/attach/{cardid}/remove/
Параметр Описание
Обязательный
authId
Строка
Идентификатор пользователя, полученный при авторизации в Benzuber
Обязательный
cardid
Строка
Идентификатор привязанной карты пользователя

Ответ

Content type: application/json

{
  "status": "ok"
}

Возможные ошибки

error error_description
card not found Идентификатор карты неверный (не найден)
auth expired Идентификатор пользователя неверный (в том числе просрочен)

Работа с АЗС и заказами

Запросы по работе с АЗС и постановки заказа аналогичны запросам общего протокола API-Benzuber, с добавлением необходимых данных связанных с пользователем и его методом оплаты.


Получение списка АЗС и структуры ТРК

Получение информации о станциях доступных для партнера.

Запрос

(GET) URL_BZ + /stations/

Ответ

Content type: application/json

[
  {
    "StationID": "Номер",
    "Name": "Название",
    "Brand": "Название сети АЗС",
    "City": "Город, регион",
    "Address": "Адрес станции",
    "Postpay": false,
    "OrderBefore": false,
    "TakeBefore": false,
    "MaxTotal": 9990,
    "Fuels": [
              {
              "Id": "a92",
              "Marka": "АИ-92"
              },
              ...
            ], //fuels
    "Location":
        {
        "Lat": 56.839703,
        "Lon": 60.267601
        },
    "Columns":
        {"1": {"ColumnNumber":"1", "Fuels": ["a92","diesel"]},
        ...
        }
  },
  {"StationID": ...},
  ...
]
Параметр Описание
Обязательный
stationID
Строка
Идентификатор станции
Обязательный
Name
Строка
Название станции
Обязательный
Brand
Строка
Название сети АЗС (бренд)
Обязательный
City
Строка
Город расположения станции
Обязательный
Address
Строка
Адрес станции (улица, строение и т.п.)
Обязательный
Postpay
Boolean
Режим работы станци: true - только пост-оплата, false - доступны предоплатные заказы
Обязательный
OrderBefore
Boolean
Признак необходимости отправки заказа, ДО понятие пистолета.
Обязательный
TakeBefore
Boolean
Признак необходимости понятие пистолета ДО отправки заказа
Обязательный
MaxTotal
Число
Максимальная доступная сумма для заказа в рублях
Обязательный
Fuels
Массив
Доступные виды топлива на станции.
id – код топлива
Marka – название вида топлива (актуально для брендированных видов топлива)
Обязательный
Location
Структура
Географические координаты станции (долгота и широта)
Обязательный
Columns
Структура
Доступные ТРК на станции и доступные виды топлива на ТРК

Получение прайс-листа

Запрос актуального списка цен на доступные виды топлива на станции.

Запрос

(GET) URL_BZ + /price/

Ответ

Content type: application/json

[
  {
    "StationId": "3",
    "ProductID": "a92",
    "Price": 42.43,
  },
  {"StationId":...},
  ...
]
Параметр Описание
Обязательный
stationID
Число
Идентификатор станции.
Обязательный
ProductID
Строка
Идентификатор вида топлива
Обязательный
Price
Число
Цена топлива для партнёра

Получение структуры ТРК на АЗС

Получение информации по станции, структура и доступность колонок (ТРК), доступные виды топлива на каждой колонке и цены на топливо.

Запрос

(GET) URL_BZ + /stations/{stationid}/columns/
Параметр Описание
Обязательный
stationId
Число
Идентификатор станции

Ответ

Content type: application/json

[
  {
    "ColumnId": "1",
    "ColumnNumber": "1",
    "ColumnLocked": false,
    "Products": [
      {
        "ProductId": "a92",
        "ProductName": "АИ-92",
        "ProductDescr": "АИ-92",
        "ProductPrice": 41.1,
        "IsTaken": true
      },
      ...
    ],
    "UnpaidOrder":
        {
          "ProductId":"a100_premium",
          "Litre":"12.80",
          "Sum":"659.07",
          "ExtendedId":"vmkl3y...s6freyfkz"
        }
  },
  {"ColumnId": ...},
  ...
]
Параметр Описание
Обязательный
ColumnId
Строка
Идентификатор колонки (ТРК)
Обязательный
ColumnNumber
Строка
Порядковый номер колонки на АЗС
Обязательный
ColumnLocked
Boolean
Доступность колонки
true - ТРК свободна, доступна для заказа
false - ТРК заблокирована, недоступна для заказа, или на ТРК присутствует неоплаченный постоплатный заказ UnpaidOrder
Обязательный
Products
Массив
Информация о доступных видах топлива на колонке (ProductId, ProductName), признаке поднятого пистолета IsTaken и цене топлива productPrice
UnpaidOrder Структура
Информация о наличии постоплатного заказа на ТРК. Данные о топливе, объеме, сумме заказа, а также его номер, который необходимо указать при и отправке заказа (оплаты).

Создание нового заказа

Передача запроса на выполнение топливного заказа, с указанием пользователя и метода оплаты

Запрос

(POST)URL_BZ + /order/
Request body schema application/json

{
  "authid":(string),
  "cardid":(string),
  "stationextendedid":(int),
  "columnid":(int),
  "fuelid":(string),
  "pricefuel":(double),
  "sum":(double),
  "extendedid":(string),
}
Параметр Описание
Обязательный
authId
Строка
Идентификатор пользователя, полученный при авторизации в Benzuber
Обязательный
cardid
Строка
Идентификатор привязанной карты пользователя
Обязательный
stationextendedid
Число
Идентификатор станции на сервере benzuber
Обязательный
columnid
Число
Идентификатор колонки (ТРК)
Обязательный
fuelid
Строка
Код вида топлива
Обязательный
pricefuel
Число
Цена топлива за 1 литр
Обязательный
sum
Число
Сумма заказа в рублях
extendedid Строка
Идентификатор постоплатного заказа, который требуется оплатить

Ответ

Content type: application/json

{
  "orderId": (sting)
}
Параметр Описание
Обязательный
orderId
Строка
Идентификатор созданного заказа

Возможные ошибки

error error_description
invalid request Отсутствуют обязательные параметры в запросе
auth expired Идентификатор пользователя неверный (в том числе просрочен)
client rejected Пользователю недоступна заправка
invalid cardid Идентификатор банковской карты пользователя не найден
station not found АЗС не найдена, или недоступна для партнёра
station unavailable АЗС не может принять заказа в текущий момент
invalid price Цена в заказе отличается от цены на АЗС
pump unavailable Указанный в заказе колонка (ТРК) отсутствует на АЗС
pump busy ТРК занята
fuel unavailable Указанный в заказе вид топлива отсутствует на ТРК
invalid sum Неверная сумма заказа (в том числе, меньше минимальной или больше максимальной допустимых)
internal error внутренняя ошибка сервера, заказ не создан

Запрос на попытку отмены заказа

Возможность инициировать отмену ранее созданного заказа партнёром.

Запрос

(GET)URL_BZ + /order/{orderid}/cancel/
Параметр Описание
Обязательный
orderId
Строка
Идентификатор созданного заказа

Ответ

Content type: application/json

{
  "status": (string)
}
Параметр Описание
Обязательный
status
Строка
Статус исполнения запроса:
"ok" - заказ отменен
"progress" - запрос на отмену заказа передан на АЗС, подтверждение отмены еще не получено
"failed" - отмена заказа невозможна (уже завершен налив)

Возможные ошибки

error error_description
order not found Идентификатор заказа не найден

Запрос информации по заказу

Получение информации о ранее созданном заказе партнёра

Запрос

(GET)URL_BZ + /order/{orderid}/state/
Параметр Описание
Обязательный
orderId
Строка
Идентификатор созданного заказа

Ответ

Content type: application/json

{
  "Id":(string),
  "Status":(string),
  "UserId":(string),
  "DateCreate":(string),
  "DateEnd":(string),
  "OrderType":(string),
  "OrderVolume":(string),
  "StationId":(string),
  "ColumnId":(int),
  "FuelId":(string),
  "FuelMarka":(string),
  "PriceFuel":(double),
  "Sum":(double),
  "Litre":(double),
  "SumPaidCard":(double),
  "SumPaid":(double),
  "LitreCompleted":(double),
  "SumPaidCardCompleted":(double),
  "SumPaidCompleted":(double),
  "ReasonId":(string),
  "Reason":(string),
  "Receipt":(string)
}
Параметр Описание
Обязательный
Id
Строка
Идентификатор заказа
Обязательный
Status
Строка
Текущий статус заказа
OrderCreated - заказ создан (не подтвержден)
OrderPaid - заказ оплачен (холдирование на карте)
WaitingRefueling - заказ передан на АЗС
Fueling - выполняется заправка
StationCanceled - заказ отменен
Completed - заказ успешно завершен (топливо налито)
ErrorPayment - ошибка платежа (не удалось захолдировать)
Обязательный
UserId
Строка
Телефон пользователя
Обязательный
DateCreate
Строка
Дата создания заказа
DateEnd Строка
Дата окончания обработки заказа
Обязательный
OrderType
Строка
Тип заказа, всегда в рублях (Money)
Обязательный
OrderVolume
Строка
Сумма заказа в рублях
Обязательный
StationId
Строка
Идентификатор АЗС
Обязательный
ColumnId
Строка
Номер ТРК
Обязательный
FuelId
Строка
Идентификатор топлива
Обязательный
FuelMarka
Строка
Марка топлива (в том числе брендированные названия)
Обязательный
PriceFuel
Строка
Цена топлива
Обязательный
Sum
Строка
Сумма заказа в рублях
Обязательный
Litre
Строка
Объем заказа в литрах
Обязательный
SumPaidCard
Строка
Захолдированная сумма в рублях на карте пользователя
Обязательный
SumPaid
Строка
Стоимость заказа в рублях
Обязательный
LitreCompleted
Строка
Фактический налив топлива в литрах
Обязательный
SumPaidCardCompleted
Строка
Фактическая сумма списания с карты пользователя в рублях
Обязательный
SumPaidCompleted
Строка
Фактическая стоимость налитого топлива в рублях
Обязательный
ReasonId
Строка
Идентификатор причины отмены заказа
Обязательный
Reason
Строка
Описание причины отмены заказа
Receipt Строка
Ссылка на фискальный чек

Возможные ошибки

error error_description
order not found Идентификатор заказа не найден

Уведомления для партнера

При выполнении сценария обработки заказа, партнёр получает запросы-уведомления. URL_PS – адрес для обращения к серверу Партнёра, устанавливается в настройках интеграции.

Подтверждение заказа (Статус: accept)

Запрос сообщает партнеру о том, что заказ принят и обработан сервером Benzuber.
Данный запрос отправляет после того как были произведены определённые действия с заказом, проверено соответствие параметров, заказ сохранен в базе данных, и система готова перейти на следующий шаг.

Запрос

(GET) URL_PS + /order/accept?apikey={apikey}&orderId={orderId}
Параметр Описание
Обязательный
apikey
Строка
Ключ авторизации
Обязательный
orderId
Строка
Идентификатор заказа

Ответ
В случае если партнер дал ответ отличный от 200 ОК, то заказ отменяется и обработка заказа завершается. В случае положительного ответа - происходит холдирование денежных средств на карте пользователя и заказ передается на АЗС


Передача состояния процесса налива

Выполнение запроса происходит с периодичностью от 2 до 5 секунд, по факту получения информации от АЗС. Ответ на запрос от партнера не контролируется, и повторно не отправляется. Некоторые АЗС не поддерживают передачу информации о ходе налива.

Запрос

(GET) URL_PS + /order/volume?apikey={apikey}&orderId={orderId}&&litre={volume}
Параметр Описание
Обязательный
apikey
Строка
Ключ авторизации
Обязательный
orderId
Строка
Идентификатор заказа
Обязательный
volume
Число
Количество фактически налитых литров

Ответ
Ответ партнёра не учитывается при обработке запроса.


Уведомление о текущем состоянии заказа

Запрос для уведомления партнёра при изменении состояния заказа в ходе его обработки - при фактическом успешном наливе или отмене заказа.

Запрос

(POST) URL_PS + /order/?apikey={apikey}
Параметр Описание
Обязательный
apikey
Строка
Ключ авторизации

Ответ

Content type: application/json

{
  "Id":(string),
  "Status":(string),
  "UserId":(string),
  "DateCreate":(string),
  "DateEnd":(string),
  "OrderType":(string),
  "OrderVolume":(string),
  "StationId":(string),
  "ColumnId":(int),
  "FuelId":(string),
  "FuelMarka":(string),
  "PriceFuel":(double),
  "Sum":(double),
  "Litre":(double),
  "SumPaidCard":(double),
  "SumPaid":(double),
  "LitreCompleted":(double),
  "SumPaidCardCompleted":(double),
  "SumPaidCompleted":(double),
  "ReasonId":(string),
  "Reason":(string),
  "Receipt":(string)
}
Параметр Описание
Обязательный
Id
Строка
Идентификатор заказа
Обязательный
Status
Строка
Текущий статус заказа
OrderCreated - заказ создан (не подтвержден)
OrderPaid - заказ оплачен (холдирование на карте)
WaitingRefueling - заказ передан на АЗС
Fueling - выполняется заправка
StationCanceled - заказ отменен
Completed - заказ успешно завершен (топливо налито)
ErrorPayment - ошибка платежа (не удалось захолдировать)
Обязательный
UserId
Строка
Телефон пользователя
Обязательный
DateCreate
Строка
Дата создания заказа
DateEnd Строка
Дата окончания обработки заказа
Обязательный
OrderType
Строка
Тип заказа, всегда в рублях (Money)
Обязательный
OrderVolume
Строка
Сумма заказа в рублях
Обязательный
StationId
Строка
Идентификатор АЗС
Обязательный
ColumnId
Строка
Номер ТРК
Обязательный
FuelId
Строка
Идентификатор топлива
Обязательный
FuelMarka
Строка
Марка топлива (в том числе брендированные названия)
Обязательный
PriceFuel
Строка
Цена топлива
Обязательный
Sum
Строка
Сумма заказа в рублях
Обязательный
Litre
Строка
Объем заказа в литрах
Обязательный
SumPaidCard
Строка
Захолдированная сумма в рублях на карте пользователя
Обязательный
SumPaid
Строка
Стоимость заказа в рублях
Обязательный
LitreCompleted
Строка
Фактический налив топлива в литрах
Обязательный
SumPaidCardCompleted
Строка
Фактическая сумма списания с карты пользователя в рублях
Обязательный
SumPaidCompleted
Строка
Фактическая стоимость налитого топлива в рублях
Обязательный
ReasonId
Строка
Идентификатор причины отмены заказа
Обязательный
Reason
Строка
Описание причины отмены заказа
Receipt Строка
Ссылка на фискальный чек
Описание API-Benzuber (с эквайрингом) Авторизация пользователя Подтверждение PIN-кода Информация о пользователе Удаление авторизации пользователя Привязка банковской карты Состояние процесса привязки карты Удаление привязанной карты Запрос списка станций Запрос прайс-листа АЗС Запрос информации по АЗС Запрос на создание заказа Запрос на попытку отмены заказа Запрос информации по заказу Подтверждение заказа (callback) Состояние процесса налива (callback) Уведомление о текущем состоянии заказа (callback)
© 2024 ООО ТД "Смарт-технологии"