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}]
}
字段说明
modequote:只算价(优惠、运费、税),不建单、不占库存;create:建一张待支付订单
request_id同一张订单确认的报价和建单用同一个值。create 收到重复的 request_id 时必须返回同一张订单,我们的重试和顾客的重复点击都靠它防止重复下单
user_id登录顾客,只能给这个顾客建单
channelwidget / 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 张单。

这篇文档有帮助吗?

最后更新: