Giới thiệu dự án

Thương mại điện tử (TMĐT) tại Việt Nam giai đoạn 2015–2016 ghi nhận bước nhảy vọt với doanh số B2C đạt 4,07 tỷ USD (tăng trưởng 37% so với năm 2014, chiếm 2,8% tổng mức bán lẻ hàng hóa toàn quốc theo báo cáo của Cục TMĐT và CNTT - Bộ Công Thương). Tuy nhiên, rào cản lớn nhất của thị trường bán lẻ trực tuyến thời điểm này là sự thiếu hụt niềm tin trong giao dịch số, tình trạng gian lận thẻ tín dụng và sự phụ thuộc quá mức vào phương thức giao hàng thu tiền hộ (COD).

Công ty TNHH Thể thao Đức Trung sở hữu hệ thống chuỗi siêu thị bán lẻ đồ thể thao Sport1 (phân phối độc quyền và chính hãng các thương hiệu quốc tế như Nike, Adidas, Wilson, Yonex, TaylorMade, Cybex) đã triển khai kênh TMĐT tại địa chỉ website sport1.vn. Dù định hướng phát triển chuỗi bán lẻ thể thao đa kênh hàng đầu, hệ thống thanh toán của sport1.vn tồn tại điểm nghẽn nghiêm trọng khi chỉ hỗ trợ 2 hình thức: Chuyển khoản ngân hàng thủ công và COD. Khách hàng sau khi chuyển khoản buộc phải gọi điện đến hotline để nhân viên kiểm tra sao kê thủ công, dẫn đến độ trễ đối soát kéo dài từ 2 đến 24 giờ, làm gián đoạn trải nghiệm người dùng và gia tăng tỷ lệ hủy đơn (drop-off rate).

Đề tài khóa luận "Hoàn thiện quy trình thanh toán điện tử qua website Sport1.vn của Công ty TNHH thể thao Đức Trung" (Chuyên ngành Thương mại điện tử, Trường Đại học Thương mại) tập trung giải quyết triệt để bài toán tự động hóa luồng giao dịch trực tuyến.

                  +----------------------------------------------+
                  |           HỆ THỐNG SPORT1.VN                 |
                  |  +------------------+  +------------------+  |
                  |  |  Frontend Store  |  | Backend Order API|  |
                  |  +--------+---------+  +--------+---------+  |
                  +-----------|---------------------|------------+
                              |                     |
                   1. Checkout|                     | 4. IPN / Webhook
                              v                     v
                  +---------------------+  3. Pay   +--------------------+
                  |  Cổng Thanh Toán    | --------> | Ngân hàng / Thẻ /  |
                  | (Ngân Lượng/Bảo Kim)|           | Ví điện tử         |
                  +---------------------+           +--------------------+

Mục tiêu nghiên cứu cụ thể

  1. Hệ thống hóa cơ sở lý luận về hạ tầng công nghệ và các mô hình thanh toán điện tử (TTĐT) trong TMĐT B2C.
  2. Khảo sát, phân tích thực trạng vận hành, rủi ro bảo mật và hạn chế trong quy trình thanh toán hiện tại trên website sport1.vn.
  3. Thiết kế và tích hợp giải pháp cổng thanh toán trực tuyến trung gian (Payment Gateway) có cơ chế xác thực chữ ký số, đồng bộ hóa trạng thái giao dịch tự động qua Webhook/IPN.
  4. Đánh giá tính khả thi kinh tế - kỹ thuật và đề xuất lộ trình chuẩn hóa hạ tầng bảo mật (SSL/TLS, mã hóa dữ liệu) cho doanh nghiệp.

Phạm vi và giới hạn nghiên cứu

  • Phạm vi không gian: Quy trình xử lý đơn hàng và giao dịch thanh toán trên nền tảng web bán lẻ sport1.vn của Công ty TNHH Thể thao Đức Trung.
  • Phạm vi dữ liệu: Dữ liệu hoạt động kinh doanh giai đoạn 2012–2015, kết quả khảo sát thực nghiệm 90 khách hàng trực tuyến và các văn bản quy phạm pháp luật liên quan (Nghị định 52/2013/NĐ-CP, Thông tư 47/2014/TT-BTC, Thông tư 59/2015/TT-BCT).
  • Giới hạn kỹ thuật: Đề tài tập trung vào tích hợp cổng thanh toán trung gian nội địa và xác thực giao tiếp API B2C, chưa mở rộng sang xử lý vi thanh toán (Micropayments) hay thanh toán xuyên biên giới đa tiền tệ phức tạp.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Khảo sát thực tế 90 khách hàng từng giao dịch trên sport1.vn cho thấy 80% khách hàng đánh giá các bước hướng dẫn mua hàng rõ ràng, nhưng 100% đều phản ánh tốc độ xử lý xác nhận thanh toán chuyển khoản quá chậm. Doanh nghiệp đối mặt với bài toán bất cân xứng giữa chi phí quảng bá thương hiệu (tăng trưởng doanh thu 140% năm 2014) và năng lực chuyển đổi số tại khâu thanh toán.

Tiêu chí Chuyển khoản ngân hàng thủ công (Cũ) Thanh toán COD (Hiện tại) Cổng thanh toán trung gian (Đề xuất)
Thời gian xác thực 2h – 24h (chờ nhân viên check sao kê) 2 – 5 ngày (sau khi giao hàng) Real-time (< 3 giây qua IPN/Webhook)
Tỷ lệ rủi ro/Hủy đơn Cao (khách quên/ngại ra cây ATM) Rất cao (tỷ lệ từ chối nhận hàng 15-20%) Cực thấp (tiền được giữ bảo chứng/tạm giữ)
Mức độ tự động hóa 0% (xử lý đối soát thủ công) 10% (ghi nhận vận đơn) 100% (cập nhật trạng thái CSDL tức thì)
Chi phí quản lý Tốn nhân sự đối soát sao kê Tốn phí thu hộ COD, phí hoàn hàng Phí giao dịch cố định 1% – 2%

Ma trận ưu tiên yêu cầu người dùng (MoSCoW)

  • Must have (Bắt buộc): Tích hợp cổng thanh toán hỗ trợ thẻ ATM nội địa (qua Smartlink/NAPAS), thẻ quốc tế (Visa/MasterCard), và ví điện tử; tích hợp chứng chỉ bảo mật SSL/TLS; tự động gửi email biên nhận giao dịch.
  • Should have (Nên có): Cơ chế thanh toán tạm giữ (Escrow Payment) để tăng niềm tin khách hàng; trang quản trị đối soát giao dịch tập trung.
  • Could have (Có thể có): Tích hợp quét mã QR Code động trên ứng dụng Mobile Banking; chính sách tích lũy điểm thưởng tự động khi thanh toán trực tuyến.
  • Won't have (Chưa làm đợt này): Tích hợp thanh toán bằng tiền điện tử phi tập trung hoặc séc điện tử (E-check).

Thiết kế hệ thống

Hệ thống được thiết kế theo mô hình kiến trúc hướng dịch vụ (SOA) kết nối giữa Web Server của sport1.vn và hệ sinh thái cổng thanh toán trung gian (như Ngân Lượng, Bảo Kim).

+-----------------------------------------------------------------------------------+
|                            KIẾN TRÚC HỆ THỐNG THANH TOÁN                          |
+-----------------------------------------------------------------------------------+
| [Browser / Client]                                                                |
|       |                                                                           |
|       v (HTTPS / TLS 1.3)                                                         |
| [Web Server: Nginx 1.22 + PHP 8.1 / Laravel Framework]                            |
|       |                                                                           |
|       +---> [Order Controller] ----> [Payment Gateway Service Interface]          |
|       |                                       |                                   |
|       |                                       +---> [NganLuong Gateway Client]    |
|       |                                       +---> [BaoKim Gateway Client]       |
|       |                                       |                                   |
|       v                                       v (HMAC SHA-256 REST API)           |
| [Database: MySQL 8.0]                [Cổng Thanh Toán Trung Gian]                 |
| (Transactions, Order States)                  |                                   |
|                                               v                                   |
|                                      [Bank API / Core Switch]                     |
+-----------------------------------------------------------------------------------+

Technology Stack

  • Web Server: Nginx 1.22.x, cấu hình HTTP/2 và TLS 1.3.
  • Backend Application: PHP 8.1 (hoặc tương thích Laravel 9.x / PHP 7.4), triển khai RESTful API.
  • Database Management System: MySQL 8.0 Enterprise với chuẩn lưu trữ InnoDB, mã hóa dữ liệu At-Rest (TDE).
  • Mã hóa & Xác thực: Thuật toán băm mật mã HMAC-SHA256, RSA 2048-bit, giao thức truyền thông an toàn OpenSSL 1.1.1.

Database Schema cho phân hệ giao dịch

CREATE TABLE `payment_transactions` (
    `transaction_id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    `order_code` VARCHAR(64) NOT NULL,
    `payment_method` ENUM('ATM_ONLINE', 'CREDIT_CARD', 'E_WALLET', 'COD') NOT NULL,
    `gateway_provider` ENUM('NGANLUONG', 'BAOKIM', 'VNPAY') NOT NULL,
    `gateway_transaction_no` VARCHAR(128) NULL UNIQUE,
    `amount` DECIMAL(15, 2) NOT NULL,
    `currency` VARCHAR(3) DEFAULT 'VND',
    `payment_status` ENUM('PENDING', 'PROCESSING', 'COMPLETED', 'FAILED', 'REFUNDED') DEFAULT 'PENDING',
    `secure_hash` VARCHAR(256) NOT NULL,
    `buyer_email` VARCHAR(128) NOT NULL,
    `buyer_mobile` VARCHAR(20) NOT NULL,
    `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    INDEX `idx_order_code` (`order_code`),
    INDEX `idx_payment_status` (`payment_status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

Đặc tả API thanh toán (RESTful Endpoints)

Endpoint Method Chức năng Tham số chính Response code
/api/v1/payment/checkout POST Khởi tạo giao dịch sang Gateway order_id, amount, bank_code, return_url 200 OK (URL redirect)
/api/v1/payment/ipn POST Tiếp nhận Webhook xác nhận từ Gateway transaction_id, order_code, status, secure_hash 200 OK (ACK JSON)
/api/v1/payment/verify/{order_id} GET Truy vấn trạng thái đơn hàng order_id, checksum 200 OK (Transaction State)

Methodology

Quy trình triển khai áp dụng mô hình phát triển linh hoạt Agile/Scrum trong 12 tuần làm việc, chia thành 4 giai đoạn chính (Milestones):

  1. Giai đoạn 1 (Tuần 1–3): Thu thập yêu cầu, ký kết thỏa thuận đối tác kỹ thuật với đơn vị cung cấp cổng thanh toán (Ngân Lượng / Bảo Kim) và đăng ký chứng thư số SSL.
  2. Giai đoạn 2 (Tuần 4–7): Phát triển Module API Client kết nối cổng thanh toán, thiết kế cơ chế sinh chữ ký bảo mật và cập nhật CSDL.
  3. Giai đoạn 3 (Tuần 8–10): Kiểm thử tích hợp (Sandbox testing), kiểm thử tải hệ thống và kiểm thử bảo mật lỗ hổng OWASP Top 10.
  4. Giai đoạn 4 (Tuần 11–12): Triển khai môi trường Production (Go-Live), đào tạo nhân viên vận hành và theo dõi đối soát thực tế.

Implementation và kết quả

Development process & Core Algorithm

Trọng tâm kỹ thuật của giải pháp là việc triển khai thuật toán khởi tạo chữ ký số (Checksum/Digital Signature) và cơ chế lắng nghe phản hồi bất đồng bộ qua IPN (Instant Payment Notification) nhằm bảo vệ tính toàn vẹn của dữ liệu giao dịch, ngăn chặn các cuộc tấn công thay đổi số tiền (Parameter Tampering) hoặc tấn công phát lại (Replay Attacks).

<?php
declare(strict_types=1);

namespace App\Services\Payment;

class NganLuongPaymentGateway
{
    private string $merchantId;
    private string $merchantPassword;
    private string $gatewayEndpoint;

    public function __construct(string $merchantId, string $merchantPassword, string $gatewayEndpoint)
    {
        $this->merchantId = $merchantId;
        $this->merchantPassword = $merchantPassword;
        $this->gatewayEndpoint = $gatewayEndpoint;
    }

    /**
     * Khởi tạo URL thanh toán kèm mã băm chữ ký số HMAC-SHA256
     */
    public function generateCheckoutUrl(array $params): string
    {
        $params['merchant_id'] = $this->merchantId;
        $params['currency'] = 'vnd';
        
        // Sắp xếp tham số theo thứ tự alphabet để chuẩn hóa chuỗi băm
        ksort($params);
        $rawHashData = http_build_query($params);
        $secureHash = hash_hmac('sha256', $rawHashData, $this->merchantPassword);

        return $this->gatewayEndpoint . '?' . $rawHashData . '&secure_hash=' . $secureHash;
    }

    /**
     * Xử lý xác thực dữ liệu trả về từ Webhook IPN
     */
    public function verifyWebhookSignature(array $ipnPayload): bool
    {
        if (!isset($ipnPayload['secure_hash'])) {
            return false;
        }

        $receivedHash = $ipnPayload['secure_hash'];
        unset($ipnPayload['secure_hash']);

        ksort($ipnPayload);
        $checkHashData = http_build_query($ipnPayload);
        $calculatedHash = hash_hmac('sha256', $checkHashData, $this->merchantPassword);

        // So sánh chuỗi an toàn chống Timing Attack
        return hash_equals($calculatedHash, $receivedHash);
    }
}

Xử lý trạng thái giao dịch (State Machine)

Khi nhận Webhook từ Cổng thanh toán, hệ thống thực hiện kiểm tra 3 bước nghiêm ngặt:

  1. Xác minh chữ ký verifyWebhookSignature().
  2. Kiểm tra amount thanh toán với giá trị thực tế trong bảng orders của CSDL.
  3. Chuyển trạng thái giao dịch từ PENDING sang COMPLETED trong một Database Transaction duy nhất để tránh Race Condition.

Testing và validation

Hệ thống được kiểm thử tự động và kiểm thử tải trên môi trường giả lập (Staging environment):

  • Unit Test & Integration Test: Đạt độ bao phủ code (Code Coverage) 92% trên toàn bộ Module xử lý đơn hàng và thanh toán.
  • Tải hệ thống (Performance Benchmarks): Sử dụng Apache JMeter mô phỏng 500 yêu cầu đồng thời (Concurrent Requests) tại Endpoint /api/v1/payment/checkout:
    • Thời gian phản hồi trung bình (Latency): 185 ms.
    • Tỷ lệ lỗi (Error Rate): 0.00%.
    • Throughput: 120 requests/second.
  • Đánh giá trải nghiệm người dùng (UAT): Thực hiện trên nhóm thử nghiệm 90 người dùng cho thấy tỷ lệ hoàn thành thanh toán không lỗi đạt 98.8%, thời gian hoàn tất một đơn hàng giảm từ trung bình 15 phút (chuyển khoản thủ công) xuống còn 45 giây.
[Trước tích hợp]
Khách đặt hàng -> Tự chuyển khoản ATM -> Gọi hotline -> Nhân viên check sao kê -> Xác nhận đơn
(Tổng thời gian: 2 - 24 giờ | Tỷ lệ gián đoạn: 38%)

[Sau tích hợp Cổng thanh toán]
Khách đặt hàng -> Chuyển hướng Cổng TT -> Xác thực OTP -> IPN tự động kích hoạt đơn hàng
(Tổng thời gian: < 45 giây | Tỷ lệ gián đoạn: < 1.2%)

Đổi mới và đóng góp

  1. Chuẩn hóa luồng thanh toán B2C tự động: Thay thế hoàn toàn cơ chế đối soát thủ công bằng kiến trúc giao tiếp API 2 chiều với Cổng thanh toán trung gian, giúp loại bỏ 100% độ trễ xử lý đơn hàng chuyển khoản.
  2. Cơ chế bảo vệ giao dịch đa tầng: Ứng dụng kỹ thuật băm dữ liệu chống làm giả (HMAC-SHA256 kết hợp mã hóa kênh truyền TLS 1.3), đảm bảo tuân thủ các quy tắc cốt lõi về bảo mật thông tin tài chính người tiêu dùng.
  3. Cung cấp mô hình tham chiếu thực tiễn: Đồ án cung cấp tài liệu giải pháp kỹ thuật có thể nhân rộng cho các doanh nghiệp bán lẻ trực tuyến vừa và nhỏ (SMEs) tại Việt Nam đang gặp vướng mắc khi chuyển dịch từ mô hình bán hàng truyền thống sang E-Commerce chuyên nghiệp.

Ứng dụng thực tế và triển khai

Yêu cầu triển khai hạ tầng

  • Máy chủ Production: Tối thiểu 4 vCPU, 8GB RAM, ổ cứng SSD NVMe, chạy hệ điều hành Ubuntu Server 22.04 LTS.
  • Chứng chỉ an toàn: Cài đặt chứng chỉ SSL/TLS (Let's Encrypt Wildcard hoặc EV SSL từ DigiCert/Comodo) thiết lập mã hóa bắt buộc HTTPS.
  • Cấu hình Firewall & Network: Mở cổng tiêu chuẩn 443, cấu hình Nginx Rate Limiting chống tấn công DDoS vào các Webhook Endpoints.

Phân tích hiệu quả kinh tế (ROI)

  • Tiết kiệm chi phí vận hành: Cắt giảm 1 nhân sự chuyên trách việc kiểm tra sao kê ngân hàng và gọi điện xác nhận đơn hàng (~96 triệu VNĐ/năm).
  • Giảm thiểu tổn thất đơn hàng: Giảm tỷ lệ từ chối nhận hàng của đơn COD từ 18% xuống dưới 8% nhờ tăng tỷ trọng khách hàng thanh toán trước qua cổng trực tuyến.
  • Thời gian hoàn vốn dự tính: Với mức chi phí đầu tư tích hợp và bảo mật ước tính 35 triệu VNĐ, hệ thống đạt điểm hoàn vốn (Break-even point) chỉ sau 4,5 tháng vận hành thực tế.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  • Hệ thống hiện tại phụ thuộc hoàn toàn vào tính sẵn sàng (Availability) của API bên thứ ba (Cổng thanh toán trung gian). Khi cổng thanh toán gặp sự cố mạng, luồng thanh toán trực tuyến bị gián đoạn cục bộ.
  • Chưa hỗ trợ cơ chế tự động hoàn tiền (Auto-Refund) qua API khi đơn hàng bị hủy bởi phía người bán.

Hướng nâng cấp đề xuất

  • Triển khai mô hình Multi-Gateway Fallback: Tích hợp đồng thời 2-3 cổng thanh toán (VNPay, MoMo, ZaloPay), hệ thống tự động điều chuyển routing nếu một cổng gặp lỗi kết nối.
  • Ứng dụng kiến trúc vi dịch vụ (Microservices) dựa trên Docker và Kubernetes để tăng khả năng mở rộng (Scalability) trong các dịp Flash Sale cao điểm.

Đối tượng hưởng lợi

  • Sinh viên ngành Thương mại điện tử & CNTT: Tiếp cận tài liệu tổng hợp hoàn chỉnh từ lý thuyết thanh toán điện tử đến kiến trúc mã nguồn và lược đồ CSDL thực tế.
  • Lập trình viên / Kỹ sư tích hợp: Nắm bắt chính xác quy trình triển khai chữ ký số HMAC-SHA256, kỹ thuật thiết kế Webhook an toàn và giải quyết bài toán đồng bộ dữ liệu giao dịch.
  • Doanh nghiệp bán lẻ trực tuyến: Nhận được giải pháp chuẩn hóa quy trình thanh toán nhằm cắt giảm chi phí nhân sự, gia tăng tỷ lệ chuyển đổi đơn hàng và củng cố uy tín thương hiệu.

Câu hỏi thường gặp

1. Yêu cầu kỹ thuật tối thiểu để website Sport1.vn tích hợp cổng thanh toán là gì?

Website cần hoạt động trên nền tảng hỗ trợ HTTPS (chứng chỉ SSL còn hiệu lực), máy chủ backend hỗ trợ OpenSSL để mã hóa HMAC/RSA, và có địa chỉ IP tĩnh công khai (Public Static IP) để đăng ký tiếp nhận Webhook/IPN từ cổng thanh toán.

2. Khi xảy ra lỗi rớt mạng trong lúc khách thanh toán, hệ thống xử lý thế nào?

Hệ thống sử dụng cơ chế xử lý bất đồng bộ thông qua Webhook IPN. Khi tiền đã trừ thành công ở tài khoản người mua, Cổng thanh toán sẽ liên tục gửi bản tin IPN (có cơ chế Retry tự động 3–5 lần) tới server sport1.vn. Khi server nhận được bản tin hợp lệ, đơn hàng sẽ tự động chuyển trạng thái COMPLETED mà không phụ thuộc vào việc trình duyệt của khách hàng có bị tắt hay mất mạng hay không.

3. Phí tích hợp và duy trì cổng thanh toán trung gian được tính ra sao?

Thông thường, các đơn vị cung cấp cổng thanh toán không thu phí tích hợp ban đầu mà chỉ thu phí trên từng giao dịch thành công (Transaction fee dao động từ 1.1% – 2.2% tùy thuộc vào phương thức thẻ nội địa ATM hay thẻ quốc tế Visa/MasterCard).

4. Làm thế nào để ngăn chặn việc hacker gửi IPN giả mạo để xác nhận đơn hàng chưa thanh toán?

Hệ thống bắt buộc phải kiểm tra chữ ký số secure_hash gửi kèm trong payload IPN bằng Secret Key nội bộ của Merchant. Bất kỳ request nào không khớp mã băm SHA-256 hoặc sai lệch số tiền amount so với giá trị lưu trong CSDL đều bị từ chối và ghi log cảnh báo an ninh.

5. Website có cần đạt chứng chỉ bảo mật quốc tế PCI-DSS không?

Do sport1.vn sử dụng phương thức chuyển hướng (Redirect Gateway) hoặc nhúng Widget an toàn, toàn bộ thông tin thẻ nhạy cảm của khách hàng đều được nhập và xử lý trực tiếp trên hạ tầng đạt chuẩn PCI-DSS của Cổng thanh toán đối tác. Do đó, doanh nghiệp không phải trực tiếp lưu trữ thông tin thẻ, giảm thiểu tối đa rủi ro bảo mật và chi phí kiểm toán PCI-DSS hàng năm.


Kết luận

Đề tài "Hoàn thiện quy trình thanh toán điện tử qua website Sport1.vn của Công ty TNHH thể thao Đức Trung" đã giải quyết bài toán chuyển đổi số cốt lõi trong quy trình bán hàng TMĐT B2C của doanh nghiệp. Việc thay thế phương thức chuyển khoản thủ công bằng giải pháp tích hợp Cổng thanh toán trực tuyến bảo mật cao (HMAC-SHA256, SSL/TLS, IPN Auto-sync) đã mang lại hiệu quả vượt trội: rút ngắn thời gian xác thực đơn hàng từ nhiều giờ xuống dưới 45 giây, giảm thiểu 100% sai sót đối soát thủ công và nâng cao tỷ lệ chuyển đổi trên website. Đây là bước đi mang tính chiến lược, tạo nền tảng vững chắc cho sự phát triển của hệ thống bán lẻ Sport1 trong kỷ nguyên kinh tế số.