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}]
}
| Поле | Описание |
|---|---|
mode | quote: только рассчитывает стоимость (скидки, доставка, налоги), не создаёт заказ и не резервирует товар; create: создаёт заказ, ожидающий оплаты |
request_id | Для расчёта и создания заказа по одному и тому же подтверждению заказа используется одно и то же значение. При получении повторного request_id в create необходимо вернуть тот же заказ; на этом основаны наши повторные попытки и защита от повторного оформления при повторных нажатиях покупателя |
user_id | Авторизованный покупатель; заказ можно создать только для этого покупателя |
channel | widget / wechat_mp / api |
language, country | Язык покупателя и страна по IP; могут быть null; используются для выбора валюты расчётов и расчёта налогов |
items[].product_id / sku | external_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 заказов.
Эта страница была полезной?
Обновлено:
