WooCommerce 簡訊通知整合漸強 MAAC Go:擺脫 IP 白名單與陳舊介面

OrderNotify 這次把 WooCommerce 簡訊通知接上了漸強實驗室的 MAAC Go,最直接的好處只有一句話:發訂單簡訊不必再為了防詐去綁定主機 IP,也不必跑白名單申請。這件事聽起來很小,卻卡住超多想要寄送簡訊的客戶。

OrderNotify 原本就支援三竹、Every8D 這幾家台灣簡訊商,這部分我們兩年前就整合好了,但這幾年用下來會發現一個規律,客戶回報的簡訊問題,九成不在外掛本身,而是卡在簡訊商那一端。

先講清楚:舊簡訊商的三個老問題

在說 MAAC Go 之前,得先說我們為什麼想換,這三個問題不是哪一家特別爛,而是台灣這一票老牌簡訊商的問題。第一個是介面,多數簡訊商的後台停在十年前,登入頁還帶著 2010 年代那種灰底藍框的味道,雖然很懷舊,但對不熟的客戶用起來會有點門檻。

第二個是 API 不太穩,前陣子剛好都有遇到幾間的 API 壞掉,為了客戶的訂單通知穩定度著想,還是多加一間當備援方案,真正讓客戶崩潰的是第三個:台灣簡訊商為了防詐,普遍要求「發送方的伺服器 IP 必須先登記白名單」,沒登記的 IP 打進去,簡訊直接被擋。雖然這事不能怪簡訊商,但對使用體驗來說很傷。然後現在有些簡訊商的白名單 IP 都還是需要請客服設定,有時光等客服回覆就要花上好幾天。

為什麼是漸強實驗室的 MAAC Go

後來我們試了漸強實驗室的 MAAC Go 簡訊服務,前面那三個問題剛好被它一次解掉。

它的後台是非常現代的介面,金鑰、Webhook、錢包餘額清晰好找,API 走的是現代的 REST 設計,發送端點就一個 https://sms.cresclab.com/api/sms/send,回傳 JSON 乾淨、錯誤碼清楚,餘額不足會直接回 HTTP 402 帶 insufficient_balance,後端不用再去猜它到底想表達什麼。

最關鍵的是,它用金鑰(API Key)驗證身分,不綁伺服器 IP。也就是說客戶搬主機、換 GCP、換 Cloudways,金鑰不變就繼續發,那套「IP 沒進白名單導致簡訊發不出去」的問題不再上演,希望不用綁 IP 這件事未來能持續下去~

三步驟把 MAAC Go 串進 OrderNotify

整個串接就三步,全部在兩邊後台複製貼上,不用碰任何一行程式。

第一步:拿 API 金鑰貼回網站後台

先登入 MAAC Go 後台,到「MCP / API」頁面拿到 API 金鑰,正式環境的金鑰開頭是 sk_live_、測試用的是 sk_test_

複製後回到 WordPress 後台的 OrderNotify 設定頁,找到「MAAC Go 」這一區,把金鑰貼進「API Key」欄位。

第二步:交換 Webhook 網址,換回簽章金鑰

這一步是雙向的,OrderNotify 設定頁裡有一個唯讀的「Webhook URL」欄位,把那串網址複製起來,貼到 MAAC Go 後台的「Webhooks」設定。存檔之後,MAAC Go 會替這個 Webhook 產生一組「簽章金鑰」(Webhook Signing Secret),再把這組金鑰複製回來,貼進 OrderNotify 的「Webhook Signing Secret」欄位。

輸入 Webhook URL 之後會得到一組 Secret:

將 Secret 貼回到後台設定點擊儲存:

這組簽章金鑰的用途,是讓 OrderNotify 收到送達回報時,用 HMAC-SHA256 驗證這則回報「真的是 MAAC Go 發的」,而不是別人偽造的請求。

第三步:查餘額,送一封真的測試

金鑰與密鑰都填好之後,點擊「查詢餘額」按鈕,按下去確認錢包裡有錢就完成了。這時候先別急著發那種內容只有 test 的測試簡訊。

過去做 WooCommerce 簡訊通知最讓人不安的一點,是簡訊送出去之後就斷了線,你不知道客人到底收到沒有。MAAC Go 這邊我們接了它的送達回報 Webhook,簡訊的狀態會一路推回 OrderNotify 的發送紀錄裡:

  • sms.sent:已送交電信商
  • sms.delivered:已送達客戶手機
  • sms.failed:發送失敗,並帶回失敗原因

每一則回報都會用第二步那組簽章金鑰驗簽,通過才更新紀錄。哪一封沒送到、為什麼沒送到,後台一翻就看得到,不用再打電話問簡訊商。

踩到的坑:NCC 防詐內容審查把 test 擋掉了

串接完,我們照慣例發一則內容是 test 的簡訊測試,結果狀態回來是 ncc_blocked。第一時間會以為是設定或程式沒接好,實際上不是——這是 MAAC Go 依 NCC(國家通訊傳播委員會)的防詐簡訊內容審查主動擋下來的。

NCC 對簡訊內容有一套防詐規範,有幾種特徵特別容易被判定為可疑而攔截:

  • 純英文、過短、沒有意義的內容test 正中紅心,看起來就像測試或騷擾訊息,沒有可辨識的發送者與正當用途
  • 內容像詐騙樣板,或夾帶未報備的網址、短連結:這類最容易被防詐系統盯上
  • 沒有可識別的品牌或來源資訊:收件人無從判斷這則簡訊是誰發的

所以這個 ncc_blocked 其實不是 bug,而是防詐機制正常在運作。解法也很單純,測試的時候就別發 test,直接寫一則你正式會發給客人的內容,例如「【你的品牌】您的訂單 #1001 已出貨,感謝購買」,帶上品牌名、訂單編號、正當用途,簡訊就會正常送出。這個小坑先知道,上線前就不會白白慌一場。

結論

這次整合漸強簡訊實際解掉的是這幾件事:

  1. 免綁主機 IP — 用 sk_live_ 金鑰驗證身分,搬主機、換雲端都不必再申請 IP 白名單
  2. 設定只有三步 — 貼 API 金鑰、交換 Webhook 網址與簽章金鑰、查餘額,全程複製貼上
  3. 送達狀態看得到sms.sent / sms.delivered / sms.failed 一路回報進後台,並用 HMAC-SHA256 驗簽
  4. 先避開 NCC 的坑 — 測試別用 test,帶品牌與正當用途的內容才不會被 ncc_blocked 擋下

如果你的 WooCommerce 簡訊通知還卡在簡訊發不出去、一天到晚跟簡訊商喬 IP 白名單,這條路值得試。想看 OrderNotify 完整的通知能力,可以參考產品頁,或回頭讀我們當初串三竹簡訊踩過的除錯血淚

AI 文章延伸

讓 AI 幫你讀這篇文章

選擇平台後會自動帶入閱讀脈絡,快速整理重點、補齊盲點,並延伸到同站相關文章。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料