Доступная информация в составе резалт-чека

  • Номер заказа и расшифровка позиций товара для дальнейшего списания с остатков на вашей стороне (заводится самостоятельно).
  • Отсканированная маркировка для дальнейшего выбытия.

Пример тела резалт-чека

{
  "canceledDateTime": "0001-01-01T00:00:00.000Z",
  "deliveredDateTime": "2024-01-12T10:34:10.770Z",
  "discountTotalPrice": "69.41",
  "externalOrderId": "12-22-2201",
  "positions": [
    {
      "discountPrice": "37.41",
      "markings": [],
      "originalQuantity": 1000,
      "price": "412.11",
      "productId": "1111",
      "unitPrice": "393.23",
      "discountUnitPrice": "35.7",
      "quantity": 1048
    },
    {
      "discountPrice": "32",
      "markings": [],
      "originalQuantity": 1,
      "price": "32",
      "productId": "7574",
      "unitPrice": "32",
      "discountUnitPrice": "32",
      "quantity": 1
    }
  ],
  "shopId": "XX113",
  "status": "ready",
  "statusSetAt": "2024-01-12T10:34:10.770Z",
  "totalPrice": "444.11"
}

Особенности содержимого резалт-чека

  • Нулевое количество в резалт-чеке означает, что позиция была удалена из состава заказа сборщиком.
  • Если присутствует только discountPrice — это вновь добавленная позиция.

Цена товара

В каталоге есть цена товара (unitPrice) и цена со скидкой (discountUnitPrice). Из них для резалт-чека считаются price и discountPrice по следующим правилам:

  • для весовых товаров:

    • price = quantity / <размер кванта> × unitPrice;
    • discountPrice = quantity / <размер кванта> × discountUnitPrice;
  • для штучных товаров:

    • price = quantity × unitPrice;
    • discountPrice = quantity × discountUnitPrice;
    • canceledDateTime и deliveredDateTime — поля будут заполнены значением 0001-01-01T00:00:00.000Z, пока заказ не будет доставлен или отменен.

Схема

swagger: "2.0"
info:
  title: Result Check API
  description: Result Check API
  version: 1.0.0
schemes:
  - http
basePath: /
consumes:
  - application/json
produces:
  - application/json

paths:
  /result-check:
    post:
      operationId: PostResultCheck
      security:
        - Bearer: [ ]
      description: Отправка результирующего чека
      parameters:
        - $ref: '#/parameters/ResultCheckRequest'
      responses:
        200:
          description: Ok
        404:
          description: Ошибка валидации
          schema:
            $ref: '#/definitions/Error'
        422:
          description: Ошибка валидации
          schema:
            $ref: '#/definitions/Error'
        500:
          description: Серверная ошибка
          schema:
            $ref: '#/definitions/Error'

securityDefinitions:
  Bearer:
    description: 'Bearer <token here>'
    type: apiKey
    name: Authorization
    in: header

parameters:
  ResultCheckRequest:
    in: body
    name: ResultCheckRequest
    schema:
      type: object
      properties:
        externalOrderId:
          description: id заказа в системе партнера
          type: string
        status:
          description: статус заказа
          type: string
          enum:
            - done
            - ready
            - delivered
            - canceled
        positions:
          description: позиции заказа
          type: array
          items:
            $ref: "#/definitions/OrderPosition"
        totalPrice:
          description: Суммарная стоимость позиций без скидок
          type: string
        discountTotalPrice:
          description: Суммарная стоимость позиций со скидками
          type: string
        deliveredDateTime:
          description: дата и время перехода заказа в статус "Доставлен"
          type: string
          format: date-time
        statusSetAt:
          description: дата и время перехода заказа в статус
          type: string
          format: date-time
        canceledDateTime:
          description: дата и время перехода заказа в статус "Отменен"
          type: string
          format: date-time
        shopId:
          description: собственный id магазина в системе партнера
          type: string
          x-nullable: false


definitions:
  OrderPosition:
    type: object
    properties:
      markings:
        description: Массив отсканированных маркировок
        type: array
        items:
          type: string
      productId:
        description: id продукта
        type: string
      originalQuantity:
        description: Кол-во товара, исходно заказанное. Штуки или граммы
        type: integer
      quantity:
        description: Кол-во товара в заказе собранное. Штуки или граммы
        type: integer
      price:
        description: Полная стоимость собранного товара без учета скидки
        type: string
      discountPrice:
        description: Полная стоимость собранного товара с учетом скидки
        type: string
      unitPrice:
        description: Цена за единицу товара без учета скидки
        type: string
      dicountUnitPrice:
        description: Цена за единицу товара с учетом скидки
        type: string

  Error:
    description: Ошибка.
    type: object
    required:
      - message
    properties:
      message:
        description: Сообщение.
        type: string
        x-nullable: false
      code:
        description: Код сообщения.
        type: integer
        x-nullable: false

Настройка отправки

Для успешной настройки передайте через менеджера данные:

  • рабочий URL с окончанием /result-check;
  • токен, который мы будем использовать для авторизации при выполнении запроса на адрес из первого пункта;
  • набор статусов, для которых необходимо получать резалт-чек.

Статусы, при которых возможна отправка резалт-чека

Важно

Возможно выбрать отправку на нескольких или всех статусах.

Событие, по которому возможна отправка

Статус события

Статус заказа в резалт-чеке

Пикер собрал заказ (до передачи курьеру)

ready

ready

Заказ был отменен после того, как пикер собрал заказ

canceled_after_ready

canceled

Заказ доставлен или отменен после передачи курьеру

completed

canceled, delivered

Заказ собрали и передали курьеру

handed_over_for_delivery

done