
Bài viết dành cho các bạn kĩ thật lập trình muốn kết nối API Zalo OA
Mối quan hệ giữa Zalo Official Account (OA) và Ứng dụng (App) là nền tảng kỹ thuật then chốt cho phép doanh nghiệp tự động hóa tương tác và quản lý. Theo cơ chế ủy quyền chuẩn OAuth 2.0, Zalo OA đóng vai trò là bên cung cấp sự ủy quyền chính thức, gán các quyền (Scope) cần thiết để Ứng dụng (đóng vai trò là Client ID của hệ thống) có thể thay mặt OA thực hiện các chức năng cốt lõi. Các chức năng này bao gồm gửi tin nhắn mẫu (ZNS), truy vấn hồ sơ người dùng, và quản lý các hoạt động tương tác khác thông qua Zalo API, từ đó đảm bảo tính bảo mật và duy trì sự tuân thủ các quy định của nền tảng.
Các tính năng dành cho DEV:
- Lấy danh sách người dùng: https://openapi.zalo.me/v3.0/oa/user/getlist
- Lấy thông tin chi tiếc một người dùng: https://openapi.zalo.me/v3.0/oa/user/detail
Và còn nhiều tính năng khác nữa bạn có thể tham khảo tài liệu Zalo API gốc tại: https://developers.zalo.me/docs/official-account/bat-dau/kham-pha
Tuy nhiên trước khi sử dụng được các API đó bạn phải kết nối thành công 2 phần này lại với nhau vì vậy hãy xem chi tiết bài viết này
Vui lòng xem cách liên kết liên kết ứng dụng APP và Zalo OA Doanh Nghiệp bên dưới.
1. Tầm quan trọng của việc Liên kết Ứng dụng (App) và Zalo OA Doanh Nghiệp
Để các lập trình viên (Developers) có thể truy cập và sử dụng trọn vẹn các Zalo API (đặc biệt là các API liên quan đến Messaging, User Profile, và OA Management), việc liên kết giữa Ứng dụng (App) và Zalo Official Account (OA Doanh Nghiệp) là một bước tiên quyết và bắt buộc.
1.1 Vai trò của Ứng dụng (App) và OA:
- Ứng dụng (App): Được đăng ký trên Zalo Developer Platform, ứng dụng đóng vai trò là Client ID (hoặc Client App) đại diện cho hệ thống kỹ thuật (frontend/backend) của bạn. Nó là thực thể kỹ thuật gửi yêu cầu (Request) đến Zalo.
- Zalo OA Doanh Nghiệp: Là đại diện chính thức của thương hiệu, chứa đựng dữ liệu người dùng (Follower) và các quyền kinh doanh quan trọng (như quyền gửi tin nhắn mẫu).
Link tạo ứng dụng Zalo APP: https://developers.zalo.me/
Link quản lí tài khoản Zalo OA: https://oa.zalo.me/manage/oa
1.2 Cơ chế Ủy quyền (Authorization) OAuth 2.0:
Quá trình liên kết này thiết lập mối quan hệ ủy quyền (Authorization) theo chuẩn OAuth 2.0. Ứng dụng của bạn cần được gán quyền (Permission/Scope) để truy cập dữ liệu và thực hiện hành động nhân danh OA.
Sau khi liên kết và được cấp quyền thành công, ứng dụng có thể thực hiện quy trình OAuth để xin cấp access_token (Token truy cập). access_token này chính là chìa khóa cho phép hệ thống backend của bạn gửi các yêu cầu API an toàn đến Zalo, ví dụ:
- Gửi tin nhắn Zalo OA theo mẫu (OA Message/Template Message) tới người dùng.
- Truy vấn thông tin chi tiết của người theo dõi (Follower Profile).
- Cập nhật thông tin hồ sơ OA.
Việc liên kết đảm bảo rằng mọi tương tác API đều được thực hiện dưới danh nghĩa và quyền hạn chính thức của Doanh Nghiệp, duy trì tính bảo mật và tuân thủ quy định của nền tảng Zalo.

Kết quả sau khi liên lết thành công 2 chiều
2. Các bước thực hiện
Trước khi thực hiện các bước bên dưới bạn cần chắc chắn Doanh Nghiệp bạn có Zalo OA đã xác thực, đang hoạt động rồi nhé.

Link Zalo OA Công Ty
Nếu chưa có, bạn có thể Đăng Kí Tại Đây https://zalo.cloud/oa/pricing
2.1 Tạo ứng dụng Zalo APP cho người mới xem bài viết bên dưới.
Cách tạo ứng dụng Zalo for Developers dành cho nhà phát triển Website
2.2 Cấp quyền từ OA cho ứng dụng
Danh sách các quyền mà OA cho phép ứng dụng truy cập

Bạn có thể chọn toàn bộ hoặc bỏ bớt tùy vào mục đích sử dụng hoặc chia sẻ cho ứng dụng.

Thêm Url Callback nếu cần thiết


Lúc này chúng ta vừa mới liên kết được một phía bên APP
Lưu ý: Ở bước tiếp theo, hầu hết những bạn mới làm theo hướng dẫn từ ChatGPT hay các công cụ AI thường cảm thấy rối và quay vòng vòng. Dựa trên kinh nghiệm thực tế, bạn chỉ cần làm theo tôi bằng một trong hai cách dưới đây là có thể dễ dàng liên kết ngược từ OA về APP Zalo.
Cách 1: Nhanh hơn

Sao chép đường dẫn trên, mở tab trình duyệt mới truy cập chạy nó.

Sau khi cấp quyền xong, sẽ tự động quay lại URL callback khai báo, không cần làm gì thêm
Cách 2: Trực quan hơn bằng cách lấy Access Token
Truy cập vào: https://developers.zalo.me/
Làm theo Video sau:

3. Kiểm tra kết quả
Để kiểm tra kết quả bạn quay về Zalo OA: cụ thể là link https://oa.zalo.me/manage/apphavepermission

Nếu thấy APP xuất hiện là thành công
Vậy là chỉ với vài bước đơn giản theo hướng dẫn trên, bạn đã có thể liên kết ngược từ OA về APP Zalo một cách nhanh chóng và chính xác. Hãy thử ngay và trải nghiệm sự tiện lợi mà phương pháp này mang lại. Nếu bạn gặp khó khăn, đừng ngần ngại quay lại các bước trên – thực hành vài lần, bạn sẽ thấy mọi thứ trở nên dễ dàng hơn rất nhiều. Chúc bạn thành công!
4. Mở rộng cho các bạn nếu cần demo Code WordPress sử dụng API trên

Qui trình các bước gọi API ZALO
Sao chép và dùng đoạn code sau trong functuons.php
<?php
define('WEB366_ZALO_APP_ID', 'your_app_id');
define('WEB366_ZALO_APP_SECRET', 'your_app_secret');
$access_token = '';
$refresh_token = '';
/**
* Lấy thông tin chi tiết 1 user (Zalo OA API v3)
* Endpoint: GET https://openapi.zalo.me/v3.0/oa/user/detail?data={"user_id":"..."}
*
* Trả về: mảng (decoded JSON) hoặc WP_Error nếu có lỗi
*/
function zalo_get_user_info($user_id, $access_token) {
if (empty($user_id)) {
return new WP_Error('missing_user_id', 'Thiếu user_id để lấy thông tin người dùng.');
}
// Endpoint v3 chuẩn
$api_base = 'https://openapi.zalo.me/v3.0/oa/user/detail';
// Dữ liệu phải nằm trong query param "data" dưới dạng JSON
$payload = ['user_id' => (string)$user_id];
// Tạo URL: data should be JSON-string but URL-encoded
$url = $api_base . '?data=' . rawurlencode(wp_json_encode($payload));
// Gửi GET với header access_token
$response = wp_remote_get($url, [
'headers' => [
'access_token' => $access_token,
'Content-Type' => 'application/json',
],
'timeout' => 15
]);
if (is_wp_error($response)) {
return $response;
}
$body_raw = wp_remote_retrieve_body($response);
// Try decode JSON
$body = json_decode($body_raw, true);
if (null === $body) {
// Không phải JSON — trả raw cho debug
return new WP_Error('invalid_response', 'Response is not valid JSON', $body_raw);
}
// Một số lỗi phổ biến của Zalo: -216 token header, -240 api v2 shutdown, -200 method not supported...
if (isset($body['error']) && $body['error'] !== 0) {
// Nếu lỗi do token header (-216) hoặc token hết hạn, trả WP_Error có detail
return new WP_Error('zalo_api_error', $body['message'] ?? 'Zalo API error', $body);
}
return $body; // mảng đã decode
}
// Gọi hàm => zalo_get_user_info($user_id, $access_token);
Nếu bạn chưa thực hiện đúng các bước trên hoặc gặp phải vấn đề chưa giải quyết được, và đặc biệt nếu bạn là doanh nghiệp muốn tích hợp các tính năng Zalo OA vào website WordPress, hãy liên hệ với chúng tôi – Công ty TBAY – đội ngũ chuyên nghiệp sẽ hỗ trợ bạn hoàn thành nhanh chóng và bảo hành tốt nhất.
Thông tin liên hệ:
- Zalo: 0852 080 383
- Email: hotro@tbay.vn
- Website: website366.com
- Địa chỉ: VP: 82A-82B Dân Tộc, Phường Tân Sơn Nhì, Quận Tân Phú, TP. HCM
Chúng tôi luôn sẵn sàng đồng hành cùng bạn để tối ưu hóa trải nghiệm Zalo OA trên website.