如何將 Shopify 連結至 Shopify Flow

Shopify 會使用您應用程式的 API 密鑰對其自身的 Webhook 及應用程式的應用間呼叫進行簽名。 此預設設定可讓您接收來自其他 Shopify 商店或您自身應用程式的 Webhook,並依照 Shopify 文件中所述的方式進行驗證。Workflow Webhooks 會將該呼叫轉化為 Shopify Flow 觸發器,以便您的商店能對此做出反應:為顧客加上標籤、新增訂單備註、發送內部電子郵件、更新元資料欄位 - - 任何 Shopify Flow 能做到的操作皆可實現。

本指南設定了完整的流程 - - Shopify 負責發送,Workflow Webhooks 負責接收與驗證,Shopify Flow 負責執行 - - 並在每次請求時檢查 Shopify 的 HMAC 簽名,因此唯有 Shopify 才能啟動您的工作流程。

您可以打造什麼

  • 將來自另一家 Shopify 商店的訂單複製到這家商店:標記客戶、新增備註,或啟動履約工作流程。
  • 在 Shopify Flow 中,透過從您自己的應用程式訂閱某個主題,來對該主題做出反應 - - 即使 Shopify Flow 本身並未將該主題列為觸發條件。
  • 在不編寫中介軟體服務的情況下,讓批發店與零售店保持步調一致。

常見的傳送事件包括:orders/create、products/update、customers/create、fulfillments/create。

開始之前

  • Workflow Webhooks 已安裝在您的 Shopify 商店上。
  • Shopify Flow 已安裝,該應用程式可從 Shopify App Store 免費下載。
  • 一個具備建立 Webhook 權限的 Shopify 帳戶。

步驟 1 - 在 Workflow Webhooks 建立 webhook

  1. 開啟 Workflow Webhooks → Webhooks → 建立 Webhook,並為其取一個您在 Shopify Flow 中能認出的名稱,例如 Shopify events。
  2. 在「驗證」下,選擇 HMAC。
  3. 在「簽名提供者」下,選擇「Shopify」。該應用程式會自動為您填入標頭、演算法、已簽名載荷及重播視窗 - - 無需進行其他設定。
  4. 目前請將「密鑰」欄位留空,然後按下「儲存」。複製頁面顯示的 webhook URL。

有關其他驗證模式,請參閱 驗證;關於如何選擇哪些欄位會傳送至 Shopify Flow,請參閱 有效載荷映射與 Shopify Flow 變數。

步驟 2 - 在 Shopify 中新增端點

請在發送端的商店或應用程式中,使用您複製的 URL 建立 Webhook 訂閱,並使用該應用程式的 API 祕鑰對其進行簽署。

如何找出您的 Shopify 簽名密鑰

您的應用程式 API 密鑰/Webhook 簽名密鑰。

Shopify 官網關於 webhook 簽名的文件 提供了您帳戶的具體說明文字與螢幕截圖。

將該密鑰貼上至 Workflow Webhooks 中的 webhook**「Secret」**欄位,並儲存。從此之後,每封來自 Shopify 的郵件在送達 Shopify Flow 之前,都會經過驗證。

此處檢查的內容

什麼 價值
簽名標題 X-Shopify-Hmac-Sha256
簽名的位置 整個標頭值
簽署的內容為何 {body}
簽名 HMAC-SHA256,經 Base64 編碼
時間戳記 此寄件者未使用此功能
重播保護 無 - 此發件人未對時間戳進行簽名,因此所有有效的簽名均保持有效
這個秘密 作為純文字使用。請完全按照發件人顯示的內容貼上

在已簽署的有效載荷中,{body} 即為原始請求正文,逐位元組呈現。

若請求未能通過上述任一項檢查,系統將以「401」為由拒絕該請求,並將其記錄於 歷史與故障排除,且該請求絕不會啟動工作流程。

步驟 3 - 建立「Shopify Flow」工作流程

  1. 在 Shopify Flow 中,建立一個工作流程,並選擇「Workflow Webhooks」觸發器。
  2. 按下「記錄事件」,然後從 Shopify 發送一個測試事件(或使用 Workflow Webhooks 中的**「發送測試**」功能),讓 Shopify Flow 學習您的資料模式。
  3. 您擁有的每個 Webhook 都會觸發相同的「Shopify Flow」觸發器,因此請針對 Webhook ID 新增第一個條件,以確保此工作流程僅限於 Shopify。該 ID 會顯示在 Webhook 頁面中。
  4. 新增您的操作 - 標記客戶、新增備註、發送內部電子郵件、更新元資料欄位。
Shopify Flow
在「Shopify Flow」中,選擇「Select a trigger」,開啟「Workflow Webhooks」,然後選擇「Webhook Trigger」。
Shopify Flow 條件:Webhook ID 等於某個 Webhook 的 ID
每個工作流程的第一步:針對 webhook ID 設定一個條件,以便工作流程僅針對此 webhook 執行。
完成的工作流程:Webhook 觸發器、基於 Webhook ID 的條件,接著在「True」分支上發送內部電子郵件
完成的工作流程:觸發器、基於 webhook ID 的條件,接著在「True」分支上執行您的動作。

步驟 4 - 進行端到端測試

在 Shopify 中觸發一個真實事件。在 Workflow Webhooks → 歷史紀錄 中,您應會看到狀態為**「成功」**的呼叫紀錄。若簽名有誤,則會顯示一個失敗的紀錄並附上原因;而 驗證已簽名的 Webhook 則說明了簽名測試工具,該工具會精確指出哪個步驟失敗。

「History」中開啟了一個呼叫,其中包含其請求標頭、有效載荷、狀態、持續時間及識別碼
「History」中的已傳送事件:狀態為「成功」表示 Shopify Flow 已接受該事件。
簽名不符▾

依此順序:密鑰(最常見的原因 - - 多餘的空格,或是來自錯誤環境的密鑰)、發送者是否使用了不同端點的密鑰,以及在 Shopify 與應用程式之間是否有任何環節重寫了請求正文。簽名是針對原始位元組進行的,因此若代理伺服器重新格式化了 JSON,將會破壞簽名。 Webhook 頁面上的簽名測試工具會顯示實際經過簽名的精確文字內容。

每次發送請求時都會收到 401 錯誤▾

請確認 webhook 的驗證方式已設定為 HMAC,並已選取「Shopify」提供者;同時確認已填入密鑰,且 Shopify 傳送至該 URL 的內容完全與應用程式顯示的內容一致,包括末尾的代碼。

「歷史」中沒有任何記錄▾

該請求從未送達。請在 Shopify 中重新檢查 URL,並查看 Shopify 自身的傳送日誌,以確認其收到的回應。若出現 404,表示 webhook 錯誤或已被刪除;若出現 429,則表示您已超過方案的呼叫次數限制 - - 詳見 方案與使用方式。

工作流程針對錯誤的事件執行▾

您商店中的每個 webhook 都會觸發相同的「Shopify Flow」觸發器。請將「webhook ID」作為工作流程的第一個步驟新增條件,或透過 Shopify 篩選您要傳送的事件。

相關