WhatsApp Business API 快速上手指南:帳號申請與環境準備

一、引言

在正式向用戶發送第一條 WhatsApp 訊息之前,紮實的帳號與環境準備至關重要。只有完成了企業資格驗證、號碼綁定、憑證獲取與本地測試環境建置,才能確保後續的訊息發送與接收工作高效、穩定並具備可監控性。本文將手把手教你從零開始,快速完成 WhatsApp Business API 的環境建置與帳號配置,助你在最短時間內發出第一條訊息。

二、註冊 Facebook Business Manager 與申請 WABA

2.1 建立或登入 Facebook Business Manager

  1. 造訪 business.facebook.com,使用企業管理員帳號登入或新增 Business Manager。

  2. 在「業務設定」中,填寫企業名稱、營業執照資訊及聯絡人信箱。

  3. 完成信箱驗證後,即可進入後台管理頁面。

2.2 提交企業資料與資格審核要點

企業資料完整性:營業執照、組織機構代碼證或等效文件需掃描檔清晰,資訊與填寫一致。
業務場景說明:簡要描述使用 WhatsApp API 的用途(如客服通知、行銷推播),有助於審核人員快速通過。
多管理員協作:建議新增至少兩名管理員,可降低因人員異動導致的權限中斷風險。

2.3 WABA(WhatsApp Business Account)申請流程

  1. 在「業務設定」→「WhatsApp 帳號」中點擊「新增」。

  2. 選擇「新建 WhatsApp Business Account」,填寫企業資訊並提交。

  3. 等待 Facebook 審核,通常 1–3 個工作天可完成。

三、手機號碼綁定與審核

3.1 選擇並新增業務專用手機號碼

  • 建議使用企業官方號碼或專門為客服/行銷申請的新號碼。

  • 確保該號碼未被其他 WhatsApp 帳號註冊。

3.2 驗證方式:簡訊/語音驗證碼

  • 系統會自動發送六位數驗證碼至所選手機號碼。

  • 若簡訊未達,可切換「語音電話」方式接聽驗證碼。

3.3 提高審核通過率的小撇步

穩定網路環境:驗證碼發送與接收過程需保持網路暢通。
號碼準備:避免使用虛擬電話或臨時號碼,選擇具備長期使用意願的號段。
錯誤處理:若連續多次輸入錯誤,可等待 15 分鐘後再嘗試,或聯繫 Facebook 支援。

四、獲取 API 憑證

4.1 Access Token:短期 vs. 長期

  • 短期 Token:有效期約為 1 小時,適合除錯階段使用。

  • 長期 Token:有效期約為 60 天,可透過 API 自動刷新,建議於正式環境使用。

# 獲取短期 Token 範例(使用 curl)

curl -X GET \

"https://graph.facebook.com/v16.0/oauth/access_token?grant_type=client_credentials&client_id={APP_ID}&client_secret={APP_SECRET}"

4.2 App Secret 與 App Secret Proof

  • App Secret:在 Facebook 開發者後台取得,用於簽名與加密。

  • App Secret Proof:對 Access Token 進行 HMAC-SHA256 簽名,可有效防止中間人攻擊。

import hashlib

import hmac

app_secret = b'your_app_secret'

token = b'your_access_token'

proof = hmac.new(app_secret, msg=token, digestmod=hashlib.sha256).hexdigest()

print(proof)

4.3 配置環境變數與安全儲存範例

  • 在開發機器或 CI/CD 中,透過環境變數管理憑證:

    export WA_APP_ID=your_app_id

    export WA_APP_SECRET=your_app_secret

    export WA_TOKEN=your_long_lived_token

  • 正式環境可結合 HashiCorp Vault、AWS Secrets Manager 等進行托管,避免明文儲存。

五、開發與測試環境建置

5.1 Postman 除錯

  1. 匯入官方 Collection:從 Facebook 官方文件下載 WhatsApp Business API Postman Collection。

  2. 配置環境變數:設定 base_url(如 https://graph.facebook.com/v16.0)、phone_number_idaccess_tokenapp_secret_proof

  3. 執行範例請求

    • 獲取號碼列表:GET {{base_url}}/{{phone_number_id}}/phone_numbers?access_token={{access_token}}

    • 發送文字訊息:POST {{base_url}}/{{phone_number_id}}/messages,在 Body 中填寫:

      {

      "messaging_product": "whatsapp",

      "to": "8613712345678",

      "type": "text",

      "text": { "body": "Hello from Postman!" }

      }

  4. 查看回應與回呼:在「Webhooks」頁面配置並測試訊息接收。

5.2 程式碼範例:Node.js 與 Java

Node.js(Express)

const express = require('express');

const axios = require('axios');

const app = express();

app.use(express.json());

app.post('/send', async (req, res) => {

const { to, message } = req.body;

try {

const response = await axios.post(

`https://graph.facebook.com/v16.0/${process.env.PHONE_NUMBER_ID}/messages`,

{

messaging_product: "whatsapp",

to,

type: "text",

text: { body: message }

},

{

headers: {

Authorization: `Bearer ${process.env.WA_TOKEN}`

}

}

);

res.json(response.data);

} catch (err) {

res.status(500).json(err.response.data);

}

});

app.listen(3000, () => console.log('Server running on port 3000'));

Java(HttpClient)

import java.net.URI;

import java.net.http.HttpClient;

import java.net.http.HttpRequest;

import java.net.http.HttpResponse;

public class WhatsAppSender {

public static void main(String[] args) throws Exception {

String token = System.getenv("WA_TOKEN");

String url = "https://graph.facebook.com/v16.0/"

+ System.getenv("PHONE_NUMBER_ID") + "/messages";

String payload = """

{

"messaging_product": "whatsapp",

"to": "8613712345678",

"type": "text",

"text": { "body": "Hello from Java!" }

}

""";

HttpRequest request = HttpRequest.newBuilder()

.uri(URI.create(url))

.header("Authorization", "Bearer " + token)

.header("Content-Type", "application/json")

.POST(HttpRequest.BodyPublishers.ofString(payload))

.build();

HttpClient client = HttpClient.newHttpClient();

HttpResponse<String> response =

client.send(request, HttpResponse.BodyHandlers.ofString());

System.out.println(response.body());

}

}

5.3 號碼驗證腳本(LuckData Call‑out)

在測試階段,向未註冊或停用的號碼發送訊息極易導致失敗或觸發風控。借助 LuckData WhatsApp 號碼驗證 API,可在發送前批次篩選有效號碼,最大化保護測試環境穩定性。

LuckData 號碼驗證範例

import requests

headers = {'X-Luckdata-Api-Key': 'your_free_key'}

payload = {'phone_number': '8613712345678'}

response = requests.post(

'https://luckdata.io/api/whatsapp-number-validator/rltsvuouydi1',

headers=headers,

json=payload

)

print(response.json())

  • 免費額度:100 積分/月,每秒 1 請求;

  • 升級方案:Basic(5000 積分/月,5 QPS)、Pro(15000 積分/月,10 QPS)、Ultra(100000 積分/月,15 QPS)。

六、總結

本文從建立 Facebook Business Manager、申請 WABA、綁定手機號碼與通過審核,到獲取 Access Token、App Secret、建置本地 Postman 與程式碼測試環境,逐步說明了 WhatsApp Business API 的準備流程。在測試階段,透過呼叫 LuckData 號碼驗證 API 預檢目標號碼,能夠進一步確保環境的穩定性與測試效率。完成以上準備後,你已具備了發送與接收 WhatsApp 訊息的全部基礎能力,為後續的訊息模板管理、Webhook 集成以及規模化營運奠定了堅實基礎。

Articles related to APIs :