Trang chủ/ Kiến thức/ Tích hợp thanh toán điện tử: Những điều developer cần biết trước khi bắt đầu

Kỹ thuật

Tích hợp thanh toán điện tử: Những điều developer cần biết trước khi bắt đầu

· 18/03/2025

Thanh toán điện tử nghe có vẻ đơn giản — chỉ là gọi một API rồi nhận callback. Nhưng bất cứ developer nào đã làm production payment system đều biết: mọi thứ phức tạp hơn nhiều ở lớp thứ 2 và thứ 3.

Các mô hình tích hợp chính tại Việt Nam

Hiện tại có 4 luồng chính cần hiểu:

  • VietQR: QR tĩnh/động dựa trên chuẩn EMVCo, xác nhận qua Napas. Phù hợp cho POS và invoice. Lưu ý: timeout mặc định 5 phút, cần handle expiry rõ ràng.
  • VNPAY / VNPAY-QR: Gateway có redirect flow. Cần whitelist IP merchant, verify checksum SHA512 cho mọi IPN callback — nhiều dev bỏ qua bước này và bị tấn công replay.
  • MoMo: Direct capture API và in-app deeplink cho mobile. Token-based, có thêm extra data field để truyền metadata.
  • Stripe (cho quốc tế): Payment Intent model với webhook. Cần handle idempotency key để tránh double-charge khi network retry.

3 lỗi làm chúng tôi mất nhiều giờ nhất

1. Không xử lý pending state: Giữa lúc user hoàn tất thanh toán và IPN về đến server của bạn có thể là 0.5 giây đến 30 giây. Trong khoảng thời gian này, order không nên ở trạng thái “failed” hay “success” — cần có state “pending_payment” riêng, hoặc user sẽ thấy lỗi và bấm thanh toán lại.

2. Tin vào redirect return URL: Return URL chỉ là UX — user có thể đóng tab trước khi redirect về. Toàn bộ logic xử lý đơn phải nằm trong IPN/webhook handler, không phải return URL callback.

3. Test chỉ trên sandbox: Sandbox của các gateway Việt Nam thường không mô phỏng đúng timeout, network error, và duplicate notification. Cần staging environment với real test card/account để catch edge cases trước go-live.

Checklist trước khi go-live

  • ☑ Verify signature/checksum trên mọi IPN callback
  • ☑ Idempotency check — không process cùng một transaction_id hai lần
  • ☑ Handle timeout và network failure — retry với exponential backoff
  • ☑ Log toàn bộ raw request/response (masked) cho debugging
  • ☑ Reconciliation job hàng ngày đối chiếu với portal của gateway
  • ☑ Alert khi IPN bị delay >2 phút hoặc failure rate >0.5%

Payment system lỗi = doanh thu bị treo. Đầu tư thêm 2–3 ngày để làm đúng ngay từ đầu luôn rẻ hơn debug production lúc 2 giờ sáng.

Bài viết liên quan

Tiếp tục khám phá insight về công nghệ

Xem tất cả

Tại sao mọi thương hiệu bán hàng đa kênh đều cần OMS vào năm 2025

25/02/2025

AI trong quy trình phát triển phần mềm: Thực tế sau 18 tháng áp dụng tại Eggstech

14/01/2025

White-label phần mềm là gì? Khi nào nên dùng thay vì tự xây từ đầu?

05/12/2024

Outsourcing vs In-house: Khi nào nên thuê đội ngũ phát triển bên ngoài?

10/04/2025

Gọi ngay Liên hệ