如何将Square与Shopify Flow连接起来
通过 Shopify Flow 将 Square 与 Workflow Webhooks 连接:采用经过验证的 HMAC 配置,以触发标签、备注、电子邮件和元字段的更新。
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
- 打开 Workflow Webhooks -> Webhook -> 创建 Webhook,并为其命名一个在 Shopify Flow 中能认出的名称,例如
Square events。 - 在**“身份验证**”下,选择 HMAC。
- 在**“签名提供商**”下,选择 Square。该应用会自动为您填写标题、算法、已签名负载和重放窗口 - - 无需进行其他配置。
- 暂时将“密钥”留空,然后点击“保存”。复制页面上显示的 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工作流程
- 在 Shopify Flow 中,创建一个工作流程,并选择“Workflow Webhooks”触发器。
- 点击**“记录事件**”,然后从 Square 发送一个测试事件(或使用 Workflow Webhooks 中的**“发送测试”功能**),以便 Shopify Flow 学习您的数据模式。
- 您拥有的每个 Webhook 都会触发相同的 Shopify Flow 触发器,因此请在 Webhook ID 上添加第一个条件,以确保此工作流程仅适用于 Square。该 ID 显示在 Webhook 页面上。
- 添加操作 - - 标记客户、添加备注、发送内部邮件、更新元字段。



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

签名不匹配
按以下顺序:密钥(最常见的原因 - - 多余的空格,或来自错误环境的密钥)、发件人是否使用了其他端点的密钥,以及在 Square 和应用之间是否有任何环节重写了请求主体。签名涵盖原始字节,因此会重新格式化 JSON 的代理会导致签名失效。 Webhook 页面上的签名测试工具会显示被签名的确切文本。
每次请求都会返回 401 错误
请确认 Webhook 的身份验证已设置为 HMAC 且选择了 Square 提供商,密钥已填写,并且 Square 发送到该 URL 的内容与应用中显示的完全一致,包括末尾的代码。
“历史”中没有显示任何内容
该请求从未送达。请在 Square 中重新检查 URL,并查看 Square 自身的发送日志,确认其收到的响应。如果出现 404,说明 Webhook 错误或已被删除;如果出现 429,说明您已超过套餐的调用限制 - - 请参阅 套餐与使用情况。
工作流程针对错误的事件运行
您商店中的每个 Webhook 都会触发同一个 Shopify Flow 触发器。请在工作流程的第一步中添加一个基于 Webhook ID 的条件,或者缩小从 Square 发送的事件范围。
相关
- 验证已签名的 Webhook - 我们核实的每一家服务提供商,以及如何描述未通过核实的提供商。
- 负载映射和流变量 - 从负载中提取正确的字段并将其导入 Shopify Flow。
- 重复配送防护 - 当Square重新尝试送达时会发生什么。
- 历史与故障排除 - 每个请求的日志,并支持回放。
