AI-интерфейс оформления заказа

Когда покупатель подтверждает заказ в чате, мы вызываем ваш API, создаём неоплаченный заказ и передаём покупателю ссылку на оплату.

После того как покупатель выбирает товары в диалоге, AI формирует черновик заказа для подтверждения покупателем; после подтверждения мы просим вашу систему создать заказ, ожидающий оплаты, и передаём покупателю возвращённую вами ссылку на оплату. Мы не сохраняем заказы и не обрабатываем платежи.

В панели управления в разделе «Настройки бота» укажите API оформления заказа (если не указать, AI не сможет оформлять заказы); дополнительно можно указать адрес страницы входа: когда неавторизованный покупатель захочет оформить заказ, в окне чата появится кнопка «Войти».

Предварительные условия:

  • Заказы могут оформлять только авторизованные покупатели; user_id берётся из выданного вами user_token (см. Идентификация авторизованных покупателей).
  • Товары должны быть синхронизированы через открытый API (см. База знаний и товары); товары с вариантами должны содержать variants[].sku, при оформлении заказа мы передаём вам sku без изменений.

Как покупатель подтверждает заказ:

  • Веб-чат: после подготовки AI показывает карточку заказа; заказ создаётся только после нажатия покупателем кнопки «Подтвердить заказ», а после создания на карточке появляется кнопка «Перейти к оплате».
  • WeChat Mini Program и другие каналы, где можно отправлять только текст: AI отправляет покупателю сводку заказа; заказ создаётся только после ответа покупателя «Подтверждаю», после создания отправляется ссылка для оплаты (см. ниже mp_path).

Запрос

Один и тот же адрес; по mode различаются расчёт стоимости и создание заказа. Методы подписи и проверки подписи такие же, как у API запроса заказа; тайм-аут — 10 секунд.

POST {你的下单接口}
Content-Type: application/json
X-AICS-Timestamp: 1761120000
X-AICS-Signature: v1=<hex>

{
  "mode": "quote",
  "request_id": "chk_3f2a9c...",
  "user_id": "u_123",
  "conversation_id": "b3c1...",
  "channel": "widget",
  "language": "en",
  "country": "US",
  "items": [{"product_id": "w1", "sku": "w1-black", "qty": 1}]
}
ПолеОписание
modequote: только рассчитывает стоимость (скидки, доставка, налоги), не создаёт заказ и не резервирует товар; create: создаёт заказ, ожидающий оплаты
request_idДля расчёта и создания заказа по одному и тому же подтверждению заказа используется одно и то же значение. При получении повторного request_id в create необходимо вернуть тот же заказ; на этом основаны наши повторные попытки и защита от повторного оформления при повторных нажатиях покупателя
user_idАвторизованный покупатель; заказ можно создать только для этого покупателя
channelwidget / wechat_mp / api
language, countryЯзык покупателя и страна по IP; могут быть null; используются для выбора валюты расчётов и расчёта налогов
items[].product_id / skuexternal_id товара и sku варианта; для товаров без вариантов sku равно null

Ответ

Успешный расчёт стоимости:

{
  "status": "quoted",
  "currency": "USD",
  "goods_amount": "399.00",
  "discount": "20.00",
  "discounts": [{"label": "新客券", "amount": "20.00"}],
  "shipping_fee": "0",
  "tax": "0",
  "total": "379.00"
}

Заказ успешно создан:

{
  "status": "created",
  "order_no": "T2026102300001",
  "pay_url": "https://shop.example.com/pay?orderno=T2026102300001",
  "mp_path": "pages/order/pay?orderno=T2026102300001",
  "expires_at": "2026-10-23T12:30:00Z",
  "currency": "USD",
  "goods_amount": "399.00",
  "discount": "20.00",
  "shipping_fee": "0",
  "tax": "0",
  "total": "379.00"
}

Оформить заказ невозможно:

{"status": "rejected", "code": "OUT_OF_STOCK", "message": "这款黑色暂时缺货"}
  • Все суммы передаются в виде строк. total и currency обязательны, остальные поля можно опустить; discounts отображает не более 5 записей.
  • pay_url — это ссылка на оплату в веб-интерфейсе, она должна использовать https; если на странице «Интеграции» настроен белый список доменов, ссылка также должна вести на домен из белого списка или на его поддомен, иначе она не будет показана.
  • mp_path — путь к странице оплаты в Mini Program; в каналах WeChat он отправляется покупателю как карточка Mini Program (обложкой служит изображение первого товара); если mp_path отсутствует, отправляется pay_url. Хотя бы одно из этих значений должно быть указано.
  • expires_at — срок оплаты; отображается на карточке.
  • code — возможные значения: OUT_OF_STOCK, SKU_UNAVAILABLE, REGION_UNAVAILABLE, NOT_LOGGED_IN, LIMIT, OTHER. message показывается покупателю напрямую, поэтому используйте понятные ему формулировки.
  • Если вы не хотите выполнять расчёт стоимости, можно вернуть {"status": "unsupported"} в ответ на quote; тогда карточка рассчитает сумму по ценам из каталога товаров и добавит пометку «Итоговая сумма определяется на странице оплаты».
  • Если create возвращает код, отличный от 200, или ответ имеет неверный формат, подтверждение заказа сохраняется, и покупатель может нажать ещё раз; убедитесь, что повторный request_id не создаёт второй заказ.

Ограничения: подтверждение заказа действительно в течение 30 минут; если в одном диалоге подготовить новый заказ, старый будет аннулирован; в одном заказе может быть не более 10 видов товаров и не более 20 единиц каждого вида; в одном диалоге за 24 часа можно создать не более 5 заказов.

Эта страница была полезной?

Обновлено: