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 | Нет | Веб-сайт продавца |