AploDelivery Partner API — портал разработчика · v2 (2026-10-16)

Подарочные сертификаты

Работает

Сертификаты включены на боевой кассе Боброво (точка 3) 15.10.2026. Проверены реальные частичная и полная оплата, списание и возврат после отмены. На остальных точках приём выключен. Фискализация в тестах не выполнялась; рабочий контур AploCard сохранён прежним.

Расчёт

В POST /v1/checkout/calculate передайте certificate: {"serial": "EXAMPLE-ONLY", "amountMinor": 50000}. Номер сертификата — чувствительные данные: передавайте только между backend и API, не включайте его в URL и журналы.

Сервер проверяет сертификат в организации точки, срок, статус, владельца именного сертификата и доступную сумму с учётом других резервов. Расчёт ничего не резервирует и не списывает. Номер сертификата не заменяет промокод.

Порядок: цены меню → скидки программы и промокод → ВкусКоины → доставка → сертификат. Один сертификат на заказ. В первой версии он может покрывать оставшуюся стоимость блюд и доставку, сочетаясь с бонусами. Сумма применения ограничена запрошенной суммой, доступным остатком и остатком к оплате; неиспользованные деньги остаются на сертификате. Все суммы — целые копейки RUB.

Ответ содержит результат сертификата и total — доплату обычным способом. При полном покрытии доплата равна 0. Изменение номера или запрошенной суммы требует нового расчёта.

Оформление

В POST /v1/orders передайте тот же certificate, calculationId и payment с доплатой из расчёта. Даже при доплате 0 поле payment обязательно: оно включает режим checkout. Для нулевой доплаты используйте method: "cash", amountMinor: 0, paid: false; онлайн-платёж на нулевую сумму создавать не нужно.

Перед отправкой заказа сервис атомарно резервирует сумму в AploCard. Если остаток успели потратить в другом заказе, оформление отклоняется. Сайт должен обновить расчёт и доплату; автоматически увеличивать платёж гостя нельзя.

Касса получает сертификат отдельной строкой предоплаты. Сервис доставки управляет резервом и списанием; плагин кассы повторно сертификат в AploCard не списывает.

Создание, отмена и сбои

После подтверждения created_verified резерв превращается в списание. При окончательном отказе создания резерв освобождается. Запрос отмены уже создаваемого заказа сам по себе резерв не освобождает: сервис ждёт подтверждённого результата кассы.

После подтверждённой отмены списание возвращается на исходный сертификат один раз. Онлайн-доплата возвращается отдельно платёжным провайдером — возврат сертификата не заменяет денежный возврат. Возврат не снимает административную блокировку и не продлевает срок сертификата.

Повтор POST /v1/orders с тем же внешним номером и тем же содержимым не создаёт второе списание. При таймауте система повторяет прежнюю операцию с прежним ключом и выясняет результат. Неопределённый исход создания заказа требует сверки; освобождать деньги только по таймауту нельзя. Освобождённый или возвращённый резерв повторно не активируется под тем же заказом. Новую попытку оплаты оформляйте с новым externalOrderId только после подтверждения, что прежний заказ окончательно не создан или отменён.

Условия включения

Перед включением нужны миграции AploCard и доставки, организация точки в маппинге лояльности, отдельный DELIVERY_PAYMENT_CODE_CERTIFICATE, явный список DELIVERY_CERTIFICATE_ALLOWED_POINTS и соответствующий тип оплаты кассы с поддержкой внешней предоплаты. Плагин должен поддерживать нулевую доплату и смешанную оплату. Для типа iikoCard51 явно задайте IikoCard51PaymentCodes: ["SERT"]; обычные внешние типы оплаты в этот список не включают. Без кода и явного разрешения точки сертификаты не принимаются. Пустой список точек отключает новые операции; восстановление уже начатых резервов продолжается. Для пилота разрешается только 3; этот номер должен обозначать Боброво во всех tenant/source маппингах сервиса.

Техническая проверка на кассе пройдена: №28993 — сертификат 85 ₽ + доплата 85 ₽; №28994 — сертификат 170 ₽, доплата 0 ₽. Оба заказа отменены, суммы полностью возвращены, фискальных чеков нет. Принятие рабочего процесса сотрудниками ресторана подтверждается отдельно.