Dùng cho hồ sơ đặt vé, xin visa và đăng ký tour — cho cá nhân hoặc cả đoàn. Thông tin CCCD/hộ chiếu được mã hóa ngay trên trình duyệt bằng mật khẩu do bạn đặt, trước khi gửi đi.
Form này gửi email bằng EmailJS (miễn phí, không cần backend). Cần cấu hình một lần:
SERVICE_ID.{{contact_name}}, {{email}}, {{phone}}, {{dept}}, {{service_type}}, {{notes}}, {{traveler_count}}, {{encrypted_payload}}, {{ref_id}}. Toàn bộ danh sách hành khách (CCCD + hộ chiếu) nằm trong encrypted_payload dạng mã hóa.{{ref_id}}, {{contact_name}}, {{password}}. Nên xóa email này khỏi hộp thư sau khi đã lưu mật khẩu vào nơi quản lý an toàn.To Email thành {{to_email}} (thay vì gõ một địa chỉ cố định). Có thể đặt thêm Reply To thành {{reply_to}} để trả lời thẳng cho khách. Nếu bỏ trống To Email, EmailJS sẽ báo lỗi khi gửi vì form không còn giá trị mặc định cố định nào cả.PUBLIC_KEY trong phần Account → API Keys.CONFIG ở đầu thẻ <script> bên dưới.Nhập file: hỗ trợ .csv, .xlsx, .xls (xử lý hoàn toàn trên trình duyệt của khách, không upload lên đâu khác). Dùng nút "Tải file mẫu" để lấy đúng cấu trúc cột trước khi điền.
Giới hạn cần biết: giải pháp cho quy mô nhỏ, tài khoản EmailJS miễn phí giới hạn ~200 email/tháng, và một email chỉ chứa được dung lượng giới hạn — với đoàn rất đông (vài chục người), nên kiểm tra email không bị cắt bớt nội dung, hoặc chuyển sang backend riêng.
Dán dữ liệu mã hóa từ email thứ nhất và mật khẩu từ email thứ hai để xem lại thông tin CCCD/hộ chiếu. Toàn bộ việc giải mã diễn ra ngay trên trình duyệt của bạn — không gửi dữ liệu đi đâu cả, kể cả khi không có mạng.
Công cụ này dùng đúng thuật toán mà form nhập liệu đã dùng để mã hóa (AES-GCM 256-bit, khóa suy ra từ mật khẩu qua PBKDF2 150.000 vòng lặp) — không tương thích với dữ liệu mã hóa bằng công cụ khác.
Nếu báo "Sai mật khẩu hoặc dữ liệu không hợp lệ": kiểm tra lại đã copy đầy đủ chuỗi encrypted_payload (không thiếu ký tự đầu/cuối, không dính khoảng trắng hoặc xuống dòng thừa), và mật khẩu đúng là mật khẩu nhận được ở email thứ hai ứng với đúng mã hồ sơ đó.