Shopify WebMCP: безопасный чекаут для ИИ-агентов

Практическое руководство по Shopify WebMCP: чтение и обновление чекаута, согласие покупателя, Shop Pay, обработка ошибок и безопасное завершение заказа.

Tuesday, September 29, 2026Omid Saffari
Tools
Shopify WebMCP: безопасный чекаут для ИИ-агентов

Shopify WebMCP позволяет браузерному ИИ-агенту провести покупателя от выбора товара в Shopify до поддерживаемого чекаута — без попыток угадать, на какую кнопку нажать. Агент умеет читать актуальное состояние заказа, заменять поддерживаемые поля, возвращать управление пользователю для Shop Pay или проверки платежа и оформлять заказ только после того, как покупатель подтвердит его состав и итоговую сумму. Shopify выпустила это расширение для чекаута 28 сентября 2026 года. Главное новшество здесь не в автономных покупках, а в структурированном сценарии последнего этапа заказа, где каждое критичное действие требует согласия.

Что представляет собой Shopify Checkout WebMCP

Checkout WebMCP — это набор инструментов, зарегистрированных в активной вкладке покупателя с чекаутом. Представьте кассу с сотрудником: агент может принести корзину, прочитать форму и заполнить поддерживаемые поля, но проверку личности или платежа проходит сам покупатель — и последнее слово тоже остаётся за ним.

Эта возможность дополняет прежние инструменты Shopify для витрины. Совместимый браузерный агент может искать товары в каталоге, изучать карточки, обновлять корзину и вызывать proceed_to_checkout. В поддерживаемом чекауте список инструментов меняется: становятся доступны четыре инструмента оформления заказа:

  • get_checkout читает текущее состояние чекаута или данные о заказе на странице Thank you.
  • update_checkout заменяет поддерживаемые контактные данные, параметры доставки, скидки, декларируемые поля и состояние оплаты, но не размещает заказ.
  • complete_checkout после подтверждения покупателя пытается разместить заказ либо открывает этап проверки.
  • navigate_to_storefront возвращает ту же вкладку на витрину, если она есть у магазина.

В основе чекаута лежат объект, статусы и сообщения UCP. UCP задаёт единый контракт данных для всего процесса, а WebMCP открывает этот контракт агенту через браузер. Агенту, который работает на сервере, вместо этого нужен Shopify Checkout MCP.

Архитектурная модель пяти этапов чекаута Shopify WebMCP: от обнаружения инструментов до завершения заказа
Безопасный процесс учитывает состояние на каждом шаге: обнаружить, прочитать, обновить, подтвердить и только затем завершить.

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

Shopify WebMCP: начните с поддерживаемого чекаута

Первый тест — обнаружение инструментов. Если витрина Shopify открыла WebMCP, это ещё не означает, что Checkout WebMCP будет доступен и на странице оформления заказа.

Shopify не регистрирует инструменты чекаута в следующих сценариях:

  • Стандартный трёхстраничный чекаут, если покупатель не оформляет заказ через Shop Pay
  • B2B-чекаут
  • Встроенный чекаут и сценарии на базе mobile checkout SDK
  • Чекаут с товарами из другого магазина
  • Черновики заказов, редактирование заказов и сбор платежей
  • Взаимодействия, реализованные через checkout UI extensions

В таких сценариях управление нужно передать покупателю прямо на странице. Браузерного инструмента cancel_checkout тоже нет. Отсутствие инструмента не даёт агенту права обходить ограничение и манипулировать элементами страницы.

По данным Shopify, сейчас WebMCP для витрины зависит от поддержки агентов в браузерах на базе Chromium. Для тестирования используйте поддерживаемый браузер и чекаут, который вы контролируете. Если инструменты чекаута не появились, считайте это ожидаемым результатом проверки совместимости, а не поводом переходить к ненадёжным кликам по интерфейсу.

1. Аутентифицируйте браузерного агента и найдите инструменты

Подписывайте браузерные запросы через Web Bot Auth, или WBA, вместо того чтобы передавать учётные данные в аргументах инструментов. WBA служит сетевым паспортом агента. Shopify проверяет только зарегистрированные ключи, поэтому для продакшен-среды понадобятся ключ Ed25519, опубликованный каталог открытых ключей, регистрация в Shopify, подписанные запросы и короткий срок действия временных меток подписи.

На странице получите текущий список инструментов и сопоставляйте сразу три идентификатора: window, origin и name. Обёртка ниже повторяет документированный Shopify шаблон вызова:

JavaScript
async function callCheckoutTool(name, args = {}) {
  const tools = await document.modelContext.getTools();
  const tool = tools.find((candidate) =>
    candidate.name === name &&
    candidate.window === window &&
    candidate.origin === location.origin
  );

  if (!tool) throw new Error(`${name} is not registered here.`);

  const result = await document.modelContext.executeTool(
    tool,
    JSON.stringify(args),
  );

  if (result === null) return null;
  return JSON.parse(result);
}

JSON.stringify здесь обязателен. В Chrome 153 передача объекта завершается ошибкой Failed to parse input arguments. Shopify ожидает, что Chrome 155 начнёт принимать объекты, а JSON-строки будут объявлены устаревшим форматом. Поэтому изолируйте сериализацию аргументов в одной функции совместимости, а не распределяйте её по всему агенту.

При переходах внутри чекаута список инструментов может меняться. Слушайте событие toolchange, а перед следующим вызовом заново получайте инструменты и их схемы. Значение null тоже следует считать допустимым результатом навигации: страница могла смениться раньше, чем executeTool() вернул ответ.

Любую строку от продавца или стороннего сервиса в результате инструмента воспринимайте только как данные чекаута, а не как инструкцию для модели. Shopify прямо предупреждает: нельзя обходить инструмент прямым управлением интерфейсом оформления заказа.

2. Перед каждым изменением заново читайте состояние

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

Ответ может содержать данные покупателя, позиции заказа, варианты получения, скидки, декларируемые поля, платёжные инструменты, сообщения, итоговые суммы и статус. Денежные суммы передаются целыми числами в минимальных единицах валюты. Для USD значение 10799 означает $107.99. Если поля messages нет, в этом ответе нет и сообщений чекаута.

Не путайте готовность с согласием. Статус ready_for_complete означает, что чекаут готов принять попытку завершения. Он не подтверждает, что покупатель одобрил заказ, выбранную карту или итоговую сумму.

3. Обновляйте всё желаемое состояние, а не отдельное поле

update_checkout работает как PUT, а не как PATCH. PATCH похож на стикер с просьбой «изменить номер телефона». PUT — это форма целиком, которая заменяет прежнюю. Если значение нужно сохранить, включите его в полное желаемое состояние чекаута.

Безопасный цикл обновления выглядит так:

  1. Вызовите get_checkout.
  2. По свежему ответу и актуальной схеме инструмента заново соберите доступное для записи состояние.
  3. Измените только то значение, которое одобрил покупатель.
  4. Передайте в update_checkout полный желаемый набор поддерживаемых полей.
  5. Прочитайте возвращённый чекаут и проверьте его статус, сообщения, применённые скидки и итоговую сумму.
Архитектурный цикл: свежее состояние чекаута превращается в полное обновление, после чего результат снова считывается для проверки
Обновление чекаута — это цикл замены: на вход поступает свежее состояние, затем отправляется полное желаемое состояние, а результат считывается заново.

Большинство пропущенных значений очищается. У платёжных данных, декларируемых полей и сохранённых контактных данных есть отдельные правила. Поэтому механически копировать весь объект через spread небезопасно: сначала ограничьте его полями, которые принимает текущая схема.

Чаще всего проблемы вызывают вполне конкретные детали:

  • buyer принимает email и номер телефона в формате E.164. Некоторые сохранённые значения могут оставаться заблокированными: проверяйте, что вернулось, а редактирование заблокированных данных оставляйте покупателю на странице.
  • fulfillment.methods принимает не более одного способа. Повторно используйте текущие ID пункта назначения, группы и варианта. Не меняйте тип получения или исходную точку поиска самовывоза в том же вызове, где выбираете пункт назначения либо вариант.
  • discounts.codes должен содержать все введённые покупателем коды, которые необходимо сохранить. Пустой массив удаляет их, но автоматические скидки остаются. Сам факт возврата кода ещё не доказывает, что скидка применилась: проверяйте discounts.applied и сообщения.
  • declared_fields может передавать специфичные для чекаута значения — например, налоговый номер или средства на счёте магазина. Неизвестные ключи, неверные типы и недопустимые значения отклоняются.
  • payment.instruments принимает не более одной поддерживаемой записи. Checkout WebMCP не позволяет агенту запрашивать номер новой карты.

Shop Pay требует особого внимания. Авторизованный покупатель может выбрать сохранённую карту, которую вернул get_checkout. В гостевом сценарии можно использовать существующий ID подтверждения Shop Pay, если чекаут его принимает. Если агент передал такой ID, а в следующем обновлении не включил платёжные данные, подтверждение будет сброшено. Поэтому до размещения заказа повторно отправляйте запись с ID подтверждения при каждом обновлении.

Обновление может завершиться успешно, но чекаут останется в статусе incomplete. Если обновление длится более 30 секунд, оно может вернуть update_failed, даже когда часть изменений применилась. В обоих случаях сначала заново прочитайте состояние и только потом решайте, что делать дальше.

Проверка фикстуры: Локальная контрактная фикстура этого руководства прошла восемь сценариев: аргументы в виде JSON-строки, потеря пропущенного поля, сохранение полного состояния, возврат null при навигации, toolchange, checkout_busy, completion_failed и терминальное состояние completed. Это тест обработки ответов, а не доказательство проведения реального платежа в Shopify.

4. Завершение заказа должно зависеть от покупателя

Правильная последовательность завершения короткая и строгая:

  1. Получите свежее состояние чекаута.
  2. Покажите покупателю текущие товары, способ оплаты и итоговую сумму.
  3. Запросите явное разрешение разместить именно этот заказ на эту сумму.
  4. Если что-либо изменилось, покажите новое состояние и снова запросите разрешение.
  5. Вызывайте complete_checkout только после подтверждения.
  6. Считайте покупку доказанной только при status: completed.

WBA подтверждает, какой агент отправил запрос. Подтверждение Shop Pay разрешает использовать платёжный механизм. ready_for_complete описывает состояние чекаута. Ни один из этих сигналов не означает, что покупатель согласился на покупку.

У завершения заказа могут быть разные ветки. Если настроен этап проверки, управление возвращается покупателю; повторно вызывайте complete_checkout только после того, как он проверит заказ и разрешит отправку. Проверка платежа работает иначе: покупатель проходит её в той же вкладке, а агент не должен отправлять заказ ещё раз. Опросите get_checkout, пока чекаут не перейдёт в completed или не потребует действий агента.

Архитектурный автомат состояний: перед отправкой требуется подтверждение покупателя, а ветка передачи управления возвращается к опросу состояния
Действие покупателя — это обязательный шлюз, а не ошибка. Передайте управление, затем опрашивайте состояние вместо повторной отправки вслепую.

Код ошибки показывает, какой сценарий восстановления выбрать:

Следующий шагКоды ошибокЧто делать
Исправить запросinvalid_request, rejectedПеред повторным вызовом исправьте схему, ключ, тип или неподдерживаемое значение.
Обновить состояниеcompletion_failed, internal_error, update_failedЗаново найдите инструменты, вызовите get_checkout и сопоставьте актуальное состояние с запланированным запросом.
Подождать или передать управлениеbuyer_action_required, checkout_busy, completion_in_progressДождитесь действий покупателя или завершения текущей операции, затем прочитайте состояние.
Обработать навигациюnavigation_failedОставьте покупателя в чекауте и сообщите, что переход на витрину не начался.

Самая опасная повторная попытка — второй вызов завершения после неоднозначного первого ответа. В Checkout WebMCP нет ключа идемпотентности. Сначала прочитайте состояние. Если оно равно completed, остановитесь.

Семь сценариев по убыванию практической ценности

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

МестоКому полезноТочный сценарийВ чём выгода
1Постоянному покупателю Shop Pay с персональным ИИ-агентом для покупокНайти товар в одном магазине, собрать корзину, перейти в поддерживаемый чекаут, выбрать из ответа сохранённые адрес и карту, показать финальный заказ и отправить его после подтверждения.Меньше повторного заполнения форм, а решение о покупке остаётся на виду.
2Покупателю, который полагается на ассистивного помощникаПомощник читает структурированное состояние чекаута, применяет предоставленные покупателем контактные данные и параметры доставки, а любую проверку, доступную только на странице, передаёт пользователю.Структурированные инструменты снижают зависимость от визуального поиска постоянно меняющихся элементов управления.
3Покупателю, который оформляет самовывозАгент переключается на самовывоз, выполняет поиск по стране и почтовому индексу, читает список найденных точек, а затем выбирает одну из них в следующем обновлении.Двухэтапный процесс превращает неудобный поиск точки в понятный выбор.
4Покупателю, который перед важной покупкой сравнивает варианты доставкиАгент переносит выбранный товар в чекаут, читает группы доставки и итоговые суммы и даёт сравнить варианты до любой попытки завершения.Покупатель получает единообразную сводку именно тогда, когда важнее всего цена и срок.
5Покупателю, который следит за скидкамиАгент сохраняет текущее состояние чекаута, применяет полный список кодов покупателя или выбор средств на счёте магазина, а затем проверяет discounts.applied и новую сумму.Отображаемый код не принимается по ошибке за реально применённую скидку.
6Покупателю в чекауте, где запрашивается налоговый идентификаторАгент читает описания декларируемых полей, отправляет предоставленное покупателем значение требуемого типа и показывает сообщения валидации.Можно объяснить недостающее требование, не выдумывая поле или формат.
7Покупателю, который устраняет текущую ошибку чекаутаАгент классифицирует код, обновляет инструменты и состояние, а затем исправляет запрос, ждёт либо возвращает управление пользователю.Это помогает избежать повторной отправки и сохраняет понятный путь восстановления.

Самый сильный сценарий — первый. У постоянных покупателей уже есть сохранённые данные, и WebMCP сокращает рутинный ввод, не выдавая удобство за согласие.

Что на самом деле показывает экономика

Для этих инструментов Shopify не требует от продавца новой настройки. Но сам ИИ-агент для покупок от этого бесплатным не становится: ему по-прежнему нужны модель, дистрибуция в браузере, инфраструктура WBA, тестирование, механизмы защиты приватности и поддержка.

Цены на устанавливаемые продавцом ИИ-ассистенты для покупок сейчас сильно различаются. В официальном Shopify App Store есть тариф за $9.99 в месяц у Easy AI Shopping Assistant, тарифы от $49 до $249 у Carti и тарифы от $290 до $1,330 в месяц у iAdvize. Эти продукты объединяют чат на витрине, рекомендации, аналитику или поддержку, поэтому напрямую заменить браузерного WebMCP-агента покупателя они не могут.

Изменение бюджета куда уже и полезнее: команда браузерного агента может тратить меньше сил на поддержку селекторов для чекаута каждого магазина и больше — на целостность состояния, согласие и обработку исключений. Более широкий взгляд на платформу и компромиссы её эксплуатации даёт обзор Shopify.

Два продукта, которые стоит создать

1. Стенд для QA и проверки согласия в Checkout WebMCP

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

Ближайший измеренный поисковый запрос, shopify checkout customization, получает 170 запросов в месяц в США, вырос на 89% год к году и имеет CPC $10.92. Он шире, чем тестирование WebMCP, но показывает активный спрос на настройку и поведение чекаута.

Минимальная версия, которую уже можно продавать, — Chromium-раннер: он открывает тестовый чекаут, записывает инструменты по origin и window, проверяет аргументы в виде JSON-строк, обнаруживает toolchange, тестирует обновление из свежего состояния, имитирует возврат null при навигации и документированные коды ошибок, а затем формирует обезличенный отчёт о согласии. Реальное завершение платежа оставьте за ручным режимом тестирования.

Главное ограничение — охват. Доступность инструментов зависит от типа чекаута и поддержки браузера, формат аргументов Chrome меняется, а фикстура не может подтвердить реальную передачу управления при оплате. Такой продукт выигрывает, когда честно показывает эти границы, а не обещает универсальную автоматизацию.

2. ИИ-ассистент для покупок в Shopify на стороне покупателя

Браузерное расширение могло бы провести пользователя от поиска товара до поддерживаемого чекаута в разных магазинах Shopify, предоставляя единый экран подтверждения и строгие правила работы с сохранёнными платёжными данными.

Запрос shopify ai shopping assistant получает 30 поисков в месяц в США, имеет коммерческий интент и CPC $19.43. Конкуренты на стороне продавца предлагают тарифы от $9.99 до $1,330 в месяц. Это показывает, что за ПО, которое помогает с покупками, уже платят, хотя данный продукт работал бы на стороне покупателя.

Для MVP нужны поиск по витрине и инструменты корзины, обнаружение инструментов чекаута, WBA, цикл «прочитать — обновить — прочитать», управляемая покупателем сводка заказа и передача управления для проверки платежа. Начните с заказов в одном магазине и сценариев с сохранёнными данными Shop Pay.

Главное препятствие — дистрибуция. Продавцы не включают Checkout WebMCP, но покупателю всё равно нужен совместимый браузерный агент. B2B, встроенный чекаут, mobile SDK, заказы из разных магазинов и обычный трёхстраничный чекаут без Shop Pay остаются за пределами этого сценария.

Ограничения и определяют границы продукта

Checkout WebMCP — более безопасный интерфейс для поддерживаемого браузерного чекаута, а не универсальный API покупок.

Во время оформления заказа он не может добавлять или удалять позиции, получать номер новой карты, отменять чекаут, управлять интерфейсом расширений приложений или заставлять исключённый чекаут зарегистрировать инструменты. Он не устраняет вход в Shop Pay, 3D Secure, этапы проверки и другие действия покупателя. И он не превращает текст продавца в заслуживающие доверия инструкции для модели.

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

Что сделать в понедельник

В понедельник добавьте в агент одну обёртку для чекаута вместо того, чтобы распределять вызовы по всей кодовой базе. Сосредоточьте в ней сериализацию, сопоставление инструментов, обработку toolchange, возврат null при навигации, классификацию ошибок и чтение свежего состояния. Прогоните восемь локальных сценариев фикстуры, затем получите список document.modelContext.getTools() в поддерживаемом тестовом чекауте, который вы контролируете. Выполните одно обновление, собранное из свежего состояния. Завершайте только поддерживаемый тестовый заказ и только после явного подтверждения. Если безопасного тестового заказа у вас нет, остановитесь на ready_for_complete и пометьте завершение как подтверждённое по источникам, но не проверенное лично.

Как пользоваться страницей оформления заказа в Shopify?

Браузерному агенту следует вызвать proceed_to_checkout на витрине, после навигации заново обнаружить инструменты, вызвать get_checkout, передать полное желаемое поддерживаемое состояние через update_checkout, показать текущий заказ и итоговую сумму, получить согласие покупателя и только затем вызвать complete_checkout. Если инструментов чекаута нет, передайте страницу покупателю.

Поддерживает ли Shopify MCP?

Да. Shopify предлагает зарегистрированные в браузере инструменты WebMCP для витрины и поддерживаемых сценариев чекаута, а также серверные инструменты MCP для агентов, которые могут работать на сервере. Выбирайте способ взаимодействия в соответствии с тем, где работает агент.

Что такое Shopify Checkout MCP?

У Shopify есть два связанных сценария чекаута. Checkout WebMCP работает во вкладке браузера покупателя, а Checkout MCP — на сервере. Оба используют одни и те же объект, статусы и сообщения чекаута UCP.

Что такое Shopify UCP?

UCP — единый коммерческий контракт для состояния чекаута, статусов, сообщений, получения заказа, скидок и платёжных данных. Checkout WebMCP открывает этот контракт через браузерные инструменты, а не через серверный JSON-RPC.

Работает ли Shopify WebMCP со встроенным чекаутом?

Нет. Shopify исключает встроенный чекаут и сценарии mobile checkout SDK из Checkout WebMCP. Покупатель должен завершить такие сценарии на странице.

Если вашей компании нужен торговый ИИ-агент с безопасным контуром согласия, посмотрите услугу разработки ИИ-агентов.

Последнее обновление
29 сент. 2026 г.
Категория
Build

Сделать этот сайт предпочтительным в Google

Добавить omidsaffari.com как предпочтительный источник в Google Поиске

Отметьте omidsaffari.com как предпочтительный источник — и Google будет поднимать его для вас в Top Stories, AI Overviews и AI Mode.

Похожие статьи
Cloudflare CLI: установка cf, команды и миграция Workers

Cloudflare CLI: установка cf, команды и миграция Workers

Разбираем Cloudflare CLI: установку и авторизацию cf, поиск команд, JSON-ответы, создание Workers, миграцию с Wrangler и безопасные сценарии для команд.29 сент. 2026 г.Build
Обзор Krisp: шумоподавление, цены и конфиденциальность

Обзор Krisp: шумоподавление, цены и конфиденциальность

Разбираем Krisp: как работает шумоподавление, чем отличаются Core и Advanced, сколько стоят тарифы и какие данные Meeting Assistant хранит в облаке.29 сент. 2026 г.Build
Тарифы SaneBox: какой план выбрать и сколько платить

Тарифы SaneBox: какой план выбрать и сколько платить

Разбираем тарифы SaneBox Snack, Lunch и Dinner: цены за месяц, год и два года, скрытые расходы, ограничения и проверка сервиса перед оплатой.29 сент. 2026 г.Build
Цены Marblism в 2026 году: как выбрать тариф по задачам

Цены Marblism в 2026 году: как выбрать тариф по задачам

Разбираем цены Marblism, тарифные часы и списания за задачи: какой план выбрать, где скрыты расходы и что произойдёт, когда лимит закончится.28 сент. 2026 г.Build
Тарифы Fyxer: цены, окупаемость и выбор плана

Тарифы Fyxer: цены, окупаемость и выбор плана

Разбираем тарифы Fyxer: цены Starter и Professional, годовую оплату, порог окупаемости и условия, при которых подписка действительно экономит время.28 сент. 2026 г.Build
Cloudflare Workers бесплатно: лимиты Worker Previews

Cloudflare Workers бесплатно: лимиты Worker Previews

Cloudflare Workers бесплатно: разбираем лимиты Worker Previews, запросов, CPU, сборок, хранилищ, Workers AI и Containers для тарифов Free и Paid.28 сент. 2026 г.Build
ИИ для бухгалтеров: 7 сервисов для документов, сверок и отчётности

ИИ для бухгалтеров: 7 сервисов для документов, сверок и отчётности

Как выбрать ИИ для бухгалтеров: сравниваем Dext, Xenett, Truewind и другие сервисы по задачам, ценам, ограничениям и полной стоимости результата.28 сент. 2026 г.Build
Janus для Claude Code: переключение аккаунтов без путаницы

Janus для Claude Code: переключение аккаунтов без путаницы

Как настроить Janus для Claude Code на macOS, сохранить два аккаунта, безопасно переключаться между ними и проверять актуальные лимиты перед работой.28 сент. 2026 г.Build
Рассылка

Одно письмо, каждое воскресенье.Работающие системы, а не горячие мнения.

Еженедельно. Без спама. Отписка в любой момент.