跳到正文
Ouviro

商家 API 指南

让客户通过你的 API 查询订单状态

Ouviro 可以在会话中调用你的只读 API。你的服务端必须判断访客提供的订单号和邮箱是否允许查询该订单。

Ouviro · 发布于

1. 准备只读查询接口

准备店主或管理员账号、网站渠道,以及返回 JSON 且不会修改订单、支付或履约状态的接口。使用虚构数据测试,例如 DEMO-1042 和 ana@example.com。

安装聊天组件或嵌入管理后台均不授予订单访问权限。这是自定义 API 集成,不是原生 Shopify 或 WooCommerce 连接器。

2. 使用固定的公网 HTTPS 主机

配置使用默认端口的完整 HTTPS URL。Ouviro 发送 GET 请求,不跟随重定向。访客值只能填入路径或查询参数,不能改变主机名。

localhost、IP 字面量、内网形式的主机名、ouviro.com、workers.dev 和 pages.dev 均会被拒绝。如果 API 托管于 Cloudflare Workers,请配置自己的公网自定义域名,不要尝试绕过主机限制。

3. 同时要求订单号和邮箱

至少将 order_id 和 email 设为必填参数,两者都必须出现在 URL 模板中,其中 email 放在查询字符串内。示例将 order_id 限为 64 个字符,email 限为 200 个字符;任何参数都不能超过 200 个字符。

商家服务端必须联合核验这两个值,再返回订单字段。Ouviro 的格式校验不能证明订单归属。请实施自己的授权校验和防滥用控制。

4. 将服务凭证保留在服务端

在工具设置中配置允许使用的请求头名称和服务密钥,Ouviro 会在服务端请求中添加它。不要把密钥放进组件、HTML、URL 或知识库文件。

该凭证用于授权调用方;你的 API 仍须核验访客提供的订单号和邮箱。

5. 为渠道配置工具

创建工具,选择对应渠道,并按实际接口调整下方定义。超时时间必须在 1 至 5 秒之间。

示例中的主机名和客户数据均为虚构。请替换为自己的接口,并单独保存密钥;此示例不是可直接使用的商家服务。

这段 JSON 用于说明配置字段。请逐项填写后台表单,表单不支持整段粘贴 JSON。参数长度上限属于 API 定义,无法在该表单中编辑。

{
  "name": "get_order",
  "description": "Look up order status and shipping details using the order number and the email used at checkout.",
  "urlTemplate": "https://api.example.com/verified-orders/{order_id}?email={email}",
  "params": [
    {
      "name": "order_id",
      "description": "The order number provided by the visitor.",
      "required": true,
      "pattern": null,
      "maxLength": 64
    },
    {
      "name": "email",
      "description": "The email used at checkout, provided by the visitor.",
      "required": true,
      "pattern": "^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$",
      "maxLength": 200
    }
  ],
  "responseMap": [
    {
      "path": "order.status",
      "label": "Order status"
    },
    {
      "path": "shipping.carrier",
      "label": "Carrier"
    },
    {
      "path": "shipping.eta",
      "label": "Estimated arrival"
    }
  ],
  "authHeaderName": "Authorization",
  "timeoutMs": 5000
}

JSON · 说明示例

{
  "order": {
    "status": "shipped"
  },
  "shipping": {
    "carrier": "Example Carrier",
    "eta": "3–5 business days"
  }
}

6. 仅映射客户需要的字段

使用 order.status 或 order.shipment.status 这样的点分路径,不要添加 $. 前缀。路径必须匹配服务端实际返回的 JSON。

只有已映射的标量字段会提供给回答模型;缺失字段和对象不会成为订单事实。响应中不要包含内部备注、地址、支付凭证或无关客户记录。

说明示例
官网英文示意截图,使用虚构数据。这不是后台操作界面,也不是真实商户订单查询结果。

7. 核对第一条有效查询回答

在后台使用相互匹配的虚构订单号和邮箱测试,检查请求、返回字段和状态。然后在组件内提供这两个值,查询同一订单。

将回答与 API 响应对照,并查看会话的工具调用记录。仅通过接口测试,不能证明实际会话行为正确。

8. 测试拒绝、未找到和超时

测试错误邮箱、未知订单、缺少参数、无效 JSON 和慢接口。邮箱不匹配时,接口不得泄露任何订单字段。未找到、HTTP 错误和超时结果,不能被转述成虚构的发货或支付详情。

查询失败时,应请客户修正信息或转人工处理。超时不代表订单不存在、已取消或尚未付款。

开始免费试用

接入之前,你可能想了解

只提供订单号够吗?

不够。至少配置两个必填值,并在服务端联合核验,避免暴露可被枚举的订单查询接口。

AI 可以通过这个工具取消订单或退款吗?

此集成用于只读 GET 查询。接口不得执行取消、退款、支付确认或履约操作。

JSON 有效,为什么仍然没有映射字段?

检查响应字段的完整路径和类型。使用 order.status,而不是 $.order.status,并映射标量值而非对象。

可以使用本地隧道或 workers.dev 接口吗?

不要通过隧道绕过主机限制。使用由你控制的固定公网 HTTPS 域名;workers.dev 接口需要配置允许的自定义域名。