Сценарии (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)
- Пользователь инициирует покупку через Торгового Агента.
- Торговый Агент взаимодействует с Продавцом и формирует корзину.
- Торговый Агент переходит к оформлению. Продавец создаёт подписанную корзину и требует соответствующий мандат для продолжения.
- Торговый Агент получает доступные платёжные инструменты от Провайдера Удостоверений и выбирает один.
Фаза 2: Оплата (Payment)
- Торговый Агент формирует содержимое мандатов и запрашивает одобрение пользователя через Доверенную Поверхность.
- Доверенная Поверхность отображает содержимое мандата и получает аутентификацию и согласие пользователя.
- Доверенная Поверхность подписывает и создаёт Payment Mandate и Checkout Mandate.
- Доверенная Поверхность передаёт мандаты обратно Торговому Агенту.
- Торговый Агент передаёт Payment Mandate Провайдеру Удостоверений, который верифицирует его и создаёт платёжный токен.
- Торговый Агент отправляет токен и Checkout Mandate Продавцу.
- Продавец верифицирует целостность и содержимое Checkout Mandate относительно текущего состояния корзины, затем инициирует платёж.
- Платёжный Процессор Продавца верифицирует Payment Mandate в токене и привязку
к хешу
checkout_jwt. - Подписанная MPP Payment Receipt возвращается Торговому Агенту, Провайдеру Удостоверений и Сети; подписанная Продавцом Checkout Receipt возвращается Торговому Агенту.
Human Not Present (Без присутствия человека)¶
Фаза 1a: Выбор товаров (с присутствием человека)
Пользователь предоставляет агенту авторизацию на автономную коммерцию в форме открытых мандатов.
- Пользователь инициирует покупку через Торгового Агента.
- Торговый Агент формирует содержимое открытых мандатов для сессии покупок и запрашивает одобрение через Доверенную Поверхность.
- Доверенная Поверхность отображает содержимое, получает аутентификацию и согласие пользователя.
- Доверенная Поверхность подписывает и создаёт открытые мандаты.
- Публичный ключ агента (
agent_pk) включается как атрибут подтверждения для привязки использования мандата к конкретному агенту.
Пользователь покидает сессию, делегировав задачу агенту.
Фаза 1b: Выбор товаров (без присутствия человека)
Агент автономно формирует корзину, соответствующую заданию.
- Торговый Агент взаимодействует с Продавцом и формирует корзину.
- Торговый Агент переходит к оформлению. Продавец создаёт подписанную корзину.
Фаза 2: Оплата (без присутствия человека)
- Торговый Агент выбирает применимые открытые мандаты.
- Механизм выбора мандатов — вне рамок данной спецификации.
- Для предотвращения двойного расходования агент НЕ ДОЛЖЕН создавать перекрывающиеся мандаты до получения квитанции об ошибке.
- Торговый Агент формирует содержимое и подписывает закрытые мандаты ключом агента.
- Торговый Агент передаёт мандаты (открытые и закрытые) Провайдеру Удостоверений для верификации и получения платёжного токена.
- Торговый Агент отправляет токен и мандаты (открытые и закрытые) Продавцу.
- Продавец верифицирует целостность и содержимое, проверяет ограничения открытого мандата, инициирует платёж.
- Платёжный Процессор Продавца верифицирует мандаты в токене и привязки.
- Подписанные квитанции возвращаются участникам.
Преобразование в Human Present
Сценарий Human Not Present может быть преобразован в Human Present, если Продавец
или Провайдер Удостоверений возвращает ошибку unresolved_constraint — это
возвращает пользователя в сессию для прямого одобрения закрытых мандатов.