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

Сценарии (Flows)

В AP2 существует две категории сценариев: Human Present и Human Not Present.

  • Human Present: Пользователь напрямую одобряет закрытые Checkout и Payment Mandates.
  • Human Not Present: Пользователь одобряет открытые мандаты, а Агент, действуя автономно, предъявляет их вместе с подписанными агентом закрытыми мандатами.

Сценарий Human Not Present может быть преобразован в Human Present, если Продавец (или Провайдер Удостоверений) возвращает ошибку unresolved_constraint и возвращает пользователя в цикл для одобрения закрытых мандатов.

Все сценарии ниже — ненормативные примеры. Предполагается, что регистрация и необходимые Пользовательские Удостоверения настроены заранее.

Human Present (С присутствием человека)

Это прямой сценарий, где Пользователь присутствует и напрямую одобряет закрытые платёжные и чековые мандаты.

Диаграмма Human Present

Полная диаграмма доступна в оригинальной документации.

Фаза 1: Выбор товаров (Shopping)

  1. Пользователь инициирует покупку через Торгового Агента.
  2. Торговый Агент взаимодействует с Продавцом и формирует корзину.
  3. Торговый Агент переходит к оформлению. Продавец создаёт подписанную корзину и требует соответствующий мандат для продолжения.
  4. Торговый Агент получает доступные платёжные инструменты от Провайдера Удостоверений и выбирает один.

Фаза 2: Оплата (Payment)

  1. Торговый Агент формирует содержимое мандатов и запрашивает одобрение пользователя через Доверенную Поверхность.
  2. Доверенная Поверхность отображает содержимое мандата и получает аутентификацию и согласие пользователя.
  3. Доверенная Поверхность подписывает и создаёт Payment Mandate и Checkout Mandate.
  4. Доверенная Поверхность передаёт мандаты обратно Торговому Агенту.
  5. Торговый Агент передаёт Payment Mandate Провайдеру Удостоверений, который верифицирует его и создаёт платёжный токен.
  6. Торговый Агент отправляет токен и Checkout Mandate Продавцу.
  7. Продавец верифицирует целостность и содержимое Checkout Mandate относительно текущего состояния корзины, затем инициирует платёж.
  8. Платёжный Процессор Продавца верифицирует Payment Mandate в токене и привязку к хешу checkout_jwt.
  9. Подписанная MPP Payment Receipt возвращается Торговому Агенту, Провайдеру Удостоверений и Сети; подписанная Продавцом Checkout Receipt возвращается Торговому Агенту.

Human Not Present (Без присутствия человека)

Фаза 1a: Выбор товаров (с присутствием человека)

Пользователь предоставляет агенту авторизацию на автономную коммерцию в форме открытых мандатов.

  1. Пользователь инициирует покупку через Торгового Агента.
  2. Торговый Агент формирует содержимое открытых мандатов для сессии покупок и запрашивает одобрение через Доверенную Поверхность.
  3. Доверенная Поверхность отображает содержимое, получает аутентификацию и согласие пользователя.
  4. Доверенная Поверхность подписывает и создаёт открытые мандаты.
  5. Публичный ключ агента (agent_pk) включается как атрибут подтверждения для привязки использования мандата к конкретному агенту.

Пользователь покидает сессию, делегировав задачу агенту.

Фаза 1b: Выбор товаров (без присутствия человека)

Агент автономно формирует корзину, соответствующую заданию.

  1. Торговый Агент взаимодействует с Продавцом и формирует корзину.
  2. Торговый Агент переходит к оформлению. Продавец создаёт подписанную корзину.

Фаза 2: Оплата (без присутствия человека)

  1. Торговый Агент выбирает применимые открытые мандаты.
  2. Механизм выбора мандатов — вне рамок данной спецификации.
  3. Для предотвращения двойного расходования агент НЕ ДОЛЖЕН создавать перекрывающиеся мандаты до получения квитанции об ошибке.
  4. Торговый Агент формирует содержимое и подписывает закрытые мандаты ключом агента.
  5. Торговый Агент передаёт мандаты (открытые и закрытые) Провайдеру Удостоверений для верификации и получения платёжного токена.
  6. Торговый Агент отправляет токен и мандаты (открытые и закрытые) Продавцу.
  7. Продавец верифицирует целостность и содержимое, проверяет ограничения открытого мандата, инициирует платёж.
  8. Платёжный Процессор Продавца верифицирует мандаты в токене и привязки.
  9. Подписанные квитанции возвращаются участникам.

Преобразование в Human Present

Сценарий Human Not Present может быть преобразован в Human Present, если Продавец или Провайдер Удостоверений возвращает ошибку unresolved_constraint — это возвращает пользователя в сессию для прямого одобрения закрытых мандатов.