Главная
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.

WebView Benzuber

WebView Benzuber – это набор визуальных web-компонент и api-запросов, для возможности использования сервиса заправки Benzuber во внешнем приложении..

Web-компоненты - это набор web-страниц, позволяющий отобразить карту с АЗС, выбрать нужную станцию, оформить заказ и отслеживать ход выполнения заказа.

API-запросы - это набор запросов для инициирования сессии пользователя и обмена информацией о ходе выполнения заказа между Benzuber и партнёром.

img

Рисунок 1. Сценарий взаимодействия

Общий сценарий работы

img

Рисунок 2. Запуск WebView, выбор АЗС и оформление заказа

img

Рисунок 3. Оплата заказа и отображение хода выполнения заказа

Запросы доступные для партнёра:

Callback-запросы доступные для партнёра:

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

Базовый URL_BZ – адрес для обращения к серверу Benzuber. Все дальнейшие запросы выполняются HTTPS GET-запросами вида: URL_BZ+/команда.

Callback URL_PS – адрес для обращения к партнеру. Для реализации запросов от Benzuber к партнеру. Все запросы выполняются HTTP/HTTPS POST-запросами вида: URL_PS+/команда.

HTTP коды ответа на запросы:

200 – запрос выполнен успешно
404 – метод не найден
500 – ошибка выполнения запроса, некорректные параметры запроса

HTTP-код ответа при выполнении запросов означает только состояние получения (доставки) запроса, без учета анализа содержимого запроса. В случае успешного получения запроса сервером (статус 200), в ответе содержится параметр success, который определяет фактическое состояние обработки содержимого полученного запроса и дополнительное описание description в случае ошибки обработки запроса.

Возможные варианты description

Значение Описание
invalid_authentication Неправильный Apikey
Invalid callback url Некорректные координаты пользователя
Invalid email Некорректный адрес электронной почты
Invalid phone Некорректный номер телефона
Order not found Не найден запрашиваемый заказ
Invalid order state Недопустимый статус заказа для операции
. . . Прочие варианты, специфичные для каждого отдельного запроса,
отражающие необходимую суть ответа

Запросы доступные для партнёра:

Создание "сессии"

Создание "сессии" обеспечивает дальнейшее взаимодействие по заказу. При успешной обработке запроса партнёр получает уникальный URL адрес для запуска и отображения в WebView своего приложения.

Запрос

(GET) URL_BZ + /order/init/?apikey={string}&
    callback={string}&phone={string}&email={string}&
    lon={numeric}&lat={numeric}&
    maximum={numeric}&fuel={string}
Параметр Описание
Обязательный
apikey
Строка
Ключ авторизации
callback Строка
Базовая часть URL адреса для обращения к партнёру
phone Строка
Сотовый номер клиента в формате 11 цифр: 7хххххххххх
email Строка
Электронная почта клиента в формате ххх@хххх
lon Число
Координата долготы текущего местоположения пользователя
lat Число
Координата широты текущего местоположения пользователя
maximum Число
Максимальная сумма в рубля доступная при офомрлении заказа
fuel Строка
Разрешенные виды топлива для оформления заказа, перечисленные через запятую.
Доступные виды топлива: АИ-92, АИ-95, АИ-98, АИ-100, ДТ, Метан, Пропан

Ответ

Content type: application/json

{
    "success": (boolean),
    "session": (string),
    "url": (string),
    "description": (string)
}
Параметр Описание
Обязательный
success
Строка
Статус выполняя запроса true - успешно, false - ошибка
Обязательный
session
Строка
Идентификатор сессии
Обязательный
url
Строка
URL для открытия WebView
description Строка
Описание ошибки в случае неуспешного выполнения запроса

Пример

Пример запроса
URL_BZ/order/init/?apikey=123&callback=http%3A%2F%2Fexample.com
            &phone=79222222222&lon=16.123456&lat=23.543210

пример успешного ответа:
{"success":true,"session":"abcdefg","url":"https://benzuber.ru/abcdefg/map/"}

пример неуспешного ответа:
{"success":false,"description":"Invalid authentication"}

Состояния заказа

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

Запрос

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

Ответ

Content type: application/json

{
    "success": (boolean),
    "is_final": (boolean),
    "status": (string),
    "brand": (string),
    "station": (string),
    "region": (string),
    "city": (string),
    "address": (string),
    "pump": (numeric),
    "fuel": (string),
    "price": (numeric),
    "order_volume": (numeric),
    "order_amount": (numeric),
    "order_bill": (numeric),
    "fact_volume": (numeric),
    "fact_amount": (numeric),
    "fact_bill": (numeric),
    "description": (string)
}
Параметр Описание
Обязательный
success
Строка
Статус выполняя запроса true - успешно, false - ошибка
Обязательный
is_final
Булево
Состояние заказа, true - заказ завершен, false - заказ выполняется
Обязательный
status
Строка
Статус заказа (этап обработки):

is_final=false
"wait" - ожидание создания заказа;
"created" - заказ создан, ожидание запроса подтверждения отплаты;
"processing" - обработка заказа (передача заказа на азс, налив топлива);

is_final=true
"notfound" - заказ не найден (сессия истекла);
"completed" - обработка заказа завершена (успешный налив);
"canceled" - заказ отменен (без налива);
"notpayed" - заказ не оплачен (не получено подтверждение оплаты);
brand Строка
Название бренда выбранной АЗС
station Строка
Название выбранной АЗС
region Строка
Регион/область АЗС
city Строка
Город АЗС
Обязательный
address
Строка
Адрес АЗС.
Может быть не формализованное,
например: автодорога 1Р-242 Пермь-Екатеринбург на 338+600 (слева)
Обязательный
pump
Число
Выбранная ТРК для заказа на АЗС
Обязательный
fuel
Строка
Выбранный вид топлива в заказе
Обязательный
price
Число
Цена топлива на АЗС
Обязательный
order_volume
Число
Заказанный объем топлива в литрах
Обязательный
order_amount
Число
Стоимость заказанного топлива в рублях
Обязательный
order_bill
Число
Сумма для оплаты (холдирования) по заказу.
Может отличаться от order_amount в случае предоставления скидок
Обязательный
fact_volume
Число
Фактический объем налитого топлива в литрах
Обязательный
fact_amount
Число
Фактическая стоимость налитого топлива в рублях
Обязательный
fact_bill
Число
Фактическая сумма для оплаты заказа.
Может отличаться от fact_amount в случае предоставления скидок
description Строка
Описание ошибки в случае неуспешного выполнения запроса

Пример

Пример запроса
URL_BZ/order/abcdefg/?apikey=123

примеры успешного ответа:
{ "success":true, "is_final":false, "status":"created",
  "brand":"Benzuber","station":"Benz-02",
  "region":"Свердловская область","city":"Екатеринбург","address":"Космонатов 10",
  "pump":"2","fuel":"АИ-92","price":"43.52",
  "order_volume":"2.3","order_amount":"100.07","order_bill":"97.77"
}

{ "success":true,"is_final":true,"status":"completed",
  "brand":"Benzuber","station":"Benz-02",
  "region":"Свердловская область","city":"Екатеринбург","address":"Космонатов 10",
  "pump":"2","fuel":"АИ-92","price":"43.52",
  "order_volume":"2.3","order_amount":"100.07","order_bill":"97.77"
  "fact_volume":"1.8","fact_amount":"78.34","fact_bill":"76.54"
}

пример неуспешного ответа:
{"success":false,"description":"Invalid authentication"}

Подтверждение оплаты

Отправка партнёром подтверждения об оплате (холдировании) средств клиента по созданному заказу. Фактическая передача и исполнение заказа со стороны Benzuber происходит только после получения этого уведомления от партнёра.

Запрос

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

Ответ

Content type: application/json

{
   "success": (boolean),
   "description": (string)
}
Параметр Описание
Обязательный
success
Строка
Статус выполняя запроса true - успешно, false - ошибка
description Строка
Описание ошибки в случае неуспешного выполнения запроса

Пример

Пример запроса
URL_BZ/order/abcdefg/accept/?apikey=123

пример успешного ответа:
{"success":true}

пример неуспешного ответа:
{"success":false,"description":"Invalid order state"}

Callback-запросы доступные для партнёра:

Для возможности оперативного получения информации от Benzuber о ходе выполнения заказа, реализован механизм обратного вызова, т.е. когда Benzuber отправляет запросы партнёру. Отправка таких запросов возможна только в случае если при создании "сессии" /order/init/ был указан параметр callback. Иначе, партнёр должен сам запрашивать состояния заказа для отслеживания статуса /order/"сессия"/

Уведомление о создании заказа

После того как пользователь в WebView выбрал АЗС и оформил заказ, этот заказ фиксируется в Benzuber и переходит в состояние ожидания оплаты. Партнёру отправляется уведомление о созданном заказе.

(POST) URL_PS + /order?apikey={string}
Request body schema application/json

{
   "id": "string",
   "brand": "string",
   "station": "string",
   "region": "string",
   "city": "string",
   "address": "string",
   "pump": "numeric string",
   "fuel": "string",
   "price": "numeric",
   "order_volume": "numeric string",
   "order_amount": "numeric string",
   "order_bill": "numeric string"
}
Параметр Описание
Обязательный
id
Строка
Идентификатор заказа, соответствует идентификатору "сессии"
brand Строка
Название бренда выбранной АЗС
station Строка
Название выбранной АЗС
region Строка
Регион/область АЗС
city Строка
Город АЗС
Обязательный
address
Строка
Адрес АЗС.
Может быть не формализованное,
например: автодорога 1Р-242 Пермь-Екатеринбург на 338+600 (слева)
Обязательный
pump
Число
Выбранная ТРК для заказа на АЗС
Обязательный
fuel
Строка
Выбранный вид топлива в заказе
Обязательный
price
Число
Цена топлива на АЗС
Обязательный
order_volume
Число
Заказанный объем топлива в литрах
Обязательный
order_amount
Число
Стоимость заказанного топлива в рублях
Обязательный
order_bill
Число
Сумма для оплаты (холдирования) по заказу.
Может отличаться от order_amount в случае предоставления скидок

Ответ
Анализируется HTTP-код ответа на запрос. В случае получения любого кода ответ отличного от 200, либо в случае таймаута запроса, заказ автоматически переводится в финальное состояния со статусом notpayed

Пример

Пример запроса
Callback URL_PS +URL_BZ/order?apikey=123
{ "id":"abcdefg", "brand":"Benzuber","station":"Benz-02",
  "region":"Свердловская область","city":"Екатеринбург","address":"Космонавтов 10",
  "pump":"2","fuel":"АИ-92","price":"43.52",
  "order_volume":"2.3","order_amount":"100.07","order_bill":"97.77"}

пример успешного ответа:
HTTP / 200 OK

пример неуспешного ответа:
HTTP / 400 ERROR

Уведомлении об успешном завершении заказа

После фактического завершения налива на АЗС партнёру отправляется уведомление с данными фактически отпущенного топлива.

Запрос

(POST) URL_PS + /complete?apikey={string}
Request body schema application/json

{
    "id": "string",
    "fact_volume": "numeric string",
    "fact_amount": "numeric string",
    "fact_bill": "numeric string"
}
Параметр Описание
Обязательный
id
Строка
Идентификатор заказа, соответствует идентификатору "сессии"
Обязательный
fact_volume
Число
Фактический объем налитого топлива в литрах
Обязательный
fact_amount
Число
Фактическая стоимость налитого топлива в рублях
Обязательный
fact_bill
Число
Фактическая сумма для оплаты заказа.
Может отличаться от fact_amount в случае предоставления скидок

Ответ
Анализируется HTTP-код ответа на запрос. В случае получения любого кода ответ отличного от 200, либо в случае таймаута запроса, запрос будет автоматически повторяться до получения успешного ответа. Т.е. до фактического приёма и обработки запроса партнёром.

Пример

Пример запроса
Callback URL_PS +URL_BZ/order?apikey=123
{ "id":"abcdefg", "fact_volume":"1.8","fact_amount":"78.34","fact_bill":"76.54"}

пример успешного ответа:
HTTP / 200 OK

пример неуспешного ответа:
HTTP / 400 ERROR

Уведомление об отмене заказа

В случае полной отмены заказа на АЗС партнёру отправляется уведомление об отмене.

(POST) URL_PS + /cancel?apikey={string}
Request body schema application/json

{
    "id": "string"
}
Параметр Описание
Обязательный
id
Строка
Идентификатор заказа, соответствует идентификатору "сессии"

Ответ
Анализируется HTTP-код ответа на запрос. В случае получения любого кода ответ отличного от 200, либо в случае таймаута запроса, запрос будет автоматически повторяться до получения успешного ответа. Т.е. до фактического приёма и обработки запроса партнёром.

Пример

Пример запроса
Callback URL_PS +URL_BZ/order?apikey=123
{ "id":"abcdefg"}

пример успешного ответа:
HTTP / 200 OK

пример неуспешного ответа:
HTTP / 400 ERROR

Уведомление о формировании фискального чека

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

(POST) URL_PS + /receipt?apikey={string}
Request body schema application/json
{
    "id": "string",
    "receipt": "string"
}
Параметр Описание
Обязательный
id
Строка
Идентификатор заказа, соответствует идентификатору "сессии"
Обязательный
receipt
Строка
Адрес URL сформированного чека в ОФД

Ответ
Независимо от полученного ответа, запрос выполняется один раз, без повторной отправки в случае получения ошибки.

Пример

Пример запроса
Callback URL_PS +URL_BZ/order?apikey=123
{ "id":"abcdefg", "receipt":"http://example.com"}

пример успешного ответа:
HTTP / 200 OK

пример неуспешного ответа:
HTTP / 400 ERROR
Описание WebView Запросы доступные для партнёра Создание "сессии" Состояние заказа Подтверждение оплаты Callback-запросы доступные для партнёра Уведомление о создании заказа Уведомлении об успешном завершении заказа Уведомление об отмене заказа Уведомление о формировании фискального чека
© 2024 ООО ТД "Смарт-технологии"