Checkout

Luồng chuẩn: tạo đơn → redirect sang cổng → IPN server-to-server xác nhận tiền → trang kết quả chỉ đọc DB.

Tạo thanh toán

Không cấu hình cổng nào trong .env thì cổng mock được dùng — chạy đủ luồng không cần sandbox.

Cổng thanh toán

Điều gì xảy ra sau khi bấm thanh toán

  1. 1Đơn được tạo ở trạng thái Đang chờ trong PostgreSQL.
  2. 2Bạn được chuyển sang trang cổng thanh toán (mock hoặc thật).
  3. 3Cổng gọi IPN về server — chữ ký được verify, số tiền đối chiếu với đơn, ghi nhận idempotent.
  4. 4Trang kết quả chỉ đọc trạng thái từ DB — return URL không bao giờ là xác nhận thanh toán.