如何将Svix连接到Shopify Flow

Svix 是 Clerk、Resend、Superwall 以及许多其他产品背后的 Webhook 基础设施。 如果您的发件人通过 Svix 进行发送,此预设将对此进行验证。Workflow Webhooks 会将该调用转换为 Shopify Flow 触发器,从而使您的商店能够对此做出响应:为客户添加标签、添加订单备注、发送内部邮件、更新元字段 - - 任何 Shopify Flow 能做的事情。

本指南详细说明了整个流程 - - Svix 发送请求,Workflow Webhooks 接收并验证,Shopify Flow 执行操作 - - 每个请求都会验证 Svix 的 HMAC 签名,因此除了 Svix 之外,没有任何其他系统能够启动您的工作流程。

你可以制作什么

  • 当Clerk报告某位Shopify客户已在您的应用中注册或验证了邮箱时,请为其添加标签。
  • 对“重新发送”或“退回”事件做出响应,并标记地址有问题的客户。
  • 无需配置自定义签名,即可接收来自任何基于 Svix 的产品的数据。

典型事件包括:发送服务所定义的任何事件。

该预设还会验证来自 Clerk、Resend 和 Superwall 的 Webhook。

开始之前

  • Workflow Webhooks 已安装在您的 Shopify 商店中。
  • Shopify Flow 已安装,该应用可从Shopify应用商店免费下载。
  • 一个具有创建 Webhook 权限的 Svix 账户。

步骤 1 - 在 Workflow Webhooks 上创建 Webhook

  1. 打开 Workflow Webhooks -> Webhook -> 创建 Webhook,并为其命名一个在 Shopify Flow 中易于识别的名称,例如 Svix events。
  2. 在**“身份验证**”下,选择 HMAC。
  3. 在**“签名提供商**”下,选择 Svix。该应用会自动为您填写头部、算法、已签名负载和重放窗口 - - 无需进行其他配置。
  4. 暂时将“密钥”字段留空,然后点击“保存”。复制页面上显示的 Webhook URL。

有关其他身份验证模式,请参阅 身份验证;有关如何选择哪些字段会传输到 Shopify Flow,请参阅 负载映射和流变量。

步骤 2 - 在 Svix 中添加端点

在发送服务的 Webhook 设置中将该 URL 添加为端点,然后显示并复制其签名密钥(以 whsec_ 开头)。

如何查找您的 Svix 签名密钥

该服务 Webhook 设置中以 whsec_ 开头的端点签名密钥。

Svix 关于 Webhook 签名的官方文档 中,有针对您账户的具体说明和截图。

将该密钥粘贴到 Workflow Webhooks 页面中 Webhook 的**“Secret**”字段中,然后保存。从那时起,每条 Svix 消息在到达 Shopify Flow 之前都会经过验证。

此处检查的内容

什么 值
签名页眉 svix-signature
签名的位置 前缀v1,之后的标头值
签署了什么 {header:svix-id}.{timestamp}.{body}
签名 HMAC-SHA256,Base64编码
时间戳 svix-timestamp 头文件,以 Unix 秒为单位
回放保护 签名时间戳与当前时间相差超过5分钟的请求将被拒绝
秘密 使用前需先进行Base64解码。解码前会去除开头的whsec_。请完全按照发件人显示的内容粘贴

在已签名的负载中,{body} 就是原始请求正文(按字节对字节复制),{timestamp} 是上文提到的时间戳,而 {header:svix-id} 是 svix-id 的请求头。

如果请求未通过上述任何一项检查,则会因401被拒绝,该请求会被记录在历史与故障排除中,并且永远不会启动工作流程。

步骤 3 - 构建Shopify Flow工作流程

  1. 在 Shopify Flow 中,创建一个工作流程,并选择“Workflow Webhooks”触发器。
  2. 点击**“记录事件**”,然后从 Svix 发送一个测试事件(或使用Workflow Webhooks中的**“发送测试**”功能),以便 Shopify Flow 学习您的数据结构。
  3. 您拥有的每个 Webhook 都会触发同一个 Shopify Flow 触发器,因此请在 Webhook ID 上添加第一个条件,以确保该工作流程仅针对 Svix。该 ID 显示在 Webhook 页面上。
  4. 添加操作 - - 标记客户、添加备注、发送内部邮件、更新元字段。
Shopify Flow
在Shopify Flow中,选择“Select a trigger”(选择触发器),打开Workflow Webhooks(创建新触发器),然后选择“Webhook Trigger”(Webhook 触发器)。
一个 Shopify Flow 条件:Webhook ID 等于某个 Webhook 的 ID
每个工作流程的第一步:对 Webhook ID 设置一个条件,以便工作流程仅针对此 Webhook 运行。
完成的工作流程:Webhook 触发器,基于 Webhook ID 的条件判断,然后在“True”分支上发送内部邮件
完成的工作流程:触发器,基于 Webhook ID 的条件,然后在“True”分支上执行您的操作。

第 4 步 - - 进行端到端测试

在 Svix 中触发一个真实事件。在“Workflow Webhooks”→“History”中,您应该能看到状态为“Success”的调用记录。如果签名有误,您会看到一条显示失败原因的记录;关于签名测试工具的说明,请参阅 验证已签名的 Webhook,该工具会精确指出哪个步骤失败了。

“History”中打开了一个调用,其中包含其请求头、负载、状态、持续时间和标识符
“History”中的已交付事件:状态为“Success”表示 Shopify Flow 已接受该事件。
签名不匹配▾

按以下顺序检查:密钥(最常见的原因 - - 多余的空格,或来自错误环境的密钥)、发送方是否使用了其他端点的密钥,以及 Svix 与应用之间是否有任何环节重写了请求体。签名覆盖的是原始字节,因此会重新格式化 JSON 的代理会导致签名失效。 Webhook 页面上的签名测试工具会显示被签名的确切文本。

每次请求都会返回 401 错误▾

请确认 Webhook 的身份验证方式已设置为 HMAC,且已选择 Svix 提供商;请确认已填写密钥;并请确认 Svix 发送到该 URL 的请求内容与应用中显示的完全一致,包括末尾的代码。

“历史”中未显示任何内容▾

该请求从未送达。请在 Svix 中重新检查 URL,并查看 Svix 自身的投递日志以确认收到的响应。如果显示 404,则表示 Webhook 错误或已被删除;如果显示 429,则表示您已超过套餐的调用限额 - - 请参阅 套餐与使用情况。

工作流程针对错误的事件运行▾

您商店中的每个 Webhook 都会触发同一个 Shopify Flow 触发器。请在工作流程的第一步中添加一个基于 Webhook ID 的条件,或者缩小从 Svix 发送的事件范围。

请求失败,错误信息为“时间戳超出容差范围”▾

Svix 会签署一个时间戳,而该应用会拒绝任何超过 5 分钟的事件。这通常是发送端的时间同步问题,或者 Svix 在很久之后使用原始时间戳重试了该事件。来自同一原始请求的重试不会通过;请让 Svix 发送一个新的事件。

相关