Skip to main content
Hệ thống của bạn mã hoá số điện thoại và từng tham số bằng khoá công khai RSA của OA. AdFlex chuyển tiếp ciphertext tới Zalo mà không giải mã. Khoá riêng do Zalo lưu giữ.

Luồng hoạt động

Bước 1 — Lấy khoá công khai

Console → Official Account → Thiết lập RSA key. AdFlex tạo khoá cho OA và hiển thị khoá công khai để bạn sao chép.
Tạo lại khoá làm vô hiệu mọi ciphertext mã hoá bằng khoá cũ. Cập nhật khoá trong hệ thống của bạn ngay sau khi tạo lại.

Bước 2 — Mã hoá

1

Chuẩn hoá số điện thoại

Về dạng 84xxxxxxxxx trước khi mã hoá. AdFlex không giải mã được nên không thể chuẩn hoá thay bạn.
2

Mã hoá từng giá trị riêng

Số điện thoại là một lần mã hoá. Mỗi giá trị trong template_data là một lần mã hoá riêng. Tên tham số giữ nguyên, không mã hoá.
3

Encode base64 một dòng

Mỗi trường cho ra 684 ký tự.

Thông số mã hoá

MGF1 dùng SHA-1 trong khi OAEP dùng SHA-256. Khai báo tường minh cả hai tham số thay vì dựa vào mặc định của thư viện.

Hỗ trợ theo ngôn ngữ

Thư viện chuẩn của Node.js và Go bỏ qua tham số MGF1 mà không báo lỗi, sinh ra ciphertext dùng MGF1-SHA256. Request vẫn được AdFlex chấp nhận, tin thất bại khi giải mã. Kiểm chứng bằng một tin thật trước khi triển khai.

Bước 3 — Gửi

POST /api/v1/messages/rsa, tối đa 500 người nhận.
Phản hồi
Phần tử trong results không có trường phone. Đối soát bằng tracking_id.

Giới hạn

  • Tin RSA không có số điện thoại và nhà mạng trong báo cáo
  • Không tra cứu được qua GET /api/v1/messages?phone=…
  • Webhook DLR trả "to": null
  • Mỗi trường mã hoá cho ra 684 ký tự bất kể độ dài gốc. Lô 500 người nhận với 5 tham số tương đương khoảng 2 MB. Khuyến nghị chia lô 100–200.
Chỉ hệ thống của bạn lưu giữ liên kết giữa tracking_id và khách hàng.
Tham khảo thêm về cơ chế mã hoá RSA của ZNS: Zalo for Developers