WordPress, với plugin WooCommerce, hiện đang là nền tảng thương mại điện tử phổ biến nhất thế giới. Tuy nhiên, việc tích hợp các cổng thanh toán (Payment Gateway) truyền thống như VNPAY, MoMo... thường tốn phí giao dịch (từ 1% - 1.5%) và thủ tục đăng ký phức tạp. Giải pháp thay thế hoàn hảo là Tích hợp thanh toán QR Code ngân hàng trực tiếp kết hợp với đối soát tự động.

Ưu điểm của thanh toán QR trực tiếp trên WooCommerce

  • Miễn phí giao dịch: Tiền chuyển thẳng từ ngân hàng khách hàng sang ngân hàng của bạn, không qua trung gian cắt phế.
  • Tiền về ngay lập tức: Không cần chờ đối soát T+1 hay T+3 như các cổng thanh toán. Cải thiện luồng tiền (Cashflow).
  • Khách hàng quen thuộc: Quét mã QR bằng App ngân hàng đã trở thành thói quen thanh toán phổ biến nhất tại Việt Nam.

Quy trình hoạt động (Workflow)

  1. Khách hàng thêm sản phẩm vào giỏ và chọn phương thức thanh toán là "Chuyển khoản ngân hàng qua QR Code".
  2. Sau khi bấm "Đặt hàng", khách được chuyển đến trang Thank you (hoặc một trang Custom Checkout). Tại đây, hệ thống sinh ra một mã VietQR động với số tiền đúng bằng tổng đơn và nội dung là Mã đơn hàng (ví dụ: PAY12345).
  3. Plugin liên tục kiểm tra trạng thái đơn hàng (sử dụng AJAX Polling hỏi database).
  4. Khi khách chuyển khoản, Webhook từ ngân hàng đẩy dữ liệu về một Endpoint do Plugin tạo ra.
  5. Endpoint này kiểm tra Signature an toàn, tìm đơn hàng có ID 12345, kiểm tra số tiền và tự động gọi hàm $order->update_status('processing'); của WooCommerce.
  6. Ngay khi đơn hàng đổi trạng thái, trang Checkout của khách hàng (đang gọi AJAX) sẽ nhận được phản hồi và tự động chuyển hướng sang trang "Thanh toán thành công".

Cách tự triển khai (Tự viết Plugin)

Nếu có kiến thức về PHP và WordPress, bạn hoàn toàn có thể tự viết một đoạn code ngắn đặt trong functions.php hoặc tạo một Plugin nhỏ. Cốt lõi của nó là đăng ký một API Endpoint sử dụng register_rest_route() trong WordPress REST API để nhận Webhook.

add_action( 'rest_api_init', function () {
    register_rest_route( 'apibank/v1', '/webhook', array(
        'methods' => 'POST',
        'callback' => 'handle_bank_webhook',
        'permission_callback' => '__return_true'
    ) );
} );

Hàm handle_bank_webhook sẽ chịu trách nhiệm verify chữ ký, truy vấn mã đơn và đổi trạng thái.

Cần API Ngân hàng cho WordPress?

Xem tài liệu kỹ thuật để lấy Code mẫu xử lý Webhook và API kết nối ngân hàng của bạn.

Tài liệu lập trình