ToolJet 集成 WooCommerce 数据源指南:连接配置、资源操作与源码实现解析
【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 🚀项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet
ToolJet 提供了开箱即用的 WooCommerce 数据源插件,让你无需编写后端代码即可在内部工具、仪表盘与业务应用中直接读取和写入 WooCommerce 商店数据(客户、商品、订单与优惠券)。本文将基于 ToolJet 3.0.0-LTS 版本文档,结合仓库内 WooCommerce 插件源码 与 manifest 配置,完整讲解从建立连接、发起查询到各资源操作参数的实战流程,并揭示插件底层如何将操作映射为 WooCommerce REST API 调用。
前置准备:获取 WooCommerce 的 Consumer Key 与 Consumer Secret
在 ToolJet 中连接 WooCommerce 之前,需要先到你的 WooCommerce 后台生成 API 密钥:
- 登录 WooCommerce 站点管理后台(Admin Dashboard);
- 进入WooCommerce → Settings → Advanced → REST API(或 Advanced → API Keys);
- 点击Add key,填写描述、选择权限(Read / Write / Read/Write),点击Generate API key;
- 页面会一次性展示Consumer key与Consumer secret,请立即保存——Secret 只在生成时完整显示一次。
注:密钥的生成方式与认证细节以 WooCommerce 官方 REST API 文档(Authentication 章节)为准,详见 plugins/packages/woocommerce/README.md 中的指引。
建立 WooCommerce 连接
在 ToolJet 中建立 WooCommerce 数据源连接有两种入口:
- 在应用编辑器的查询面板(Query Panel)中点击+ Add new Data source按钮;
- 或从 ToolJet 仪表盘导航到 Data Sources 页面,选择WooCommerce作为数据源类型。
ToolJet 连接 WooCommerce 需要三个必填参数:
| 参数 | 说明 | 字段类型 |
|---|---|---|
| Host | 你的 WooCommerce 商店 URL(如https://your-store.com) | 文本 |
| Consumer key | 后台生成的 Consumer key | 密码(加密存储) |
| Consumer secret | 后台生成的 Consumer secret | 密码(加密存储) |
从 manifest.json 可以看到三个字段在数据源表单中的具体定义:consumer_key与consumer_secret被声明为"type": "password"且带"encrypted": true标记,说明密钥在保存时会经过 ToolJet 的加密机制处理后才入库;host为普通文本字段。三者均被列入"required"数组,任一缺失都会阻止连接创建。
连接背后的实现:基于 woocommerce-rest-ts-api 的 REST 客户端
插件在 getConnection 方法 中通过woocommerce-rest-ts-api库构造 REST 客户端:
const WooCommerce = new WooCommerceRestApi({ url: host, // 商店 URL consumerKey: consumer_key, consumerSecret: consumer_secret, version: 'wc/v3', // WooCommerce WP REST API 版本 });这里固定使用 WooCommerce REST API 的wc/v3版本,插件通过 HTTP 与你的商店站点交互,因此 Host 需要是公网可达(或 ToolJet 所在网络可达)的商店地址。
连接测试逻辑
插件实现了testConnection(见 index.ts):它会向system_status端点发起一次GET请求,若请求失败或返回状态码401,则抛出Invalid credentials错误——这就是你在数据源表单点击 Test Connection 时看到的结果反馈。因此填错 Host、Key 或 Secret 时,会被明确提示为凭据无效。
发起对 WooCommerce 的查询
连接建立后,在应用编辑器中按以下步骤发起查询:
- 点击编辑器底部查询管理器(Query Manager)的+ Add按钮;
- 选择上一步添加的WooCommerce数据源;
- 从下拉框选择目标资源(Resource),再选择对应的操作(Operation),并填写所需参数;
- 点击Preview按钮预览输出,或点击Run按钮触发查询,结果会写入查询的
data变量供组件绑定使用。
提示:查询结果可以通过 ToolJet 的**转换(Transformations)**能力做二次加工,例如筛选字段或重组数据结构,详见 transformations 文档。
查询分发机制:Resource → Operation 的映射
在插件入口 index.ts 的run方法中,ToolJet 根据resource字段将请求分发到四组操作处理器:customer、product、order、coupon。每个处理器再根据operation字符串决定实际调用的 REST 端点与 HTTP 方法(GET/POST/PUT/DELETE),详见 operation.ts。
list类操作会通过querystring.stringify把非空参数拼接为查询串(见 generateEndpointWithQueryParams),未填写的参数会被自动忽略;create/update/batch_update类操作则将 Body 参数按JSON5格式解析后作为请求体提交;delete操作固定携带force: true强制删除。
支持的资源与操作
Customer(客户)
支持的操作:
- list customer— 列出客户
- update customer— 更新客户
- delete customer— 删除客户(强制删除)
- batch update customer— 批量更新客户
- create customer— 创建客户
- retrieve customer— 获取单个客户
list customer 支持的过滤/排序参数(对应 REST 端点GET /customers,见 operation.ts):
| 参数 | 说明 |
|---|---|
context | 请求上下文(如view) |
page | 当前页码,默认 1 |
per_page | 每页条数,默认 10,最大 100 |
search | 按关键词搜索 |
exclude | 排除指定 ID 列表 |
include | 仅包含指定 ID 列表 |
offset | 偏移量(跳过前 N 条) |
order | 排序方向:asc/desc |
orderby | 排序字段:id/include/name/registered_date等 |
email | 按邮箱精确过滤 |
role | 按用户角色过滤(如customer) |
update / retrieve / delete customer需要额外填写customer_id参数,分别映射到PUT /customers/{id}、GET /customers/{id}、DELETE /customers/{id};create customer与batch update customer通过 Body 提交客户数据(后者对应POST /customers/batch,Body 结构为{"create": [...], "update": [...], "delete": [...]})。
Product(商品)
支持的操作:
- list product— 列出商品
- update product— 更新商品
- delete product— 删除商品(强制删除)
- batch update product— 批量更新商品
- create product— 创建商品
- retrieve product— 获取单个商品
list product 支持的过滤/排序参数(端点GET /products,见 operation.ts):
| 参数 | 说明 |
|---|---|
context/page/per_page/search/exclude/include/offset/order/orderby | 与 Customer 的通用分页、搜索、排序参数一致 |
slug | 按商品别名过滤 |
status | 按商品状态过滤(draft/pending/private/publish等) |
type | 按商品类型过滤(simple/grouped/external/variable) |
sku | 按 SKU 精确过滤 |
featured | 是否仅返回精选商品(true/false) |
category | 按分类 ID 过滤 |
tag | 按标签 ID 过滤 |
shipping_class | 按配送类别过滤 |
attribute | 按属性过滤 |
attribute_term | 按属性项过滤 |
tax_class | 按税率类别过滤 |
on_sale | 是否仅返回促销商品 |
min_price/max_price | 价格区间过滤 |
stock_status | 按库存状态过滤(instock/outofstock/onbackorder) |
before/after | 按日期过滤(ISO8601 格式) |
parent/parent_exclude | 按父商品 ID 过滤 / 排除 |
商品类单条操作同样需要product_id参数,Body 用于 create/update/batch update,对应端点:POST /products、PUT /products/{id}、POST /products/batch、GET /products/{id}、DELETE /products/{id}。
Order(订单)
支持的操作:
- list order— 列出订单
- update order— 更新订单
- delete order— 删除订单(强制删除)
- batch update order— 批量更新订单
- create order— 创建订单
- retrieve order— 获取单个订单
list order 支持的过滤/排序参数(端点GET /orders,见 operation.ts):
| 参数 | 说明 |
|---|---|
context/page/per_page/search/exclude/include/offset/order/orderby | 通用分页、搜索、排序参数 |
status | 按订单状态过滤(pending/processing/on-hold/completed/cancelled/refunded/failed/trash等) |
before/after | 按下单日期过滤 |
parent/parent_exclude | 按父订单过滤 / 排除 |
customer | 按客户 ID 过滤 |
product | 按包含的商品 ID 过滤 |
dp | 小数位数(决定金额精度的显示) |
订单类单条操作使用order_id参数,对应端点:GET /orders/{id}、PUT /orders/{id}、DELETE /orders/{id};批量操作为POST /orders/batch,创建为POST /orders。
Coupon(优惠券)
支持的操作:
- list coupon— 列出优惠券
- create coupon— 创建优惠券
list coupon 支持的过滤/排序参数(端点GET /coupons,见 operation.ts):
| 参数 | 说明 |
|---|---|
context/page/per_page/search/exclude/include/offset/order/orderby | 通用分页、搜索、排序参数 |
before/after | 按有效期日期过滤 |
code | 按优惠券代码过滤 |
create coupon通过 Body 提交优惠券数据(如code、discount_type、amount、individual_use等),对应POST /coupons。
源码视角:插件数据结构与扩展点
从类型定义 types.ts 可以看出,插件将所有查询参数集中在QueryOptions中,其中operation、resource、body以及各类*_id是核心字段,其余参数为可选的列表过滤条件。body参数统一使用 JSON5 解析(见 operation.ts),因此你可以在 Body 中直接编写带注释或宽松语法的 JSON,容错性更高。
数据源创建后,ToolJet 会在查询执行时向插件暴露三个内置变量isLoading、data、rawData(见 manifest.json),便于在应用中对查询状态与结果进行绑定和展示。
插件位于 plugins/packages/woocommerce 目录,属于 ToolJet 插件体系中的@tooljet-plugins/woocommerce包(依赖woocommerce-rest-ts-api@^7.0.0,见 package.json)。如果你需要排查问题或了解插件如何被加载,可以从该目录入手阅读实现。
常见问题与使用建议
- 连接测试失败并提示 Invalid credentials:优先检查 Consumer key / Secret 是否正确复制(Secret 生成后只显示一次,若丢失需在 WooCommerce 后台重新生成),并确认 Host 填写的 URL 与商店实际地址一致。
- 希望查询更快更精准:在
list类操作中尽量使用per_page、page控制返回规模,用search、status、category等条件缩小结果集,避免一次拉取全量数据拖慢应用。 - 批量维护数据:涉及大量客户、商品或订单的增改删时,优先使用
batch update操作一次提交多条记录,减少请求往返次数。 - 对结果做二次加工:结合 ToolJet 的 transformations 功能,将返回的原始数据裁剪、聚合为组件所需的形状,再绑定到表格、图表等控件上。
【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 🚀项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考