Giới thiệu dự án

Thương mại điện tử (TMĐT) tại Việt Nam giai đoạn 2016–2020 chứng kiến tốc độ tăng trưởng vượt bậc, luôn duy trì ở mức trên 25%/năm và quy mô thị trường B2C chạm mốc 5 tỷ USD vào năm 2016 (theo số liệu từ Cục Thương mại điện tử và Công nghệ thông tin - VECITA). Tuy nhiên, một nghịch lý lớn tồn tại là hơn 90% giao dịch trực tuyến vẫn dựa vào phương thức giao hàng thu tiền hộ (COD - Cash On Delivery). Thói quen này tạo ra rào cản tài chính nghiêm trọng: tỷ lệ hoàn hàng (return rate) dao động từ 15% đến 20%, chi phí xử lý tiền mặt cao, dòng vốn doanh nghiệp bị đọng từ 7–14 ngày tại các đơn vị vận chuyển, cùng rủi ro thất thoát doanh thu đáng kể.

Công ty Cổ phần Công nghệ Cường Phú (vận hành nền tảng thương mại điện tử cuongphu.vn) là doanh nghiệp phân phối thiết bị máy văn phòng, máy in chính hãng (HP, Canon, Panasonic, Epson) với lưu lượng hơn 400 lượt truy cập/ngày và doanh thu năm 2017 vượt 5 tỷ VNĐ. Trước áp lực cạnh tranh từ các chuỗi bán lẻ lớn như Nguyễn Kim, Phúc Anh, Toàn Phát, hệ thống website của Cường Phú gặp nút thắt nghiêm trọng tại khâu chuyển đổi (checkout funnel): tỷ lệ bỏ dở giỏ hàng lên tới 68% do thiếu hệ thống thanh toán trực tuyến (HT TTTT) tự động, an toàn và đa kênh.

[Khách hàng cuongphu.vn] 

Mục tiêu nghiên cứu và phát triển

  1. Hệ thống hóa cơ sở lý luận: Phân tích tiêu chuẩn công nghệ thanh toán thẻ EMV (Europay, MasterCard, Visa), mô hình cổng thanh toán trung gian (PSP - Payment Service Provider), ví điện tử, vi thanh toán (Micropayment) và hệ thống xuất trình/thanh toán hóa đơn điện tử (EBPP).
  2. Đánh giá thực trạng hạ tầng: Khảo sát định lượng trên mẫu $N = 3.000$ khách hàng thực tế và phân tích môi trường pháp lý (Nghị định 101/2012/NĐ-CP, Thông tư 39/2014/TT-NHNN, Quyết định 2545/QĐ-TTg).
  3. Thiết kế & Tích hợp kiến trúc TTTT: Xây dựng mô đun kết nối cổng thanh toán đa kênh (Thẻ ATM nội địa qua Internet Banking, Thẻ tín dụng quốc tế Visa/Mastercard, Ví điện tử Ngân Lượng) tích hợp cơ chế đồng bộ tức thời (IPN - Instant Payment Notification) và chữ ký số bảo mật HMAC-SHA256.
  4. Đo lường hiệu quả chuyển đổi: Giảm tỷ lệ hủy đơn COD từ 18.5% xuống dưới 5%, rút ngắn thời gian xử lý giao dịch từ 15 phút thủ công xuống dưới 3 giây tự động.

Phạm vi và giới hạn đề tài

  • Không gian triển khai: Module thanh toán trực tuyến tích hợp trực tiếp vào hệ thống website lõi cuongphu.vn.
  • Dữ liệu phân tích: Số liệu khảo sát và vận hành thực tế giai đoạn 2015–2017, định hướng kiến trúc mở rộng B2B đến năm 2020.
  • Giới hạn kỹ thuật: Chưa tích hợp cơ chế ký quỹ đa cấp (escrow) dành riêng cho các hợp đồng phân phối B2B xuyên biên giới.

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

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

Tại thời điểm nghiên cứu, các phương thức thanh toán tại các doanh nghiệp phân phối thiết bị máy văn phòng bộc lộ nhiều điểm nghẽn về mặt kỹ thuật và vận hành:

Phương thức thanh toán Ưu điểm Nhược điểm kỹ thuật & Vận hành Tỷ lệ áp dụng tại cuongphu.vn (2017)
COD (Tiền mặt khi nhận hàng) Thân thuộc, không đòi hỏi hiểu biết công nghệ, rủi ro ban đầu cho khách hàng = 0. Tỷ lệ hoàn đơn cao (18.5%), chi phí thu hộ 1.5–2%, công nợ đọng 7–14 ngày. 78.4%
Chuyển khoản thủ công Phí giao dịch thấp, phù hợp thanh toán đơn hàng B2B giá trị lớn. Nhân sự kế toán phải đối soát sao kê ngân hàng thủ công, độ trễ kích hoạt đơn hàng: 30–120 phút. 18.2%
Thanh toán trực tuyến (PSP Gateway) Xử lý thời gian thực (< 3s), cập nhật trạng thái đơn tự động qua Webhook, bảo mật cao. Yêu cầu tích hợp API phức tạp, chịu phí chiết khấu cổng 1.1% – 2.5%, cần hạ tầng bảo mật SSL/TLS. 3.4% (Chưa hoàn thiện)
                SO SÁNH TÍNH NĂNG ĐỐI THỦ CẠNH TRANH
       Thanh toán ATM/IB   Visa/Mastercard   Ví điện tử    Tự động IPN

Ma trận ưu tiên yêu cầu hệ thống (MoSCoW)

  • Must Have: Tích hợp cổng thanh toán trung gian PSP hỗ trợ thẻ ATM nội địa (NAPAS) và thẻ quốc tế EMV; Bảo mật SSL/TLS 256-bit; Xử lý Webhook IPN thời gian thực; Giao diện Responsive tối ưu trên Mobile Web.
  • Should Have: Tích hợp ví điện tử phổ thông (Ngân Lượng); Báo cáo dòng tiền đối soát tự động theo ngày; Gửi email biên lai điện tử (EBPP) tức thì.
  • Could Have: Thanh toán vi mô (Micropayment) qua SMS OTP/Dynamic QR Code; Cơ chế thanh toán tạm giữ (Escrow).
  • Won't Have (Giai đoạn này): Xử lý thanh toán hợp đồng quốc tế bằng Séc điện tử (Electronic Check); Cổng thanh toán tài sản số / Blockchain.

Thiết kế hệ thống

Kiến trúc hệ thống thanh toán trực tuyến cho cuongphu.vn được thiết kế theo mô hình phân tầng hướng dịch vụ (Service-Oriented Architecture), phân tách độc lập giữa tầng giao diện, tầng xử lý nghiệp vụ đơn hàng và tầng tích hợp cổng thanh toán an toàn.

       +-----------------------------------------------------------+
       |            Client Tier: Web Browser / Mobile Web          |
       +-----------------------------+-----------------------------+
                                     | HTTPS / TLS 1.3
                                     v
       +-----------------------------------------------------------+
       |   E-Commerce Platform (cuongphu.vn - PHP/Laravel Engine)  |
       |  - Cart & Checkout Service        - Order Processing Engine|
       |  - HMAC-SHA256 Signature Builder  - Webhook/IPN Listener  |
       +-----------------------------+-----------------------------+
                                     | RESTful API / JSON
                                     v
       +-----------------------------------------------------------+
       |        Payment Service Provider Tier (NganLuong PSP)      |
       |  - Merchant Authentication        - Transaction Routing   |
       |  - Fraud Detection System         - Tokenization Service  |
       +--------------+-----------------------------+--------------+
                      |                             |
                      v                             v
       +-----------------------------+ +---------------------------+
       | Banking Network (NAPAS/ATM) | | Card Scheme (Visa/Master) |
       +-----------------------------+ +---------------------------+

Technology Stack và Thông số phiên bản

  • Web Server: Nginx 1.14 / Apache 2.4 với giao thức OpenSSL 1.1.1 (Cấu hình chứng chỉ TLS 1.2/1.3 SHA-256).
  • Backend Runtime: PHP 7.2 / Laravel Framework 5.6 (Xử lý MVC, Routing, Queue Listener).
  • Database Management System: MySQL 5.7 Enterprise (Hỗ trợ ACID Transactions và InnoDB Engine).
  • Caching & Message Queue: Redis 4.0 (Xử lý hàng đợi Webhook và chống Race Condition khi cập nhật trạng thái đơn).
  • Payment Integration SDK: NganLuong Open API v3.1, NAPAS Direct API, cURL 7.58.

Database Schema Design

Hệ thống bổ sung bảng dữ liệu tối ưu cho việc theo dõi log giao dịch và chống gian lận tài chính:

CREATE TABLE `payment_transactions` (
  `transaction_id` VARCHAR(64) NOT NULL,
  `order_id` VARCHAR(32) NOT NULL,
  `psp_reference` VARCHAR(64) DEFAULT NULL,
  `payment_method` ENUM('ATM_ONLINE', 'CREDIT_CARD', 'WALLET_NL', 'COD') NOT NULL,
  `amount` DECIMAL(15,2) NOT NULL,
  `currency` VARCHAR(3) DEFAULT 'VND',
  `status` ENUM('PENDING', 'SUCCESS', 'FAILED', 'CANCELLED', 'REFUNDED') DEFAULT 'PENDING',
  `secure_hash` VARCHAR(128) NOT NULL,
  `ip_address` VARCHAR(45) NOT NULL,
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`transaction_id`),
  INDEX `idx_order_id` (`order_id`),
  INDEX `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

API Endpoint Specifications

1. Khởi tạo phiên thanh toán (POST /api/v1/payment/checkout)

  • Request Payload:
{
  "order_id": "CP_ORD_2018_9821",
  "total_amount": 4550000.00,
  "currency": "VND",
  "buyer_name": "Phạm Thị Hằng",
  "buyer_email": "hang.pt@cuongphu.vn",
  "buyer_mobile": "0912399986",
  "payment_method": "ATM_ONLINE",
  "bank_code": "VCB",
  "return_url": "https://cuongphu.vn/payment/return",
  "cancel_url": "https://cuongphu.vn/payment/cancel"
}

2. Webhook Tiếp nhận IPN từ PSP (POST /api/v1/payment/ipn-listener)

  • Response Payload:
{
  "response_code": "00",
  "message": "Transaction order CP_ORD_2018_9821 updated successfully",
  "signature": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
}

Methodology

Dự án áp dụng mô hình phát triển phần mềm Agile/Scrum kết hợp quy trình thẩm định bảo mật thanh toán thẻ:

  • Chu kỳ phát triển: 6 Sprint (2 tuần/sprint, tổng thời gian 12 tuần).
  • Quản trị rủi ro:
    • Rủi ro rò rỉ dữ liệu thẻ: Triệt tiêu bằng giải pháp Direct Redirect/Tokenization, toàn bộ thông tin thẻ được nhập trực tiếp tại giao diện chuẩn PCI-DSS của PSP, máy chủ Cường Phú không lưu trữ số PAN/CVV.
    • Rủi ro sai lệch dữ liệu truyền tin: Sử dụng chuỗi băm bảo mật HMAC-SHA256 kèm Nonce Token và Timestamp để chống tấn công Man-in-the-Middle (MitM) và Replay Attack.
       KẾ HOẠCH TRIỂN KHAI DỰ ÁN (12 TUẦN)
Tuần:    01-02     03-04     05-06     07-08     09-10     11-12
Sprint:  [  S1  ]   [  S2  ]   [  S3  ]   [  S4  ]   [  S5  ]   [  S6  ]
Task:   Khảo sát   Thiết kế   Code API   Tích hợp   Testing    Deploy
        Đặc tả     DB/Schema  SDK Cổng   Webhook    Bảo mật    Go-Live

Implementation và kết quả

Development process & Core Algorithm

Quy trình xử lý thanh toán cốt lõi yêu cầu tạo chuỗi mã hóa bảo mật trước khi gửi yêu cầu chuyển hướng sang cổng thanh toán và xác thực tính toàn vẹn khi nhận phản hồi IPN từ máy chủ ngân hàng:

<?php
namespace App\Services;

class NganLuongPaymentGateway 
{
    private $merchantId;
    private $merchantPassword;
    private $gatewayUrl;

    public function __construct() 
    {
        $this->merchantId = config('services.nganluong.merchant_id');
        $this->merchantPassword = config('services.nganluong.secure_pass');
        $this->gatewayUrl = 'https://www.nganluong.vn/checkout.api.nganluong.post.php';
    }

    /**
     * Tạo URL chuyển hướng thanh toán với chữ ký số HMAC-SHA256
     */
    public function generateCheckoutUrl(array $orderData): string 
    {
        $params = [
            'merchant_id'       => $this->merchantId,
            'merchant_password' => md5($this->merchantPassword),
            'receiver_email'    => 'nguyenthuy@cuongphu.vn',
            'cur_code'          => 'vnd',
            'order_code'        => $orderData['order_id'],
            'total_amount'      => strval($orderData['total_amount']),
            'payment_method'    => $orderData['payment_method'],
            'bank_code'         => $orderData['bank_code'] ?? '',
            'order_description' => 'Thanh toan don hang #' . $orderData['order_id'] . ' tai Cuong Phu',
            'return_url'        => route('payment.callback'),
            'cancel_url'        => route('payment.cancel'),
            'buyer_fullname'    => $orderData['buyer_name'],
            'buyer_email'       => $orderData['buyer_email'],
            'buyer_mobile'      => $orderData['buyer_mobile']
        ];

        // Thuật toán sinh chữ ký kiểm tra tính toàn vẹn (Checksum Verification)
        ksort($params);
        $rawHash = implode('|', $params) . '|' . $this->merchantPassword;
        $params['secure_code'] = hash('sha256', $rawHash);

        return $this->gatewayUrl . '?' . http_build_query($params);
    }

    /**
     * Xác thực tính hợp lệ của Webhook IPN (Idempotent Listener)
     */
    public function verifyIpnCallback(array $callbackData): bool 
    {
        $receivedChecksum = $callbackData['secure_code'] ?? '';
        unset($callbackData['secure_code']);
        
        ksort($callbackData);
        $rawHash = implode('|', $callbackData) . '|' . $this->merchantPassword;
        $calculatedChecksum = hash('sha256', $rawHash);

        return hash_equals($calculatedChecksum, $receivedChecksum);
    }
}

Testing và validation

Dữ liệu thực nghiệm khảo sát người dùng

Nghiên cứu tiến hành phát $10.000$ phiếu điều tra qua email khách hàng của Cường Phú, thu về $3.000$ phiếu hợp lệ ($30.0%$ response rate).

          RÀO CẢN SỬ DỤNG THANH TOÁN TRỰC TUYẾN (N = 3.000)

Đo lường hiệu năng kỹ thuật (Benchmarks)

Hệ thống được kiểm thử tải thông qua công cụ Apache JMeter v4.0 mô phỏng $500$ concurrent threads thanh toán:

  • Thời gian đáp ứng trung bình (Average Latency): $245\text{ ms}$ đối với API nội bộ, $1.15\text{ s}$ đối với luồng chuyển hướng cổng PSP.
  • Tỷ lệ thành công (Success Rate): Đạt $99.88%$ trên $10.000$ giao dịch giả lập môi trường Sandbox.
  • Khả năng chịu lỗi (Fault Tolerance): Cơ chế Retry tự động 3 lần (Exponential Backoff: $2s, 4s, 8s$) khi webhook IPN gặp sự cố gián đoạn mạng.

Kết quả đạt được

     KẾT QUẢ VẬN HÀNH TRƯỚC VÀ SAU TRIỂN KHAI HT TTTT

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

  1. Chuẩn hóa quy trình xử lý giao dịch tự động không lưu vết (Zero-trace Card Storage): Áp dụng cơ chế phân quyền và mã hóa một chiều giúp bảo vệ thông tin chủ thẻ theo chuẩn bảo mật quốc tế, giảm thiểu $100%$ nguy cơ rò rỉ dữ liệu thẻ tại máy chủ doanh nghiệp.
  2. Khắc phục triệt để bài toán chiếm dụng vốn trong thanh toán COD: Rút ngắn chu kỳ thu hồi dòng tiền bán hàng từ $10$ ngày xuống tức thời ($T+0$ đối với tài khoản ví và $T+1$ đối với thanh toán thẻ ngân hàng liên kết).
  3. Cải tiến thuật toán đối soát giao dịch tự động: Thay thế việc đối chiếu sao kê ngân hàng bằng tay của kế toán bằng hệ thống xử lý Webhook bất đồng bộ kết hợp hàng đợi Redis Queue, đảm bảo khả năng mở rộng xử lý hàng chục nghìn giao dịch mỗi ngày mà không xảy ra sai lệch số dư.

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

Kịch bản triển khai thực tế (Real-world Use Cases)

  • Kịch bản B2C: Khách hàng cá nhân mua máy in gia đình (như Canon LBP 2900 hoặc Canon LBP 6030) thao tác thanh toán trực tiếp bằng quét mã VietQR hoặc Internet Banking của Vietcombank, Agribank, Techcombank. Đơn hàng được xác nhận ngay lập tức, kho hàng tự động xuất phiếu đóng gói.
  • Kịch bản B2B: Các đại lý máy văn phòng tỉnh xa mua vật tư mực in số lượng lớn có thể thực hiện tạm giữ thanh toán qua cổng Ngân Lượng, tiền chỉ giải ngân cho Cường Phú sau khi đơn vị vận chuyển xác nhận giao thành công kiện hàng nguyên niêm phong.
       CƠ CẤU CHI PHÍ VÀ LỢI ÍCH KINH TẾ (ROI ANALYSIS)
Chi phí đầu tư ban đầu: 18.500.000 VNĐ (Phát triển module, SSL EV, Kiểm thử)
Chi phí duy trì hàng năm: 3.600.000 VNĐ (Bảo trì cổng, hạ tầng máy chủ)
Tiết kiệm vận hành/năm: 114.000.000 VNĐ (Giảm hoàn hàng COD + Giảm nhân sự đối soát)
Thời gian hoàn vốn (Payback Period): ~ 2.1 tháng

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

Hạn chế kỹ thuật

  • Sự phụ thuộc vào thời gian hoạt động (uptime) của nhà cung cấp dịch vụ trung gian PSP: Nếu hệ thống cổng bảo trì, luồng thanh toán online bị gián đoạn cục bộ.
  • Chưa hỗ trợ thanh toán đa tiền tệ tự động (USD, EUR, LAK) cho các thị trường khu vực lân cận như Lào và Campuchia theo định hướng xuất khẩu B2B đến năm 2020 của Cường Phú.

Hướng nâng cấp

  • Tích hợp thanh toán sinh trắc học (FIDO2 / Fingerprint Authentication) trên thiết bị di động.
  • Ứng dụng mô hình máy học (Machine Learning) để chấm điểm rủi ro gian lận (Fraud Scoring) theo thời gian thực dựa trên địa chỉ IP, vân tay trình duyệt và hành vi mua hàng.

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

  • Sinh viên chuyên ngành Hệ thống thông tin kinh tế & TMĐT: Tài liệu tham khảo toàn diện từ lý thuyết các mô hình thanh toán (EMV, EBPP, PSP) đến quy trình tích hợp API và mã nguồn thực tế.
  • Lập trình viên / Kỹ sư phần mềm: Nắm vững cấu trúc bảo mật HMAC-SHA256, kiến trúc Webhook Idempotency và thiết kế cơ sở dữ liệu giao dịch tài chính chuẩn ACID.
  • Doanh nghiệp vừa và nhỏ (SMEs): Bản thiết kế kinh tế - kỹ thuật giúp tối ưu hóa luồng thanh toán trực tuyến, cắt giảm tỷ lệ hoàn đơn COD và nâng cao năng lực cạnh tranh số.

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

1. Yêu cầu kỹ thuật hạ tầng tối thiểu để triển khai hệ thống thanh toán này là gì?

Hệ thống yêu cầu máy chủ chạy hệ điều hành Linux (Ubuntu Server 18.04 LTS trở lên), Web Server Nginx hoặc Apache hỗ trợ giao thức TLS 1.2+, PHP phiên bản 7.1 trở lên kèm extension OpenSSL, cURL, JSON và cơ sở dữ liệu MySQL 5.6+. Doanh nghiệp bắt buộc phải trang bị chứng chỉ số bảo mật SSL/TLS hợp lệ.

2. Hệ thống xử lý thế nào trong trường hợp mạng bị ngắt quãng đúng lúc trừ tiền khách hàng?

Hệ thống sử dụng cơ chế xử lý giao dịch kép thông qua IPN Webhook độc lập với trình duyệt của người dùng. Ngay cả khi người dùng tắt trình duyệt sau khi xác thực OTP tại ngân hàng, máy chủ PSP vẫn gửi tín hiệu xác nhận bất đồng bộ (IPN) tới backend của cuongphu.vn với cơ chế retry 3 lần, đảm bảo đơn hàng luôn được cập nhật chính xác trạng thái.

3. Doanh nghiệp có cần đạt chứng chỉ bảo mật PCI-DSS cấp độ cao nhất không?

Không. Bằng cách sử dụng mô hình chuyển hướng (Hosted Payment Page / Direct Redirect) sang cổng thanh toán đối tác đã đạt chuẩn PCI-DSS Level 1 (như Ngân Lượng), toàn bộ dữ liệu thẻ nhạy cảm được thu thập trực tiếp trên hạ tầng của cổng thanh toán. Máy chủ của doanh nghiệp chỉ nhận về token và mã xác thực kết quả giao dịch, giảm thiểu gánh nặng tuân thủ và chi phí kiểm định an ninh.

4. Chi phí duy trì và chiết khấu giao dịch trung bình cho cổng thanh toán là bao nhiêu?

Chi phí tích hợp kỹ thuật thường là miễn phí hoặc chỉ mất phí khởi tạo một lần. Phí giao dịch (MDR - Merchant Discount Rate) dao động từ $1.0% - 1.5%$ đối với thẻ ATM nội địa/Internet Banking và $2.0% - 2.8% + 2.500\text{ VNĐ}$ đối với thẻ tín dụng quốc tế Visa/Mastercard.

5. Khả năng mở rộng (scalability) của hệ thống khi lượng đơn hàng tăng đột biến trong các dịp Flash Sale?

Kiến trúc tách biệt tầng lắng nghe Webhook vào hàng đợi Redis Queue cho phép hệ thống chịu tải tức thời lên tới $2.000$ giao dịch/phút mà không gây nghẽn database chính. Các tác vụ cập nhật kho và gửi email hóa đơn được đẩy vào worker xử lý ngầm tuần tự.


Kết luận

Đề tài khóa luận tốt nghiệp của tác giả Phạm Thị Hằng (Khoa Hệ thống thông tin kinh tế và Thương mại điện tử, Trường Đại học Thương Mại) đã giải quyết toàn diện bài toán lý luận và thực tiễn trong việc hiện đại hóa khâu thanh toán tại Công ty Cổ phần Công nghệ Cường Phú. Bằng việc chuyển dịch thành công mô hình thanh toán từ tiền mặt COD truyền thống sang hệ thống thanh toán trực tuyến đa kênh bảo mật cao, công trình không chỉ mang lại giá trị gia tăng trực tiếp về doanh thu và quản trị dòng tiền cho doanh nghiệp mà còn đóng góp khung kiến trúc tham chiếu giá trị cho các doanh nghiệp thương mại điện tử vừa và nhỏ tại Việt Nam trong kỷ nguyên chuyển đổi số.