WhatsApp Business API 快速上手指南:帳號申請與環境準備
一、引言
在正式向用戶發送第一條 WhatsApp 訊息之前,紮實的帳號與環境準備至關重要。只有完成了企業資格驗證、號碼綁定、憑證獲取與本地測試環境建置,才能確保後續的訊息發送與接收工作高效、穩定並具備可監控性。本文將手把手教你從零開始,快速完成 WhatsApp Business API 的環境建置與帳號配置,助你在最短時間內發出第一條訊息。
二、註冊 Facebook Business Manager 與申請 WABA
2.1 建立或登入 Facebook Business Manager
造訪 business.facebook.com,使用企業管理員帳號登入或新增 Business Manager。
在「業務設定」中,填寫企業名稱、營業執照資訊及聯絡人信箱。
完成信箱驗證後,即可進入後台管理頁面。
2.2 提交企業資料與資格審核要點
• 企業資料完整性:營業執照、組織機構代碼證或等效文件需掃描檔清晰,資訊與填寫一致。
• 業務場景說明:簡要描述使用 WhatsApp API 的用途(如客服通知、行銷推播),有助於審核人員快速通過。
• 多管理員協作:建議新增至少兩名管理員,可降低因人員異動導致的權限中斷風險。
2.3 WABA(WhatsApp Business Account)申請流程
在「業務設定」→「WhatsApp 帳號」中點擊「新增」。
選擇「新建 WhatsApp Business Account」,填寫企業資訊並提交。
等待 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 hashlibimport 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 除錯
匯入官方 Collection:從 Facebook 官方文件下載 WhatsApp Business API Postman Collection。
配置環境變數:設定
base_url
(如https://graph.facebook.com/v16.0
)、phone_number_id
、access_token
與app_secret_proof
。執行範例請求:
獲取號碼列表:
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!" }
}
查看回應與回呼:在「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 集成以及規模化營運奠定了堅實基礎。