從 WooCommerce 傳送 WhatsApp 訂單更新
為訂單事件建立一個 WooCommerce Webhook,指向一個接收器,例如 n8n 工作流程或一個小型 PHP 路由。接收器驗證 WooCommerce 的簽章,確認客戶同意接收 WhatsApp 訊息,再用已連接號碼的電話號碼 ID 和存取權杖,透過 Cloud API 傳送已核准的訊息範本。
WooCommerce 在連續超過 5 次傳送失敗後,會停用該 Webhook。
標頭帶有負載的 base64 編碼 HMAC-SHA256,以 Webhook 的密鑰產生。
在客戶服務時段以外,只能傳送預先核准的訊息範本。
WooCommerce 訂單如何觸發 WhatsApp 訊息?
透過 WooCommerce Webhook 和一個接收器。在 WooCommerce 的設定 > 進階 > Webhooks 中,新增一個 Webhook,選擇訂單主題(例如訂單已建立或訂單已更新),並填入傳送 URL 和密鑰。之後每次事件發生,WooCommerce 都會把訂單以 JSON 格式 POST 到該 URL。
負載格式是固定的,因此無法直接指向 Cloud API,中間需要一個接收器:n8n 的 Webhook 節點、店舖自己 PHP 程式中的一個路由,或任何小型服務均可。它讀取訂單,取出客戶的電話號碼和訊息所需的資料,然後向已連接號碼的 Cloud API 訊息端點發出一個 HTTPS 請求,並以該號碼的存取權杖作為 bearer 權杖。
order.updated 主題並不限於單一狀態,所以接收器應讀取訂單的 status 欄位,只在它關心的每次狀態轉換時傳送一次。WooCommerce 預設透過 wp-cron 在背景傳送,因此訊息可能比訂單稍遲一點送出。
接收器如何得知請求來自店舖?
靠 WooCommerce 的簽章。每次傳送都帶有 X-WC-Webhook-Signature 標頭,內容是以您在 Webhook 上設定的密鑰,對原始負載計算出的 base64 編碼 HMAC-SHA256。接收器對收到的內容計算同一個雜湊並比對,不符的一律拒絕。
這是店舖自己的密鑰,因此與 Meta 對收到的 WhatsApp 訊息所附的簽章不同,這個簽章是可以驗證的。請以恆定時間比對,並且在任何框架解析之前,先對原始內容計算雜湊,因為重新編碼後的 JSON 會產生不同的雜湊。
請盡快回應 2xx。WooCommerce 會把不是 2xx、301 或 302 的回應視為失敗,連續失敗超過 5 次便會停用該 Webhook。接收器因部署而停機,或因為等待 Meta 回應而太慢,都可能令店舖的訊息在無人察覺下停止傳送。
店舖可以傳送什麼,何時傳送?
只要是店舖先開口,就必須使用已核准的訊息範本。Meta 的 24 小時客戶服務時段,只會在客戶向該號碼傳送訊息時開啟,所以訂單確認或出貨更新屬於商戶主動發起,自由格式訊息會被拒絕。請為每種更新建立一個實用類訊息範本,等待核准後,以名稱和語言傳送,並把訂單編號等資料作為參數。
Meta 還要求取得同意:客戶提供了號碼,並同意透過 WhatsApp 接收該商戶的訊息。在結帳頁加入一個勾選框,並把結果記錄在訂單上,是最簡單的做法,接收器在傳送前應先檢查。
客戶一旦回覆,對話就是一般的 Coexistence。回覆會出現在店舖手機的 WhatsApp Business 應用程式中,時段開啟後可傳送自由格式訊息,團隊也一如既往在應用程式中回覆。
常見錯誤
- 先呼叫 Cloud API,才回應 WooCommerce。傳送緩慢或失敗都會計入該 Webhook 的失敗次數,超過 5 次便會被停用。
- 對已解析的 JSON 計算雜湊,而不是對原始內容。簽章永遠不會相符,每一個真實的傳送都會被拒絕。
- 每次收到 order.updated 都傳送。該主題並不限於單一狀態,若不記錄已通知過哪一次狀態轉換,客戶會收到重複的訊息。
在 easycoexistence.com 連接店舖的號碼,並從控制台取得電話號碼 ID 和存取權杖交給接收器。每個號碼每月 US$ 9 起,號碼越多越便宜,最低降至 US$ 1,首 3 天免費。
常見問題
我需要為此安裝 WordPress 插件嗎?
不需要。WooCommerce 內建的 Webhook 加上一個接收器已經足夠,接收器可以是同一個 PHP 應用程式中的一個路由。
訂單訊息的費用由誰支付?
Meta 直接向商戶在其自己的 WhatsApp Business 帳戶收取訊息費用,EasyCoexistence 絕不加價。
團隊仍然可以使用手機嗎?
可以。Coexistence 讓 WhatsApp Business 應用程式繼續在店舖的號碼上運作,店舖傳送的訊息範本也會顯示在對話中。
如果 Webhook 被停用了怎麼辦?
先修復接收器,再在 WooCommerce 把該 Webhook 的狀態改回啟用。停用期間建立的訂單不會觸發訊息。
繼續閱讀
準備開始嗎?
幾分鐘內設定 WhatsApp Coexistence,而非幾個月。應用程式在手機上仍可繼續運作。
開始免費試用驗證日期