登录开始免费试用
Meta Tech Provider

从 WooCommerce 发送 WhatsApp 订单更新

为订单事件创建一个 WooCommerce Webhook,指向一个接收端,例如 n8n 工作流或一个小型 PHP 路由。接收端验证 WooCommerce 的签名,确认客户同意接收 WhatsApp 消息,然后使用已连接号码的号码 ID 和访问令牌,通过 Cloud API 发送已获批准的模板。

5 failures

WooCommerce 在连续投递失败超过五次后,会停用该 Webhook。

X-WC-Webhook-Signature

请求头携带使用 Webhook 密钥对负载生成的 HMAC-SHA256,并经 base64 编码。

Templates only

在客户服务窗口之外,只能发送预先获批的模板消息。

WooCommerce 订单如何触发 WhatsApp 消息?

通过 WooCommerce Webhook 和一个接收端。在 WooCommerce 中依次进入“设置”“高级”“Webhook”,添加一个 Webhook,选择订单主题(如订单已创建或订单已更新),并填写投递 URL 和密钥。此后每当事件发生,WooCommerce 就会把订单以 JSON 形式发送到该 URL。

负载是固定的,因此无法直接指向 Cloud API。中间需要一个接收端:n8n 的 Webhook 节点、店铺自有 PHP 中的一个路由,或任何小型服务。它读取订单,取出客户的电话号码和消息所需的信息,然后向已连接号码的 Cloud API 消息端点发出一次 HTTPS 请求,并以该号码的访问令牌作为 Bearer 凭证。

order.updated 主题并不对应某一个状态,因此接收端应读取订单的 status 字段,并在每次出现它关心的状态转换时只发送一次。WooCommerce 默认通过 wp-cron 在后台投递,所以消息可能比订单晚一小段时间到达。

1WooCommerceOrder webhook with a secret
2ReceiverChecks the signature and consent
3Cloud APISends the approved template
4CustomerReplies land in the WhatsApp Business app

接收端如何确认请求来自店铺?

靠 WooCommerce 的签名。每次投递都带有 X-WC-Webhook-Signature 请求头,其值是用您在 Webhook 上设置的密钥,对原始负载计算出的 HMAC-SHA256,并经 base64 编码。接收端对收到的请求体计算同样的哈希并比对,不匹配的一律拒绝。

这是店铺自己的密钥,因此与 Meta 对传入 WhatsApp 消息的签名不同,它可以被验证。请以恒定时间比较,并且要在任何框架解析之前对原始请求体做哈希,因为重新编码的 JSON 会产生不同的哈希。

请尽快返回 2xx。WooCommerce 会把不是 2xx、301 或 302 的任何响应记为失败,连续失败超过五次后就会停用该 Webhook。接收端因部署而停机,或因等待 Meta 响应而过慢,都可能在无人察觉的情况下让店铺的消息停发。

店铺可以发送什么,何时发送?

只要是店铺先发起,就必须使用已获批准的模板。Meta 的 24 小时客户服务窗口只会在客户给该号码发消息时开启,所以订单确认或发货更新属于商家发起,自由文本会被拒绝。请为每种更新创建一个 Utility 类模板,等待批准,然后按名称和语言发送,并把订单号等详细信息作为参数。

Meta 还要求取得同意:客户提供了号码,并同意通过 WhatsApp 接收该商家的消息。在结账时勾选并记录于订单的复选框是最简单的凭证,接收端应在发送前检查它。

客户一旦回复,对话就是普通的 Coexistence。回复会出现在店铺手机的 WhatsApp Business 应用中,窗口对自由文本开放,团队照常在应用中回复。

常见错误

  • 先调用 Cloud API,再响应 WooCommerce。发送缓慢或失败都会计入该 Webhook 的失败次数,超过五次就会被停用。
  • 对解析后的 JSON 做哈希,而不是对原始请求体做哈希。签名永远对不上,每一次真实的投递都会被拒绝。
  • 每次收到 order.updated 投递都发送。该主题并不对应某一个状态,如果不记录哪次状态转换已发过消息,客户就会收到重复的消息。
使用 EasyCoexistence 完成这些操作

在 easycoexistence.com 连接店铺的号码,并从控制台获取号码 ID 和访问令牌,交给接收端使用。每个号码每月 US$ 9 起,号码越多越便宜,最低降至 US$ 1,前 3 天免费。

常见问题

我需要为此安装 WordPress 插件吗?

不需要。WooCommerce 内置的 Webhook 加一个接收端就够了,接收端可以是同一个 PHP 应用中的一个路由。

订单消息的费用由谁支付?

Meta 直接向商家在其自己的 WhatsApp Business 账户上收取消息费用,EasyCoexistence 绝不加价。

团队还能继续使用手机吗?

可以。Coexistence 让 WhatsApp Business 应用在店铺的号码上继续工作,店铺发送的模板也会显示在对话中。

如果 Webhook 被停用了怎么办?

先修复接收端,然后在 WooCommerce 中把该 Webhook 的状态改回“启用”。它停用期间创建的订单不会触发消息。

继续阅读

准备开始了吗?

几分钟即可设置 WhatsApp Coexistence,而不是几个月。应用会继续在手机上运行。

开始免费试用

验证时间

WooCommerce 订单更新通过 WhatsApp 发送