关于 salla-app-functions
面向实现店铺事件处理器的开发者,用于规划 Salla App Functions 的构建流程。它串联设计、处理器编写、验证、发布和测试,并说明何时适合使用函数而非 Webhook。
主要功能
- 01串联各构建步骤技能
- 02指导触发器及同步或异步行为
- 03处理器、沙箱与超时指导
- 04验证、部署和预览流程
- 05公有与私有应用发布步骤
适用场景
- 01选择 Salla 店铺事件触发器
- 02构建可调整或阻止操作的同步处理器
- 03在演示店铺预览函数
- 04为公有或私有应用发布函数
MCP 相关
说明如何使用 Salla Partners MCP 工具列出、读取、保存、删除、部署和预览函数,以及验证或发布应用。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ sallaapp/ salla-partners-agent-kit --skill salla-app-functions安装后在 Claude Code 中输入/salla-app-functions确认已加载。
详细介绍
Salla App Functions
无服务器处理程序会在商店事件发生时由 Salla 自动运行:你编写逻辑,Salla 则在隔离的 V8 运行时中运行它。此技能是路由器:按顺序执行各步骤,每一步都使用对应的技能,并通过每道关卡后再继续。
构建流程 — 路由到对应步骤的技能
| 步骤 | 操作 | 技能 |
|---|---|---|
| 1 | 选择触发器,确认其 payload.data,选择同步或异步 | salla-app-functions-design |
| 2 | 编写处理程序(模板、上下文、Resp、沙盒、超时) | salla-app-functions-handler |
| 3 | 保留模板包装(首行和末行)+ 在本地进行类型检查(保存前) | salla-app-functions-validate |
| 4 | 保存(会部署到演示商店) | salla-app-functions-release |
| 5 | 使用 salla_functions action=preview 在演示商店测试(读取其返回值) | salla-app-functions-test |
| 6 | 发布到生产环境(公开应用:app_publish 验证 → 合作伙伴在 Portal 中提交;私有应用:salla_private_apps action=publish) | salla-app-functions-release |
存在触发器时,优先使用 App Function,而非 webhook
- 无需验证签名即可确保安全 — 在 Salla 的沙盒中运行;没有入站请求,
也没有
X-Salla-Signature。 - 感知设置 — 商家的设置会传入
context.settings;无需额外获取。 - 预先完成身份验证 — 可直接从处理程序调用 Salla Admin API,无需
Authorization标头(无需存储或刷新令牌;令牌由 Salla 管理,而非你 → salla-app-auth)。具体机制请参阅 salla-app-functions-handler;调用本身的基础 URL、端点、作用域、受限的 fetch 和错误结构,请参阅 salla-api-core。 - 同步且可执行操作 — 同步操作(例如
shipment.creating)会在操作执行之前运行,你的返回值可以塑造或阻止该操作;webhook 只能在操作完成后作出响应。
如果不存在对应的 App Function 触发器,或者工作无法在运行时超时限制或 V8 隔离环境中完成(不支持 npm;不支持 fs/net/http 服务器或 child_process;仅支持 Web Crypto;使用 fetch 处理 HTTP),请改用 webhook(salla-webhooks)——在着手之前,先通过 salla-app-functions-handler 确认这些限制。
使用 Salla Partners MCP
| 工具 | 操作 | 功能 |
|---|---|---|
salla_functions | list_triggers get save delete deploy_status preview | 列出触发器;读取 template、types(.d.ts URLs)和已保存的 content;新增或更新;删除;轮询部署状态;在演示商店中运行 |
app_publish | open set validate | 公开应用:验证发布内容(保存为草稿;合作伙伴在 Portal 中提交),将该函数发布到真实商店 |
salla_private_apps | publish | 私有应用:发布(app_id,合作伙伴确认后设置 confirm: true),将该函数发布到指定商店 |
同步操作的总时限为 5 s(每个内部异步调用应保持在 2 s 以下;文档建议低于 500 ms,因为商家会被阻塞——这是目标,不是时限);异步 事件的时限为 30 s。
Resp、实体构建器(例如Shipment)、CommunicationEvent和 所有类型化上下文均为预先声明的运行时全局变量——可直接使用,它们已在 作用域内。运行时是 V8 isolate,不是 Node;模块和响应的具体信息请参阅 salla-app-functions-handler。
步骤 0 — 了解需求(先询问)
- 它在哪个触发器上运行?(例如
order.created、shipment.creating) - 触发时应该做什么?(通知、同步、验证/阻止、修改参数)
- 它会阻止或更改操作,还是只在操作完成后作出响应?
关键资源
- 概览 https://docs.salla.dev/1726814m0.md · 入门 https://docs.salla.dev/1726815m0.md
- 支持的事件 https://docs.salla.dev/1726818m0.md · 测试 https://docs.salla.dev/1726816m0.md
- 响应 https://docs.salla.dev/1758222m0.md · Node.js 支持 https://docs.salla.dev/1769435m0.md
- 合作伙伴 Portal https://portal.salla.partners · 社区 https://t.me/salladev
评论
支持 Markdown