API АЗС

API АЗС

API АЗС — діаграма послідовності

Основне завдання: мета цього API — надати банкам доступ до даних АЗС та дозволити ініціювати транзакції на заправці через взаємодію з системою ритейлера.

Авторизація

Авторизація для всіх API відбувається за допомогою Bearer Token.

Як згенерувати Bearer Token

Для генерації токена використовуйте api.

Приклад:

{
  "Authorization": "Bearer {{authToken}}"
}

Зверніть увагу: токен має термін дії.


Список АЗС

Опис: отримати список доступних АЗС

Метод: GET

URL: /FuelSystem/stations/{RetailerId}

Успішна відповідь

HTTP-код: 200

{
  "status": true,
  "stations": [
    {
      "codeAZS": "STATION01",
      "name": "Central Fuel Station",
      "address": "123 Main Street, City",
      "status": "active"
    },
    {
      "codeAZS": "STATION02",
      "name": "Highway Fuel Station",
      "address": "456 Highway Road, City",
      "status": "active"
    }
  ]
}

Поля відповіді:

ПараметрТипОпис
statusBooleanСтатус відповіді
stationsArrayМасив об’єктів АЗС
codeAZSStringКод АЗС (макс. 10 символів)
nameStringВідображувана назва АЗС
adressStringФізична адреса АЗС
statusStringСтатус доступності АЗС

Отримання конфігурації АЗС

Опис: отримати конфігурацію АЗС

Метод: POST

URL: FuelSystem/station-config/{RetailerId}/{phoneNumber}

Тіло запиту:

{
  "codeAZS": "STATION02"
}

Опис основного об’єкта:

ПараметрТипОбов’язковийОпис
codeAZSString 10ТакКод АЗС

Успішна відповідь

HTTP-код: 200

Тіло відповіді:

{
  "status": true,
  "fuelStationData": [
    {
      "nozzle": 3,
      "goodsCode": 20002,
      "dispenser": 2,
      "goodsName": "Premium Gasoline 95",
      "price": 32.5,
      "goodsGUID": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
    }
  ],
  "retailerToken": "Xk9mN2pQ8vR5tY3wE7sA1bC4dF6gH8iJ",
  "companyId": "7890"
}

Поля відповіді:

ПараметрТипОбов’язковийОпис
statusBooleanТакСтатус відповіді
fuelStationDataArrayТакМасив об’єктів конфігурації АЗС
nozzlebooleanТакІнформаційне, для відображення конфігурації АЗС
goodsCodeNumberТакОбов’язкове для операцій продажу
dispenserNumberТакОбов’язкове для операцій продажу
goodsNameNumberНіІнформаційне, для відображення конфігурації АЗС
priceNumberТакАКТУАЛЬНА поточна ціна для розрахунків пального
goodsGUIDStringНіІнформаційне, альтернатива GoodsCode
retailerTokenStringНіОБОВ’ЯЗКОВИЙ для всіх наступних операцій
companyIdStringНіОБОВ’ЯЗКОВИЙ для операцій з пальним

Перевірка колонки

Опис: перевіряє, чи готова колонка до заправки. Цей крок валідує статус колонки перед продовженням продажу.

Метод: POST

URL: /FuelSystem/checkdispenser/{RetailerId}/{phoneNumber}}

Тіло запиту:

{
  "retailerToken": "Xk9mN2pQ8vR5tY3wE7sA1bC4dF6gH8iJ",
  "codeAZS": "STATION02",
  "dispenser": "02",
  "goodsCode": "20002",
  "summ": 75.25,
  "quantity": 0
}

Опис основного об’єкта:

ПараметрТипОбов’язковийОпис
retailerTokenStringТакАвторизаційний retailerToken
codeAZSStringТакКод АЗС
dispenserStringТакІдентифікатор колонки
goodsCodeStringТакКод типу пального
summNumberТакСума транзакції
quantityNumberТакКількість пального (0 для розрахунку за сумою)

Успішна відповідь

HTTP-код: 200

Тіло відповіді:

"{customerOrderId": "7a8b9c0d-1e2f-3g4h-5i6j-7k8l9m0n1o2p"}

Поля відповіді:

ПараметрТипОпис
customerOrderIdStringID замовлення клієнта

Продаж пального

Метод: POST

URL: /FuelSystem/fuelsale/{RetailerId}/{phoneNumber}

Тіло запиту:

"retailerToken": "Xk9mN2pQ8vR5tY3wE7sA1bC4dF6gH8iJ",
"customerOrderId": "7a8b9c0d-1e2f-3g4h-5i6j-7k8l9m0n1o2p",
"paymentId": "PAY98765432",
"paymentSystem": "Mastercard",
"terminalId": "87654321",
"summ": 75.25,
"holdSumm": 75.25,
"quantity": 0,
"rrn": "123456789012345",
"cardmask": "5432********8765"

Опис основного об’єкта:

ПараметрТипОбов’язковийОпис
retailerTokenStringТакАвторизаційний retailerToken
customerOrderIdStringТакID замовлення клієнта з checkdispenser
paymentIdStringТакID транзакції платіжної системи
paymentSystemStringТакНазва платіжної системи
terminalIdStringТакID терміналу
summNumberТакАвторизаційний retailerToken
holdSummNumberТакСума холду
quantityNumberТакКількість пального
rrnNumberТакАвторизаційний retailerToken
cardmaskStringТакАвторизаційний retailerToken

Успішна відповідь

HTTP-код: 200

Тіло відповіді:

{"status": true}

Поля відповіді:

ПараметрТипОпис
statusBooleanСтатус операції

Рахунки

Опис: звірка платежів для перевірки транзакцій між системами партнера та АЗС.

Метод: POST

URL: /FuelSystem/invoices/{RetailerId}/{phoneNumber}

Тіло запиту:

{
  "date": "2024-01-15T10:30:00Z",
  "invoices": [
    {
      "date": "2024-01-15T14:22:15Z",
      "id": "2024001",
      "summ": 450.75
    },
    {
      "date": "2024-01-15T16:45:30Z",
      "id": "2024002",
      "summ": 125.5
    }
  ]
}

Опис основного об’єкта:

ПараметрТипОбов’язковийОпис
dateStringТакДата звірки (ISO 8601)
invoicesArrayТакМасив об’єктів рахунків

Опис об’єкта рахунку:

ПараметрТипОбов’язковийОпис
dateStringТакДата рахунку (ISO 8601)
idStringТакІдентифікатор рахунку
summNumberТакСума рахунку

Тіло відповіді:

{
  "status": true,
  "checkResult": [
    {
      "idPartner": "2024001",
      "summPartner": 450.75,
      "datePartner": "2024-01-15T14:22:15Z",
      "order": "",
      "date": "",
      "summ": 0,
      "idPaymentOrder": "",
      "customerOrderId": "",
      "difference": -450.75,
      "differenceCode": 1
    }
  ]
}

Поля відповіді:

ПараметрТипОпис
statusBooleanСтатус операції
checkResultArrayРезультати звірки

Поля CheckResult:

ПараметрТипОпис
idPartnerStringНомер платежу партнера з методу invoices
summPartnerNumberСума платежу партнера
datePartnerStringДата платежу партнера
orderStringНомер замовлення АЗС
dateStringДата замовлення на АЗС
summNumberСума замовлення на АЗС
idPaymentOrderStringНомер платежу з функції fuelsale
customerOrderIdStringID замовлення клієнта з відповіді checkdispenser
differenceNumberРізниця між платежем і фактичною заправкою
differenceCodeNumberКод розбіжності при звірці

Коди розбіжностей:

КодОпис
1Є в чеках партнера, відсутній на АЗС
2Є в замовленнях АЗС, відсутній у партнера
3Різниця між сумами заправки та платежу

Обробка помилок

Формат відповіді з помилкою

Усі відповіді з помилками мають такий стандартний формат. Поле error містить конкретний код помилки для налагодження та обробки:

{
  "status": false,
  "error": 1,
  "message": "The server is busy. Try again later."
}

Поля відповіді з помилкою:

ПараметрТипОпис
statusСтатус відповіді (false для помилок)
errorNumberКонкретний код помилки для налагодження
messageObjectБагатомовні повідомлення про помилки

Типи полів

ПолеТипОпис
StatusResponsestatus (boolean)
Retailer IdID ідентифікації партнера або сервісу
Customer Order IDУнікальний ідентифікатор замовлення клієнта

Опис типів полів

ПолеТипОпис
AmountДесяткове число з 2 знаками після коми
DateФормат: YYYY-MM-DDTHH:mm:ssZ (ISO 8601)
GUIDСтандартний формат UUID

Формати дат

  • Формат дати: YYYY-MM-DDTHH:mm:ssZ (ISO 8601)
  • Приклад: 2024-01-15T14:22:15Z (15 січня 2024, 14:22:15 UTC)
  • Часовий пояс: UTC