Перейти к содержанию

Checkout Mandate (Мандат на оформление заказа)

Checkout Mandate — это мандат, используемый для авторизации завершения оформления заказа (checkout).

Назначение

Содержимое Checkout Mandate создаётся Торговым Агентом (Shopping Agent), отображается Пользователю на Доверенной Поверхности (Trusted Surface) и верифицируется Продавцом (Merchant). Продавец создаёт подписанный объект Checkout, который включается в содержимое закрытого Checkout Mandate.

Тип

  • Закрытый Checkout Mandate: vct = "mandate.checkout.1"
  • Открытый Checkout Mandate: vct = "mandate.checkout.open.1"

Версионирование: см. раздел «Версионирование мандатов» в спецификации AP2.

Схема мандата (закрытый)

Атрибут Тип Обязательный Селективное раскрытие Описание
vct string Да Нет Тип верифицируемого удостоверения. Должен быть mandate.checkout
checkout_jwt string Да Да base64url-сериализованный, подписанный продавцом JWT корзины
checkout_hash string Да Нет base64url-хеш поля checkout_jwt, уникально идентифицирующий корзину
iat integer Нет Нет Unix-время создания
exp integer Нет Нет Unix-время истечения

Алгоритм хеширования

checkout_hash вычисляется тем же алгоритмом, что и SD-JWT (поле _sd_alg), или sha-256, если поле отсутствует.

checkout_jwt — это подписанный продавцом JWT с деталями корзины. При использовании с Universal Commerce Protocol это должен быть объект Checkout.

Ограничения (Constraints)

Для открытых Checkout Mandate определены следующие ограничения:

Допустимые продавцы (checkout.allowed_merchants)

Ограничивает список продавцов, с которыми может использоваться данный мандат.

Схема:

Атрибут Тип Обязательный Селективное раскрытие Описание
type string Да Нет "checkout.allowed_merchants"
allowed Array[Merchant] Да Да Массив допустимых продавцов

Оценка: Продавец ДОЛЖЕН присутствовать в раскрытых элементах allowed.

Позиции корзины (checkout.line_items)

Определяет наборы позиций, которые должны присутствовать в checkout_jwt.

Схема:

Атрибут Тип Обязательный Описание
type string Да "checkout.line_items"
items Array[LineItemRequirements] Да Массив требований к позициям

Каждое требование к позиции:

Атрибут Тип Обязательный Селективное раскрытие Описание
id string Да Нет Идентификатор требования
acceptable_items Array[Item] Да Да Набор допустимых позиций
quantity integer Да Нет Требуемое количество

Оценка: Ограничение выполнено, когда каждой записи в items соответствует требуемое количество совпадающих позиций в Checkout. Реализуется как задача о максимальном потоке.

Checkout Receipt (Квитанция об оформлении заказа)

Атрибут Тип Обязательный Описание
status ReceiptStatus Да Статус: Success или Error
iss string Да Эмитент квитанции
iat integer Да Unix-время создания
reference string Да Хеш закрытого мандата, к которому привязана квитанция
error string Нет Код ошибки (только при status: Error)
error_description string Нет Человекочитаемое описание (только при status: Error)
order_id string Нет Идентификатор заказа (только при status: Success)

Общие типы данных

Item (Позиция)

Атрибут Тип Обязательный Описание
id string Да Уникальный идентификатор (как правило, SKU)
title string Да Название позиции

Merchant (Продавец)

Атрибут Тип Обязательный Описание
id string Да Уникальный идентификатор продавца
name string Да Человекочитаемое название
website string Нет Веб-сайт продавца