Bài viết này khởi đầu chuỗi bài viết về sử dụng Zalo API để phát triển ứng dụng tương tác với người dùng qua Zalo. Tôi lựa chọn ngôn ngữ PHP do tính phổ biến của nó.
Tạo ứng dụng mới
Truy cập trang Zalo For Developer để thêm ứng dụng mới.
Sau khi điền Tên hiển thị của ứng dụng, chọn Danh mục và Mô tả thì ta ấn nút Tạo ID ứng dụng, website chuyển về giao diện Bảng điều khiển.
Tại đây bạn có thể đổi tên ứng dụng, cấu hình Miền ứng dụng (vô tác dụng, dù trên lý thuyết cái này là để hỗ trợ CORS) và upload icon cho ứng dụng.
Thông tin quan trọng ở giao diện này là ID ứng dụng và Khóa bí mật của ứng dụng. Khóa bí mật được sử dụng trong quá trình lấy access token.
Tiếp theo là bước xác thực domain với Zalo, Domain cần xác thực là domain trỏ đến app.
Tuy nhiên bạn có thể không cần bước này nếu không dùng đến Webhook.
Chọn Xác thực domain ở cột bên trái. Sau đó nhập domain cần xác thực vào ô “Kiểm tra domain” rồi ấn Kiểm tra.
Ban đầu Zalo sẽ popup thông bạn chưa xác thực. Ấn vào nút “Xác thực ngay” để tiến hành quá trình cài đặt xác thực.
Bạn chọn cách nào trong các cách Zalo đưa ra cũng được. Lựa chọn 2 – tải một file HTML lên là đơn giản nhất nếu không thích đụng đến code hoặc tạo TXT record trên DNS.
Tải file HTML theo hướng dẫn trong Bước 1 rồi upload lên thư mục gốc của app. Sau đó click thử vào link ở Bước 3 để xem file đã tải lên đúng chưa. Cuối cùng nếu OK thì ấn nút Kiểm tra domain là xong.
Tích hợp đăng nhập Zalo (Social API)
Đây là bước cấu hình để lấy mã xác thực oAuth2 của người dùng cho phép sử dụng Social API.
Nếu bạn chỉ dùng Official Account API mà không sử dụng Social API thì có thể bỏ qua bước này.
Vào mục Đăng nhập ở cột bên trái, ở đây tôi chọn nền tảng Web để làm app của mình.
Nhập Home URL là đường link đến trang chủ của app; Callback URL là đường link sẽ được redirect về khi yêu cầu mã xác thực oAuth2 từ Zalo.
Gửi xét duyệt quyền sử dụng API của ứng dụng (Official Account)
Thiết lập này dành cho Official Account API, Zalo Notification Service, Article API và Shop API. Nếu bạn chỉ dùng Social API thì có thể bỏ qua bước này.
Truy cập ở cột bên trái mục Sản phẩm > Official Account > Thiết lập chung.
Nhập Callback URL là đường link được redirect về khi yêu cầu mã xác thực oAuth2 từ Zalo. URL này được sử dụng trong quá trình cấp Access Token sau này. Lưu ý đường dẫn này có domain phải trùng với domain đã khai báo trong Miền ứng dụng.
Bỏ qua các ô Code Challenge và State, vì 2 ô này chỉ dùng để tạo Đường dẫn yêu cầu cấp quyền bằng tay ở phía trên. Sau này chúng ta sẽ sinh 2 mã này cùng đường dẫn trên bằng mã PHP khi thực hiện lấy Access Token.
Bạn có thể sử dụng các mã dưới đây để thử nghiệm! Mã sinh ra hoàn toàn ngẫu nhiên và tôi không lưu chúng làm gì!
Chọn các quyền yêu cầu được cấp từ OA. Dù hướng dẫn của Zalo có nói về vấn đề hạn chế xét duyệt nhưng tại thời điểm hiện tại, tôi thấy việc cho phép gần như là ngay lập tức, thậm chí là khi bạn chọn sử dụng tất cả các API.
Tuy nhiên, tôi khuyên bạn không nên chọn tất cả trong phiên bản Production vì lý do an toàn. Càng có sự hạn chế, ứng dụng của bạn sẽ càng được bảo vệ với bên ngoài.
Liên kết với một Zalo Official Account để dùng Webhook
Thiết lập này dành cho Official Account API, Zalo Notification Service, Article API và Shop API. Nếu bạn dùng Social API thì có thể bỏ qua bước này. Đây là bước cần thiết để xác định Webhook của Official Account nào được trả về.
Tại đây bạn hãy chọn một Official Account bạn quản lý và ấn nút Liên kết. Một popup sẽ hỏi bạn có đồng ý với việc liên kết này không, hãy Đồng ý.
Sau khi liên kết với một Official Account, giao diện sẽ hiển thị cấu hình liên kết với Official Account API.
Truy cập vào mục Webhook ở cột bên trái rồi ấn nút Thay đổi. Một popup hiện ra, hãy điền URL của Webhook vào ô Webhook URL.
Lưu ý: URL của Webhooks phải thực sự tồn tại và trả về HTTP Code 200 (dù hoàn toàn không làm gì). Ban đầu bạn chỉ cần để file PHP trống là cũng OK.
Sau khi xác nhận thay đổi thành công, giao diện webhook hiện ra. Bạn có thể chọn các sự kiện sẽ được Webhook trả về ở mục Danh sách sự kiện webhook.
Ngoài ra, bạn hãy lưu ý thông tin OA Secret Key đang bị giấu – ấn vào biểu tượng con mắt để xem.
OA Secret Key
được sử dụng trong Webhooks để verify thông tin nhận được, phòng trường hợp bị inject dữ liệu giả từ bên ngoài. Cách dùng thông tin này sẽ được đề cập ở bài viết về cách nhận các sự kiện từ Zalo webhook.