ToolJet 集成 WooCommerce 数据源指南:连接配置、资源操作与源码实现解析
2026/9/13 4:05:26 网站建设 项目流程

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 密钥:

  1. 登录 WooCommerce 站点管理后台(Admin Dashboard);
  2. 进入WooCommerce → Settings → Advanced → REST API(或 Advanced → API Keys);
  3. 点击Add key,填写描述、选择权限(Read / Write / Read/Write),点击Generate API key
  4. 页面会一次性展示Consumer keyConsumer 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_keyconsumer_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 的查询

连接建立后,在应用编辑器中按以下步骤发起查询:

  1. 点击编辑器底部查询管理器(Query Manager)的+ Add按钮;
  2. 选择上一步添加的WooCommerce数据源;
  3. 从下拉框选择目标资源(Resource),再选择对应的操作(Operation),并填写所需参数;
  4. 点击Preview按钮预览输出,或点击Run按钮触发查询,结果会写入查询的data变量供组件绑定使用。

提示:查询结果可以通过 ToolJet 的**转换(Transformations)**能力做二次加工,例如筛选字段或重组数据结构,详见 transformations 文档。

查询分发机制:Resource → Operation 的映射

在插件入口 index.ts 的run方法中,ToolJet 根据resource字段将请求分发到四组操作处理器:customerproductordercoupon。每个处理器再根据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 customerbatch 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 /productsPUT /products/{id}POST /products/batchGET /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 提交优惠券数据(如codediscount_typeamountindividual_use等),对应POST /coupons

源码视角:插件数据结构与扩展点

从类型定义 types.ts 可以看出,插件将所有查询参数集中在QueryOptions中,其中operationresourcebody以及各类*_id是核心字段,其余参数为可选的列表过滤条件。body参数统一使用 JSON5 解析(见 operation.ts),因此你可以在 Body 中直接编写带注释或宽松语法的 JSON,容错性更高。

数据源创建后,ToolJet 会在查询执行时向插件暴露三个内置变量isLoadingdatarawData(见 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_pagepage控制返回规模,用searchstatuscategory等条件缩小结果集,避免一次拉取全量数据拖慢应用。
  • 批量维护数据:涉及大量客户、商品或订单的增改删时,优先使用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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询