Trong bài viết này, chúng ta sẽ tìm hiểu quy trình tích hợp cổng thanh toán ZaloPay, từ khâu đăng ký tài khoản, cấu hình API đến xử lý kết quả giao dịch và kiểm tra hoạt động sau khi triển khai.
1. Điều kiện cần chuẩn bị trước khi tích hợp ZaloPay
Trước khi bắt đầu, bạn cần chuẩn bị các thành phần sau:
Bạn có thể tham khảo tài liệu chính thức tại ZaloPay Developer.
2. Đăng ký và lấy thông tin tích hợp ZaloPay
Để kết nối website với hệ thống thanh toán, bạn cần đăng ký dịch vụ với ZaloPay và lấy thông tin ứng dụng sau khi được cấp quyền tích hợp.
Các bước thực hiện cơ bản:
-
Truy cập cổng thông tin dành cho nhà phát triển của ZaloPay.
-
Tìm hiểu điều kiện đăng ký dịch vụ thanh toán dành cho doanh nghiệp hoặc đơn vị kinh doanh.
-
Gửi thông tin đăng ký và hoàn thành các thủ tục được yêu cầu.
-
Nhận thông tin cấu hình ứng dụng, khóa bảo mật và thông số môi trường thử nghiệm.
-
Đọc tài liệu API tương ứng với phương thức thanh toán đã đăng ký.
Thông tin cấu hình cần được lưu trữ an toàn ở phía máy chủ. Không đưa khóa bí mật vào mã JavaScript, HTML hoặc các tệp có thể được người dùng truy cập trực tiếp.
3. Tìm hiểu quy trình thanh toán ZaloPay
Quy trình thanh toán trên website thường gồm các bước chính:
-
Khách hàng chọn sản phẩm hoặc dịch vụ và nhấn thanh toán.
-
Website tạo đơn hàng trong cơ sở dữ liệu với trạng thái chờ thanh toán.
-
Máy chủ gửi yêu cầu tạo giao dịch đến API của ZaloPay.
-
ZaloPay trả về thông tin thanh toán, chẳng hạn URL chuyển hướng hoặc dữ liệu QR tùy phương thức.
-
Khách hàng thực hiện thanh toán trên giao diện ZaloPay.
-
ZaloPay gửi thông báo kết quả giao dịch đến máy chủ website thông qua callback.
-
Website xác thực thông báo, cập nhật trạng thái đơn hàng và hiển thị kết quả cho khách hàng.
Tùy phiên bản API và phương thức thanh toán, tên tham số, cấu trúc dữ liệu và địa chỉ endpoint có thể khác nhau. Vì vậy, cần sử dụng đúng tài liệu dành cho ứng dụng của bạn.
4. Tạo đơn hàng thanh toán trên website
Sau khi khách hàng nhấn nút thanh toán, backend cần tạo đơn hàng và gửi yêu cầu đến API tạo đơn hàng của ZaloPay.
Thông tin gửi đi thường bao gồm:
Trước khi gửi yêu cầu, máy chủ cần tính chữ ký bằng khóa bí mật và thuật toán được quy định trong tài liệu kỹ thuật. Các trường tham gia ký phải đúng thứ tự và định dạng.
Sau khi nhận phản hồi, backend kiểm tra mã kết quả. Nếu yêu cầu tạo đơn thành công, hệ thống lấy URL thanh toán hoặc dữ liệu cần thiết để chuyển khách hàng đến bước thanh toán tiếp theo.
Lưu ý: Không nên tin tưởng số tiền do trình duyệt gửi lên. Backend cần tự tính tổng tiền từ dữ liệu đơn hàng trong cơ sở dữ liệu để tránh bị sửa giá trị thanh toán.
5. Chuyển khách hàng đến giao diện thanh toán
Khi tạo đơn hàng thành công, website sử dụng URL do ZaloPay trả về để chuyển khách hàng đến giao diện thanh toán.
Tùy phương thức được hỗ trợ, khách hàng có thể:
Website nên hiển thị rõ mã đơn hàng, tổng tiền và hướng dẫn thanh toán trước khi chuyển hướng. Đồng thời, cần lưu mã giao dịch của ZaloPay cùng mã đơn hàng nội bộ để thuận tiện đối soát.
Nếu không tạo được giao dịch, hệ thống cần thông báo lỗi dễ hiểu và không tự động đánh dấu đơn hàng là đã thanh toán.
6. Xử lý callback khi thanh toán thành công
Callback là cơ chế để máy chủ ZaloPay gửi thông báo về máy chủ website sau khi giao dịch đạt trạng thái tương ứng. Đây là bước quan trọng để xác nhận kết quả thanh toán một cách đáng tin cậy.
Khi nhận callback, backend cần thực hiện các công việc sau:
-
Nhận dữ liệu giao dịch từ ZaloPay.
-
Kiểm tra chữ ký hoặc MAC bằng khóa bí mật và thuật toán đúng theo tài liệu API.
-
Đối chiếu mã giao dịch, mã đơn hàng và số tiền với dữ liệu đã lưu.
-
Xác định trạng thái thanh toán theo mã kết quả hợp lệ.
-
Cập nhật trạng thái đơn hàng trong cơ sở dữ liệu.
-
Trả về phản hồi theo đúng định dạng mà ZaloPay yêu cầu.
Chỉ cập nhật đơn hàng thành công khi dữ liệu đã được xác thực. Không nên dựa vào việc khách hàng quay lại website hoặc thông báo trên trình duyệt để xác nhận đã nhận được tiền.
Ngoài ra, callback có thể được gửi lại khi xảy ra lỗi kết nối. Vì vậy, cần xử lý theo hướng idempotent: một giao dịch đã được xác nhận thành công không được cộng tiền, kích hoạt dịch vụ hoặc cấp quyền tải xuống nhiều lần.
7. Hiển thị kết quả thanh toán cho khách hàng
Sau khi hoàn tất hoặc rời khỏi giao diện thanh toán, khách hàng có thể được chuyển về trang kết quả của website.
Trang này nên hiển thị các thông tin cơ bản:
Cần phân biệt rõ các trạng thái như chờ thanh toán, thành công, thất bại hoặc cần kiểm tra thêm. Việc khách hàng được chuyển hướng về website không đồng nghĩa giao dịch đã thành công.
Nếu callback chưa được ghi nhận, website có thể truy vấn trạng thái giao dịch qua API theo hướng dẫn của ZaloPay trước khi đưa ra kết luận cuối cùng.
8. Kiểm tra trạng thái giao dịch và xử lý lỗi
Trong thực tế, callback có thể bị gián đoạn do lỗi mạng hoặc máy chủ tạm thời không hoạt động. Vì vậy, website nên có cơ chế kiểm tra trạng thái giao dịch bằng API truy vấn đơn hàng.
Một số trường hợp cần xử lý:
Nên lưu nhật ký giao dịch gồm mã đơn hàng, mã giao dịch, thời gian, trạng thái và mã lỗi. Không ghi khóa bí mật hoặc dữ liệu nhạy cảm vào log.
9. Kiểm thử trước khi đưa website vào hoạt động
Trước khi sử dụng môi trường thanh toán thật, hãy kiểm thử đầy đủ các tình huống trên môi trường thử nghiệm do ZaloPay cung cấp.
Danh sách kiểm tra cơ bản:
Sau khi kiểm thử đạt yêu cầu và hoàn tất các bước phê duyệt cần thiết, bạn có thể chuyển sang môi trường thật theo hướng dẫn của ZaloPay.
10. Những lưu ý bảo mật khi tích hợp ZaloPay
Để hạn chế rủi ro trong quá trình vận hành, cần chú ý các nguyên tắc sau: