Расширенные данные по способам оплаты в API чеков

Редактировать

На рынке появляются новые способы безналичной оплаты, помимо оплаты картой, такие как оплата по «СБП», оплата «Улыбкой» (по биометрии) и так далее. В некоторых случаях все эти способы оплаты реализованы в одном драйвере платёжных систем, например, драйвер Сбербанка. Так же комиссия при выполнении операции может отличаться в зависимости способа платежа.

Соответственно у пользователей Эвотор возникают задачи:

  1. Выполнить сверку операций по каждому способу платежа, которые отражены в отчёте банка и данных, полученных из Эвотор.
  2. Выполнить сверку по суммам комиссий по способам платежа, которые отражены в отчёте банка и данных, полученных из Эвотор.

Однако, сейчас все оплаты безналичным платежом (Плати QR, Оплата «улыбкой» на пинпаде, простой платеж банковской картой) уходят в облако с одним типом “Безналичными”, в некоторых случаях есть детализация по приложению, с помощью которого производили платеж, но возможности разделить платежи внутри одного приложения нет.

Мы хотим дать возможность сторонним разработчикам драйверов и платежных приложений передавать в товароучётные системы через наше облако подробную детализацию по способам этих платежей.

Настройки драйвера

Для передачи расширенных способов оплаты потребуется доработка драйверов и приложений для оплат, выложенных на market.evotor.ru. В SDK для разработчиков этих приложений будут добавлены новые объекты, которые нужно будет заполнить в зависимости от способа безналичной оплаты.

Для получения этих данных на стороне облачных приложений в API Документов будут добавлены новые поля, они описаны в разделе Описание новых полей в чеке.

Описание новых полей в чеке

Платеж (payment)

Атрибут Обязателен Тип Представление Описание
cashless_info Нет Объект object Расширенная информация о платеже. Присутствует в случае типа оплаты “ELECTRON” и если разработчик драйвера или приложения для оплаты поддержал передачу этого поля.
driver_info Нет Объект object Информация о драйвере, который использовался для оформления платежа. Присутствует в случае типа оплаты “ELECTRON” и если оплата производилась через встроенный или подключеный к Эвотору банковский терминал.

Информация о способе безналичного платежа (payment.cashlessInfo)

Атрибут Обязателен Тип Представление Описание
method Да Строка string Способ безналичной оплаты. Список возможных значений
description Да Строка string Расширенное описание способа безналичной оплаты. Например: SberPay, MtsPay, AliPay.
uuid Да Строка string Уникальный uuid способа безналичной оплаты.

Способы оплаты (payment.cashlessInfo.method)

Способ оплаты (payment.cashlessInfo.method) Описание
QR Оплата по QR коду, внутри своей банковской системы (Например: SberPay).
BIOMETRY Оплата по биометрии (Например: оплата Улыбкой).
CARD Обычная оплата картой.
INTERNET_ACQUIRING В маркете у нас есть множество приложений для оплаты через интернет эквайринг.
BANK_TRANSFER Банковский перевод на счёт.
UNKNOWN Тип оплаты не перечисленный в таблице. Желательно использовать перечисленные типы, если не один из них точно не подходит для ваших целей - обратитесь в поддержку разработчиков Эвотор с предложением расширить список.

Информация о драйвере, который использовался для оформления платежа (payment.driverInfo)

Атрибут Обязателен Тип Представление Описание
app_id Нет Строка string Идентификатор драйвера в EvotorMarket, через который производился платеж безналичными средствами.
name Нет Строка string Наименование драйвера

Пример json чека с разными способами электронного платежа

Ниже приведен пример чека с несколькими оплатами:

  1. Оплата картой через банковский терминал, подключенный к Эвотороу.
  2. Еще одна оплата способом из пункта 1 (Обратите внимание, что у этих оплат одинаковый cashlessInfo.uuid по причине того, что использовался одинаковый способ платежа и комиссия не отличается).
  3. Еще одна оплата картой, но уже с другим cashlessInfo.uuid и описанием этой оплаты. (Обратите внимание, что у этого способа cashlessInfo.uuid отличается от первых двух, так как это необходимо для того, чтобы выделить отличие по комиссии).
  4. Оплата QR кодом (SberPay) через банковский терминал, подключенный к Эвотороу.
  5. Оплата QR кодом (Система быстрых платежей) через банковский терминал, подключенный к Эвотороу.
  6. Оплата QR кодом через приложение, которое добавляет новый способ оплаты (кнопку) в смарт-терминал.
  7. Такое значение cashlessInfo.description дано для понимания того, чем эти способы между собой отличаются.
{
  "type": "SELL",
  "id": "c6f2b79b-4738-47wd-8577-ae0b7be9b1cf",
  "number": 13489,
  "close_date": "2024-08-06T11:28:42.000+0000",
  "time_zone_offset": 14400000,
  "session_id": "c734d750-c6f8-452e-b43e-864963wdwd8f",
  "session_number": 629,
  "close_user_id": "20240710-FFFF-4046-80D6-FFFFFFF17CC",
  "device_id": "20220914-FFFF-4099-80B9-29AFFFFFF",
  "store_id": "20220927-FFFF-4057-80FC-FFFFFFF",
  "user_id": "01-000000000000",
  "body": {
    "doc_discounts": [],
    "payments": [
      {
        "id": "272c0434-37d4-4e0d-a983-3da57a1125e1",
        "sum": 1000,
        "type": "ELECTRON",
        "parts": [
          {
            "print_group_id": "46dd89f0-3a54-470a-a166-ad01fa34b86a",
            "part_sum": 4000,
            "change": 0
          }
        ],
        "cashless_info": {
          "method": "CARD",
          "description": "Оплата картой с комиссией 1,5%",
          "uuid": "c8a7297a-8051-4fc6-aacd-f4ceaea9ab71"
        },
        "driver_info": {
          "appId": "7f228ef8-64b6-4080-b5c5-8a171c762a0a",
          "name": "Универсальный драйвер"
        }
      },
      {
        "id": "16edcd36-6ef2-4021-a50e-9204a81a10a8",
        "sum": 1000,
        "type": "ELECTRON",
        "parts": [
          {
            "print_group_id": "46dd89f0-3a54-470a-a166-ad01fa34b86a",
            "part_sum": 4000,
            "change": 0
          }
        ],
        "cashless_info": {
          "method": "CARD",
          "description": "Оплата картой с комиссией 1,5%",
          "uuid": "c8a7297a-8051-4fc6-aacd-f4ceaea9ab71"
        },
        "driver_info": {
          "appId": "7f228ef8-64b6-4080-b5c5-8a171c762a0a",
          "name": "Универсальный драйвер"
        }
      },
      {
        "id": "3079bd35-c21a-4d00-bee9-ab545f5747a0",
        "sum": 1000,
        "type": "ELECTRON",
        "parts": [
          {
            "print_group_id": "46dd89f0-3a54-470a-a166-ad01fa34b86a",
            "part_sum": 4000,
            "change": 0
          }
        ],
        "cashless_info": {
          "method": "CARD",
          "description": "Оплата картой с комиссией 1,3%",
          "uuid": "ee2e3f57-30ef-4ef3-af92-820d1d0ff503"
        },
        "driver_info": {
          "appId": "7f228ef8-64b6-4080-b5c5-8a171c762a0a",
          "name": "Универсальный драйвер"
        }
      },
      {
        "id": "c14ca3e7-8711-49b5-8bc2-db54b69dfbbc",
        "sum": 1000,
        "type": "ELECTRON",
        "parts": [
          {
            "print_group_id": "46dd89f0-3a54-470a-a166-ad01fa34b86a",
            "part_sum": 4000,
            "change": 0
          }
        ],
        "cashless_info": {
          "method": "QR",
          "description": "Оплата QR кодом СБП с комиссией 0,5%",
          "uuid": "31b20e33-75cc-4a77-aa21-9fa26cb57c01"
        },
        "driver_info": {
          "appId": "7f228ef8-64b6-4080-b5c5-8a171c762a0a",
          "name": "Универсальный драйвер"
        }
      },
      {
        "id": "89cfdeed-7271-46a1-a9d4-a7343282371a",
        "sum": 1000,
        "type": "ELECTRON",
        "parts": [
          {
            "print_group_id": "46dd89f0-3a54-470a-a166-ad01fa34b86a",
            "part_sum": 4000,
            "change": 0
          }
        ],
        "cashless_info": {
          "method": "QR",
          "description": "Оплата AliPay без комиссии",
          "uuid": "2ce10ead-c05c-4574-9c41-b0f626a5a203"
        },
        "app_info": {
          "appId": "63d6091e-39f1-46ad-82fd-f7440f5cd40d",
          "name": "Универсальная платежная система"
        }
      },
      {
        "id": "01289a68-c39f-4661-9324-0959dcc58d39",
        "sum": 1000,
        "type": "ELECTRON",
        "parts": [
          {
            "print_group_id": "46dd89f0-3a54-470a-a166-ad01fa34b86a",
            "part_sum": 4000,
            "change": 0
          }
        ],
        "cashless_info": {
          "method": "QR",
          "description": "Оплата QR кодом SberPay с комиссией 1%",
          "uuid": "08855e3d-46fb-496e-b4d9-37b0f02a74e8"
        },
        "driver_info": {
          "appId": "7f228ef8-64b6-4080-b5c5-8a171c762a0a",
          "name": "Универсальный драйвер"
        }
      }
    ],
    "print_groups": [
      {
        "id": "46dd89f0-3a54-470a-a166-ad01fa34b86a",
        "type": "CASH_RECEIPT"
      }
    ],
    "sum": 6000,
    "result_sum": 6000
  },
  "created_at": "2024-08-06T11:28:44.658+0000",
  "version": "V2"
}

Описание нового объекта в SDK для драйверов

Для передачи расширенных способов оплаты потребуется доработка драйвера банковского терминала, чтобы он начал передавать новый объект в успешном результате платежа. Сейчас объект платежа выглядит следующим образом: https://github.com/evotor/device-drivers/blob/master/app/src/main/java/ru/evotor/devices/drivers/paysystem/PayResult.java

В конструктор объекта PayResult предполагается добавить новый необязательный параметр cashlessInfo, который нужно будет заполнять для передачи расширенной информации о платеже.

Описание объекта cashlessInfo:

Атрибут Может быть nul Тип Описание
method Нет Eum Передается одно значение из списка
description Нет String Расширенное описание способа безналичной оплаты.
uuid Нет String Уникальный uuid способа безналичной оплаты. Формат обязательно должен быть uuid4, при создании объекта будет добавлена валидация на проверку формата uuid.