如何将Square与Shopify Flow连接起来

Square 会针对其销售终端和在线产品中的支付、订单、退款、客户及库存变动发送 Webhook。Workflow Webhooks 将该调用转换为 Shopify Flow 触发器,从而使您的商店能够对此做出响应:为客户添加标签、添加订单备注、发送内部邮件、更新元字段 - - 凡是 Shopify Flow 能做到的,它都能实现。

本指南详细介绍了整个流程 - - Square 发送请求、Workflow Webhooks 接收并验证请求、Shopify Flow 执行操作 - - 每个请求都会验证 Square 的 HMAC 签名,因此只有 Square 才能启动您的工作流程。

你可以制作什么

  • 标记一位通过Square在您的实体店购买过商品的Shopify客户。
  • 当通过Square办理退款时,请在客户记录中添加备注,以便支持人员全面了解情况。
  • 当某个共享 SKU 的 Square 库存低于阈值时,向员工发送电子邮件通知。

常见需发送的事件:payment.created、refund.updated、customer.created、inventory.count.updated。

开始之前

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

步骤 1 - 在 Workflow Webhooks 上创建 Webhook

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

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

步骤 2 - 在 Square 中添加端点

在 Square 开发者仪表盘中,打开您应用的**“Webhook”部分,使用您复制的 URL 添加一个订阅,并复制“Signature”密钥**。

如何查找您的 Square 签名密钥

Webhook 订阅的签名密钥(Square 开发者控制台 -> Webhook)。

Square 关于 Webhook 签名的官方文档 中,提供了您账户的具体说明和截图。

将该密钥粘贴到 Workflow Webhooks 中 Webhook 的**“Secret**”字段中,然后保存。从那时起,每笔 Square 交易在进入 Shopify Flow 之前都会经过验证。

此处检查的内容

什么 值
签名页眉 x-square-hmacsha256-signature
签名的位置 整个标头值
签署了什么 {url}{body}
签名 HMAC-SHA256,Base64 编码
时间戳 此发件人未使用
回放保护 无 - - 该发件人未对时间戳进行签名,因此所有有效的签名均保持有效
秘密 作为纯文本使用。请按发件人显示的格式原样粘贴

在签名负载中,{body} 是原始请求正文(按字节复制),而 {url} 是该 Webhook 的 URL。

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

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

  1. 在 Shopify Flow 中,创建一个工作流程,并选择“Workflow Webhooks”触发器。
  2. 点击**“记录事件**”,然后从 Square 发送一个测试事件(或使用 Workflow Webhooks 中的**“发送测试”功能**),以便 Shopify Flow 学习您的数据模式。
  3. 您拥有的每个 Webhook 都会触发相同的 Shopify Flow 触发器,因此请在 Webhook ID 上添加第一个条件,以确保此工作流程仅适用于 Square。该 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 步 - - 进行端到端测试

在 Square 中触发一个真实事件。在 Workflow Webhooks -> 历史记录 中,您应该能看到状态为“成功”的调用记录。如果签名有误,您会看到一条失败的记录并附有原因说明;验证已签名的 Webhook 介绍了签名测试工具,该工具会精确显示是哪一步出现了错误。

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

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

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

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

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

该请求从未送达。请在 Square 中重新检查 URL,并查看 Square 自身的发送日志,确认其收到的响应。如果出现 404,说明 Webhook 错误或已被删除;如果出现 429,说明您已超过套餐的调用限制 - - 请参阅 套餐与使用情况。

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

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

相关