AI 下单接口
顾客在对话里确认订单后,我们调你的接口建待支付订单,把付款链接交给顾客。
顾客在对话里选好商品后,AI 起草一张订单给顾客确认;顾客确认后我们请你的系统建一张待支付订单,把你返回的付款链接交给顾客。我们不保存订单,也不经手货款。
在后台「机器人设置」填写下单接口(不填则 AI 不能下单),可以再填登录页地址:没登录的顾客想下单时,聊天窗口里会出现「登录」按钮。
前提:
- 只有登录顾客能下单,
user_id来自你签发的user_token(见 识别登录顾客)。 - 商品要通过开放 API 同步过来(见 知识库和商品);有规格的商品要带
variants[].sku,我们下单时把sku原样传给你。
顾客怎么确认:
- 网页聊天窗口:AI 起草后显示订单卡片,顾客点「确认下单」才建单,建好后卡片上出现「去付款」按钮。
- 微信小程序等只能发文字的渠道:AI 把订单摘要发给顾客,顾客回复「确认」后才建单,建好后发付款入口(见下文
mp_path)。
请求
同一个地址,按 mode 区分报价和建单。签名、验签方法与 订单查询接口 相同,超时 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 | 同一张订单确认的报价和建单用同一个值。create 收到重复的 request_id 时必须返回同一张订单,我们的重试和顾客的重复点击都靠它防止重复下单 |
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是小程序里的付款页路径,微信渠道里会作为小程序卡片发给顾客(封面用第一件商品的图);没有mp_path时发pay_url。两者至少要有一个。expires_at是付款截止时间,会显示在卡片上。code可选值:OUT_OF_STOCK、SKU_UNAVAILABLE、REGION_UNAVAILABLE、NOT_LOGGED_IN、LIMIT、OTHER。message会直接展示给顾客,请用顾客能看懂的话。- 报价不想做,可以对
quote返回{"status": "unsupported"},卡片会按商品库里的价格估算,并注明「最终金额以付款页为准」。 create返回非 200 或格式不对时,订单确认保留,顾客可以再点一次;请确保重复的request_id不会建出第二张单。
限制: 订单确认 30 分钟内有效,同一会话里起草新的会让旧的作废;一单最多 10 种商品、每种最多 20 件;同一会话 24 小时内最多建 5 张单。
这篇文档有帮助吗?
最后更新:
