ConnectWiz + API 与 Webhook

已上线的集成

我们卖的那套 API,就是我们自己在用的那套

整个平台由同一份 OpenAPI 契约定义,我们自己的面板和手机 App 都是从它生成的——没有影子接口,文档也不会跑偏。在它之上:带范围的 Commerce API 密钥、加固过的 Webhook 触发器,以及会回调你系统的流程。

同一份 OpenAPI 契约 带范围的 API 密钥 经 HMAC 校验的 Webhook
API 与 Webhook × ConnectWiz
载荷是数据,绝不是命令
带范围的密钥:商品目录读 · 订单写
Webhook → HMAC 校验通过 → 流程启动
流程里的 REST 步骤调用你的 API
1
作为唯一依据的 OpenAPI 契约——我们自己的面板和手机 App 也是从这份文件生成的
3
Commerce 的三种权限范围——商品目录读、订单读、订单写——按密钥逐个签发
100
单次读取的最大行数,由服务端强行夹住——limit 参数只做校验,从不轻信
50
通过 API 下单时每单的最大行项数——这是写明的上限,不是撞上去才发现的

开发者

它到底能做什么

唯一作数的那份契约

一份 OpenAPI 3 文档定义了整个平台;我们自己的 TypeScript 客户端就是从它生成的——文档不可能和现实脱节,因为现实就是按文档造出来的。

Commerce API 密钥

由租户签发、权限范围写明的密钥——商品目录读、订单读、订单写——让你自己的店面或 App 跑在同一套订单引擎上,价格始终由服务端算定。

入站 Webhook,已加固

每一个流程的 Webhook 触发器都有自己的 URL 和密钥,对原始报文体做 HMAC 校验,并带重放保护。载荷可以指名道姓提到某个人;但它绝不能左右流程的内部逻辑。

出站走流程

REST 步骤会在你在画布上画出的那个时刻回调你的系统——下单成功、拿到同意、预约成立。

技术细节

API 的设计立场,写明在此

价格绝不来自客户端

一个下单请求只说买什么、买几件——名称和价格由服务端当场从商品目录里读出来,作为快照写进订单行。被篡改的请求编不出一个折扣。

先看能力,再发调用

每一个集成面都会公布一份能力契约——能不能按手机号匹配?能不能列出访客订单?能不能创建订单?——明确写着“不能”的调用会立刻抛错,而不是在深处某个地方悄悄失败。

有意义的报错

传输层会区分“未授权”和“服务挂了”——所以“连不上商店”永远不会被显示成“这个客户从没买过东西”。有名字的错误,正是 API 和猜谜游戏之间的区别。

防重放的 Webhook

每一个入站事件在处理之前,都要先在幂等台账里占一个唯一键——重试或重放的投递在数据库层就死掉,不会跑到你的自动化里去。

密钥只存哈希,权限只给必要的

API 密钥以哈希形式存放,门口只能解析出哈希和权限范围——一行泄露的数据库记录既说不出是哪个工作区,也打不开权限范围之外的任何东西。

草稿还是确认,明着说

创建订单要带一个显式的 confirm 参数——公开 API 默认为已确认,面板里的流程可以先攒草稿——所以“这单是真的吗”是一个字段,而不是一条默契。

接入设置

连接方式

01

签发一个密钥

在面板里创建一个带范围的 Commerce API 密钥;吊销起来同样简单。

02

接上一个 Webhook

建一个以 Webhook 为触发器的流程;用它的密钥给请求签名。

03

再回调出去

在你的系统需要得到消息的地方,加上 REST 步骤。

搭配更好用

能与什么搭配

Flows

Webhook 触发器负责启动 Flows;REST 步骤则在你画出的那些时刻回调你的系统——入站和出站的自动化共用一张画布。

Commerce

支撑 API 的那套 Commerce 商品目录与订单引擎 ——聊天商店和 AI 用的也是它:一份订单真相,四个入口。

你自己的店面

目前已经有团队在 Commerce API 上跑无头店面;如实推荐这条路的,正是 Shopify 页面 ——原生连接器做好之前,这就是诚实的答案。

安全与保证

无聊但管用的保证

对原始报文体做 HMAC

Webhook 校验用每个触发器各自的密钥对原始请求体签名,并以恒定时间比对——先拿到证明,才开始解析。

载荷是数据,绝不是命令

Webhook 载荷可以引用某个人;但它绝不能左右流程的内部逻辑、改写提示词或调用工具。数据和指令之间的这道界限是架构层面的,不是靠行为约束的。

每一道门都有限流

公开接口走标准限流,读取上限由服务端强行夹住——不守规矩的客户端拖垮的是它自己,不是平台。

不加粉饰的细则

边界,写清楚

暂时还没有全量事件流

那种“订阅一切”的通用 Webhook 事件流还没做——目前的出站事件都通过流程步骤发出。写在这里,省得哪次销售电话里要含糊其辞。

读取有上限,这是设计如此

一次读取最多返回 100 行,配合游标翻页——这套 API 是为业务集成造的,不是为批量导出造的。批量需求可以聊,但不该靠钻空子。

API 与 Webhook FAQ

直接的回答

更多内容见完整的 FAQ, 也可以直接联系我们。

整个平台由一份 OpenAPI 3 契约定义——我们的网页面板和手机 App 也是从这份文件生成类型的。你对接的那套,就是我们自己跑的那套。

每个触发器各自的密钥、对原始报文体的 HMAC 校验,以及靠幂等台账实现的重放保护。另外有一条铁律:载荷是数据,它可以引用某个人,但绝不能指挥自动化。

可以,通过流程里的 REST 步骤,在你于画布上选定的时刻触发。通用的出站 Webhook 事件流在路线图上,上线之前我们刻意不做承诺。

可以——读商品目录、写订单就是我们支持的路径,价格由服务端算定,密钥带权限范围,还能按使用面逐个吊销。50 行项和 100 行的上限都写明了,就是让你照着设计,而不是撞上去才知道。

投递在我们这一侧是幂等的——台账认得出重放并直接丢弃,所以你的系统可以放心重试。流程里的出站 REST 步骤有自己的重试策略,失败会在这次流程运行记录上显示出来。

诚实的连接,胜过响亮的连接。

这里的每一个集成都按它实际的行为来描述——数据方向、归属权和限制,一并写清楚。