Главная » IS-Kiosk » Интеграция сторонних систем в IS-Kiosk » 1С в IS-Kiosk » Описание формата обмена данными с 1С в IS-Kiosk » 2.4 - Взаимодействие с платёжной системой или системой лояльности
Назад

2.4 - Взаимодействие с платёжной системой или системой лояльности

Номер статьи: 0000534

2.4.1        Общее описание

web-сервис должен быть развёрнут со стороны back-офиса (со стороны 1С).

https-методы web-сервиса необходимы для получения информации о наличии карты, получения баланса по данной карте, правил использования средствами на карте, информации о владельце карты, а также для отправки информации об оплате заказа средствами с данной карты.

Ответ от сервера приходит в формате json


2.4.2        Команда получения информации по карте

Назначение: получение информации по карте, проверка баланса. Метод можно использовать дважды в сценарии работы с заказом: запрос с полной информацией по карте для отображения информации о владельце на экране для пользователя, далее перед процедурой оформления заказа повторить запрос для проверки баланса.

 

  1. Запрос от POS к web-сервису

Метод: [адрес сервера]/GetClientInfo

 

Обязательные поля запроса:

 

Опциональные поля запроса:

каждый элемент массива — объект с полями:

Пункты:

Используется как альтернатива order_items.

 

Сервер должен вернуть ошибку, например, validation_error с кодом 400 если указано 2 поля (order_items и order).

 

Правила использования опциональных полей:

 

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

POST

https://127.0.0.1/diningCard/GetClientInfo

 

Request body:

{

  "request_id": "b2c3d4e5-f678-9012-3456-7890abcdef12",

  "timestamp": "2025-07-22T12:00:00Z",

  "remote_id": "POS-001",

  "customer_identifier": {

    "type": "card_number",

    "value": "1234567890123456"

  },

  "get_customer_info": true,

  "order_number": "00000895",

  "order": "Чек 00000895/000000 22.07.25 12:00:00 1      1118.00 000000 Администратор      

        00089         1.0     318.00     318.00          0 000000    0.00% 0000000000000

~        00086        1.0      76.00      76.00          0 000000    0.00% 0000000000000

        00130         2.0     400.00     800.00          0 000000    0.00% 0000000000000",

  "total_amount": 1118.00,

  "currency": "RUB"

}

 

  1. Ответ от web-сервиса

Обязательные поля ответа:

 

Опциональные поля ответа:

Возвращается только если в запросе get_customer_info = true

Структура объекта:

 

Пример положительного ответа:

Json:

{

  "response_id": "b2c3d4e5-f678-9012-3456-7890abcdef12",

  "code": 200,

  "customer_info": {

    "client_id": "CUST-00012345",

    "surname": "Иванов",

    "name": "Иван",

    "second_name": "Иванович",

    "sex": 1,

    "birthday": "1985-05-15",

    "phone": "+79123456789",

    "email": "ivan.ivanov@example.com",

    "registration_date": "2025-01-10T09:30:00"

  },

  "balance_info": {

    "card_balance": 1500.00,

    "max_redeem_amount": 1000.00

  }

}

 

Пример ответа с ошибкой:

Json:

{

  "response_id": "a1b2c3d4-e5f6-7890-1234-56789abcdef0",

  "code": 404,

  "error": {

    "error_code": "customer_not_found",

    "message": "Клиент с указанным идентификатором не найден",

    "details": {

      "identifier_type": "phone",

      "identifier_value": "+79123456789"

    }

  }

}

 

 

2.4.3        Команда подтверждения транзакции (оплата средствами на карте или накопление)

Назначение: фиксация списания баллов/бонусов по карте в рамках чека.

 

  1. Запрос от POS к web-сервису

Метод: [адрес сервера]/ApplyTransaction

 

Обязательные поля запроса:

Повторные запросы с тем же transaction_id должны возвращать тот же результат без повторного списания.

 

Опциональные поля запроса:

каждый элемент массива — объект с полями:

Пункты:

Используется как альтернатива order_items.

 

Сервер должен вернуть ошибку, например, validation_error с кодом 400 если указано 2 поля (order_items и order).

 

Правила использования опциональных полей:

 

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

POST

https://127.0.0.1/diningCard/ApplyTransaction

Request body:

{

  "request_id": "a1b2c3d4-e5f6-7890-1234-56789abcdef0",

  "timestamp": "2026-03-25T14:30:00Z",

  "remote_id": "STORE-001",

  "customer_identifier": {

    "type": "phone",

    "value": "+79123456789"

  },

  "order_number": "ORD-20260325-001",

  "total_amount": 445.00,

  "applied_amount": 100.00,

  "transaction_id": "b2b3c3d9-e5f6-7890-1234-56789abcdef0",

  "order_items": [

    {

      "product_id": "P-123",

      "quantity": 2.5,

      "price": 150.00,

      "item_modifiers": [

        {

          "product_id": "MOD-001",

          "quantity": 1.0,

          "price": 20.00

        }

      ]

    }

  ],

}

 

  1. Ответ web-сервиса

Обязательные поля ответа:

 

Опциональные поля ответа:

 

Пример положительного ответа:

Json:

{

  "response_id": "b2c3d4e5-f678-9012-3456-7890abcdef12",

  "transaction_confirmation_id": "b4c3e7e5-f678-9012-3456-7890abcdef12",

  "code": 200

}

 

Пример ответа с ошибкой:

Json:

{

  "response_id": "a1b2c3d4-e5f6-7890-1234-56789abcdef0",

  "code": 400,

  "error": {

    "error_code": "insufficient_balance",

    "message": "Недостаточно баллов на карте для списания запрошенной суммы. Доступно: 120.00, запрошено: 150.00",

    "details": {

      "available_balance": 120.00,

      "requested_amount": 150.00

    }

  }}

 

2.4.4        Команда отмены транзакции (возврат средств на карту или отмена накоплений)

Назначение: отмена ранее выполненной транзакции списания средств с карты (возврат средств на карту клиента) или отмены накоплений. Используется при отмене или возврате чека.

 

  1. Запрос от POS к web-сервису

Метод: [адрес сервера]/ReverseTransaction

 

Обязательные поля запроса:

 

Опциональные поля запроса:

 

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

POST

https://127.0.0.1/diningCard/ReverseTransaction

Request body:

{

  "request_id": "a1b2c3d4-e5f6-7890-1234-56789abcdef4",

  "timestamp": "2026-03-25T15:45:00Z",

  "remote_id": "STORE-001",

  "original_transaction_id": "b4c3e7e5-f678-9012-3456-7890abcdef12",

  "reason": "order_cancelled",

  "reversal_amount": 100.00,

  "order_number": "ORD-20260325-001"

}

 

  1. Ответ от web-сервиса

Обязательные поля ответа:

 

Опциональные поля ответа:

 

Пример положительного ответа:

Json:

{

  "response_id": "b2c3d4e5-f678-9012-3456-7890abcdef12",

  "code": 200

}

 

Пример ответа с ошибкой:

{

  "response_id": "a1b2c3d4-e5f6-7890-1234-56789abcdef4",

  "code": 404,

  "error": {

    "error_code": "transaction_not_found",

    "message": "Транзакция не найдена в системе",

    "details": {

      "searched_transaction_id": "b4c3e7e5-f678-9012-3456-7890abcdef12"

    }

  }

}

 

 

Просмотры: 8