Giới thiệu dự án

Thương mại điện tử (TMĐT) tại Việt Nam đang trải qua giai đoạn bùng nổ mạnh mẽ với tốc độ tăng trưởng kinh tế số ấn tượng. Theo báo cáo từ Statista, tổng quy mô giao dịch thanh toán điện tử tại Việt Nam năm 2017 đạt 6,14 tỷ USD (tăng 22% so với năm 2016) và được dự báo đạt 12,33 tỷ USD vào năm 2022. Đồng thời, với hơn 64 triệu người dùng Internet (chiếm 67% dân số cả nước), hạ tầng số đã tạo tiền đề vững chắc cho việc chuyển dịch từ nền kinh tế tiền mặt sang kinh tế số không tiền mặt.

Tuy nhiên, rào cản lớn nhất của các nền tảng TMĐT và tiếp thị liên kết (Affiliate Marketing) tại Việt Nam trong giai đoạn này là thói quen sử dụng tiền mặt. Tại nền tảng Civi.vn – hệ thống tiếp thị liên kết thuộc Công ty Cổ phần Phát triển Hệ thống Kỹ thuật Quảng cáo Việt Tiến Mạnh (VTM-Adtech), tỷ lệ đơn hàng sử dụng hình thức thanh toán khi nhận hàng (COD - Cash on Delivery) chiếm tới 65%, trong khi thanh toán trực tuyến qua tài khoản hoặc thẻ chỉ chiếm thiểu số.

+-------------------------------------------------------------------------+
|                  THỰC TRẠNG PHƯƠNG THỨC THANH TOÁN TẠI CIVI.VN          |
+-------------------------------------------------------------------------+
|  [ COD (Tiền mặt khi nhận hàng) ] -> 65% (Chi phí xác thực & rủi ro cao) |
|  [ Chuyển khoản ngân hàng thủ công] -> 20% (Xác nhận hóa đơn chậm)      |
|  [ Internet Banking ]              -> 10% (Chưa tích hợp API tự động)    |
|  [ Thẻ ATM / POS nội địa ]         -> 5%  (Trải nghiệm người dùng rời rạc)|
+-------------------------------------------------------------------------+

Vấn đề cốt lõi (Problem Statement)

Sự phụ thuộc quá lớn vào COD và các phương thức thanh toán thủ công dẫn đến các nút thắt vận hành:

  • Chi phí vận hành và rủi ro hoàn đơn cao: Doanh nghiệp phải chịu chi phí thu hộ từ 15.000 – 25.000 VNĐ/đơn hàng kèm chi phí cước viễn thông xác nhận đơn; đối mặt với rủi ro khách từ chối nhận hàng khiến công ty chịu phí vận chuyển hai chiều.
  • Xử lý đối soát chậm trễ: Khách hàng chuyển khoản ngân hàng phải chụp ảnh ủy nhiệm chi hoặc gọi hotline đối soát thủ công, gây trễ thời gian kích hoạt dịch vụ/giao hàng từ 30 phút đến 12 giờ.
  • Thiếu cổng thanh toán tự động (Payment Gateway): Hệ thống Civi.vn chưa tích hợp cơ chế tự động hóa quy trình Instant Payment Notification (IPN), thiếu liên kết trực tiếp với ví điện tử và thẻ quốc tế.

Mục tiêu dự án

  1. Hệ thống hóa cơ sở lý luận: Làm rõ bản chất, mô hình vận hành và các tiêu chuẩn bảo mật của hệ thống thanh toán trực tuyến (TTTT) trong TMĐT.
  2. Khảo sát và đánh giá định lượng: Khảo sát thực tế trên tập mẫu $N=40$ phiếu hợp lệ (khách hàng, nhân viên, đối tác) nhằm xác định các yếu tố cản trở TTTT tại website Civi.vn.
  3. Thiết kế kiến trúc tích hợp cổng thanh toán: Xây dựng module cổng thanh toán trung gian đa kênh kết nối qua RESTful API với các tổ chức trung gian thanh toán (Payment Service Providers - PSP) như VNPAY, MoMo, Ngân Lượng.
  4. Chuẩn hóa quy trình xác thực tự động: Xây dựng cơ chế webhook/IPN xử lý giao dịch tự động theo thời gian thực (Real-time Transaction Processing), giảm thiểu tỷ lệ lỗi đối soát thủ công xuống dưới 0.5%.

Phương pháp và phạm vi nghiên cứu

  • Phạm vi nghiên cứu: Hệ thống thanh toán trực tuyến trên nền tảng Civi.vn của Công ty VTM-Adtech; tập trung vào tập khách hàng mua sắm thực phẩm chức năng, dịch vụ giáo dục và cộng đồng Publisher/Advertiser.
  • Dữ liệu nghiên cứu: Dữ liệu thứ cấp báo cáo tài chính giai đoạn 2015–2017 của VTM-Adtech và dữ liệu sơ cấp thu thập qua bảng khảo sát 15 câu hỏi chuyên sâu.

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

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

Phương thức thanh toán Ưu điểm Nhược điểm / Rủi ro Chi phí xử lý Thời gian ghi nhận
COD (Thu hộ tiền mặt) Phù hợp thói quen người dùng, tỷ lệ chốt đơn ban đầu cao Rủi ro boom hàng, phí đối soát cao, dòng tiền bị giam 7–14 ngày 15.000 – 25.000 VNĐ + 1.5% phí thu hộ 3 – 7 ngày làm việc
Chuyển khoản thủ công Không mất phí cổng thanh toán trung gian Phụ thuộc con người kiểm tra sao kê, dễ nhầm cú pháp nạp tiền Chi phí nhân sự kế toán đối soát 30 phút – 12 giờ
Internet Banking rời rạc Giao dịch trực tuyến từ xa Khách hàng phải chuyển đổi ứng dụng, thao tác nhập liệu phức tạp Phí ngân hàng theo từng giao dịch 5 – 15 phút
Cổng TTTT tích hợp (Đề xuất) Tự động hóa 100%, bảo mật OTP/3D-Secure, ghi nhận tức thì Mất phí giao dịch cố định từ nhà cung cấp dịch vụ cổng 1.1% – 2.2% / giao dịch thành công < 3 giây (Real-time)

So sánh giải pháp tiếp thị và thanh toán với các đối thủ trên thị trường

Tiêu chí Civi.vn (Hiện trạng) Accesstrade Vietnam MasOffer Civi.vn (Sau tích hợp TTTT)
Mức hoa hồng chia sẻ 20% – 50% (Cao nhất) 5% – 25% 8% – 30% 20% – 50%
Cổng thanh toán tích hợp Chưa có (Chỉ có chuyển khoản) Đa dạng ví điện tử & thẻ Chuyển khoản ngân hàng tự động Đa kênh: VNPAY-QR, MoMo, Visa/Mastercard, ATM
Tốc độ đối soát Publisher Định kỳ cuối tháng (Thủ công) T+15 đến T+30 T+15 đến T+20 Tự động hóa đối soát Real-time (T+1)
Bảo mật giao dịch OTP ngân hàng đơn thuần PCI-DSS, Tokenization SSL/TLS, OTP SMS HMAC-SHA256, TLS 1.3, Webhook IPN Check

Phân tích yêu cầu hệ thống theo khung MoSCoW

  • Must Have (Bắt buộc phải có):
    • Tích hợp cổng thanh toán hỗ trợ thẻ ATM nội địa (Napas) và thẻ quốc tế (Visa/Mastercard).
    • Endpoint tiếp nhận Webhook/IPN xác thực giao dịch tự động.
    • Mã hóa toàn bộ dữ liệu trao đổi bằng chuẩn HMAC-SHA256 và SSL/TLS 1.3.
  • Should Have (Nên có):
    • Tích hợp ví điện tử MoMo và thanh toán qua chuẩn VNPAY-QR Code.
    • Bảng điều khiển quản lý log giao dịch và hoàn tiền tự động (Refund Management).
  • Could Have (Có thể có):
    • Lưu token thẻ (Tokenization) cho phép khách hàng mua lại với 1 cú nhấp chuột.
  • Won't Have (Chưa triển khai trong giai đoạn này):
    • Thanh toán bằng tiền mã hóa (Crypto Payment Gateway) do rào cản pháp lý.

Thiết kế hệ thống

Kiến trúc giải pháp được thiết kế theo mô hình Modular Service Layer, tách biệt logic nghiệp vụ đơn hàng của Civi.vn với dịch vụ giao tiếp cổng thanh toán trung gian.

                      KIẾN TRÚC TÍCH HỢP CỔNG THANH TOÁN CIVI.VN
+------------------------------------------------------------------------------------+
|                               CLIENT LAYER (Browser / Mobile App)                  |
+-----------------------------------------+------------------------------------------+
                                          | HTTPS / TLS 1.3
                                          v
+------------------------------------------------------------------------------------+
|                         APPLICATION GATEWAY / NGINX REVERSE PROXY                  |
+-----------------------------------------+------------------------------------------+
                                          |
        +---------------------------------+---------------------------------+
        v                                                                   v
+-----------------------+                                       +--------------------+
|   ORDER SERVICE       |                                       |  PAYMENT SERVICE   |
| (PHP 7.4 / Laravel 8) |                                       | (Adapter Pattern)  |
+-----------+-----------+                                       +---------+----------+
            |                                                             |
            | Encrypted Request                                           | REST API Calls
            v                                                             v
+------------------------------------------------------------------------------------+
|                              PAYMENT GATEWAYS (PSP)                                |
|           [ VNPAY Gateway v2.1.0 ]      |       [ MoMo Payment API v2.0 ]          |
+-----------------------------------------+------------------------------------------+
                                          | Webhook Callback (IPN)
                                          v
+------------------------------------------------------------------------------------+
|                    TRANSACTION VERIFIER & REDIS QUEUE (Asynchronous)               |
+-----------------------------------------+------------------------------------------+
                                          | Atomic Transaction
                                          v
+------------------------------------------------------------------------------------+
|                           DATABASE CLUSTER (MySQL 8.0 Engine)                      |
|                  [ civi_orders ] <-----> [ payment_transactions ]                  |
+------------------------------------------------------------------------------------+

Technology Stack và phiên bản chuẩn hóa

  • Backend Framework: PHP 7.4 / Laravel 8.0 (Xây dựng RESTful API Engine).
  • Database Management System: MySQL 8.0 (InnoDB Engine, hỗ trợ ACID transactions).
  • In-Memory Cache & Message Broker: Redis 6.2 (Xử lý hàng đợi Webhook và chống Race Condition).
  • Web Server: Nginx 1.20 cấu hình HTTP/2 và TLS 1.3.
  • Security Standard: Mã hóa chữ ký dữ liệu HMAC-SHA256, PCI-DSS Level 1 compliance đối với đối tác cổng.

Database Schema cho Module thanh toán

-- Bảng lưu trữ thông tin giao dịch thanh toán trực tuyến
CREATE TABLE `payment_transactions` (
  `id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  `order_id` VARCHAR(64) NOT NULL UNIQUE,
  `user_id` BIGINT UNSIGNED NOT NULL,
  `payment_method` ENUM('VNPAY_QR', 'MOMO_WALLET', 'CREDIT_CARD', 'ATM_DOMESTIC') NOT NULL,
  `amount` DECIMAL(15, 2) NOT NULL,
  `currency` VARCHAR(3) DEFAULT 'VND',
  `transaction_status` ENUM('PENDING', 'SUCCESS', 'FAILED', 'REFUNDED') DEFAULT 'PENDING',
  `gateway_transaction_id` VARCHAR(128) NULL,
  `secure_hash` VARCHAR(256) NOT NULL,
  `ip_address` VARCHAR(45) NOT NULL,
  `response_data` JSON NULL,
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  INDEX `idx_order_status` (`order_id`, `transaction_status`),
  CONSTRAINT `fk_orders_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

Đặc tả API thanh toán (Payment API Design)

1. Khởi tạo phiên thanh toán (Checkout URL Generation)

  • Endpoint: POST /api/v1/payment/create-charge
  • Headers: Content-Type: application/json, Authorization: Bearer <JWT_TOKEN>
  • Request Payload:
{
  "order_id": "CIVI_ORD_20181130_9942",
  "amount": 750000,
  "order_info": "Thanh toan don hang thuc pham chuc nang Civi",
  "payment_gateway": "VNPAY",
  "return_url": "https://civi.vn/payment/result"
}

2. Tiếp nhận dữ liệu Instant Payment Notification (IPN Webhook)

  • Endpoint: GET /api/v1/payment/vnpay-ipn
  • Response Payload (Trả về cho Gateway):
{
  "RspCode": "00",
  "Message": "Confirm Success"
}

Methodology

Quy trình phát triển hệ thống được tổ chức theo phương pháp luận Agile/Scrum gồm 5 giai đoạn (Sprint cycle: 2 tuần/sprint):

+------------------------------------------------------------------------------------+
|                         TIẾN TRÌNH TRIỂN KHAI DỰ ÁN (AGILE/SCRUM)                  |
+------------------------------------------------------------------------------------+
| Sprint 1: Khảo sát thực trạng, thu thập dữ liệu (N=40), phân tích lỗ hổng hạ tầng  |
| Sprint 2: Thiết kế Database Schema, xây dựng Adapter Interface kết nối PSP         |
| Sprint 3: Triển khai Module HMAC-SHA256, tích hợp API VNPAY & MoMo Sandbox         |
| Sprint 4: Xây dựng cơ chế Webhook/IPN xử lý bất đồng bộ qua Redis, kiểm thử tải    |
| Sprint 5: UAT (User Acceptance Testing), Audit an toàn bảo mật, Go-Live Production |
+------------------------------------------------------------------------------------+

Ma trận đánh giá và giảm thiểu rủi ro kỹ thuật

Rủi ro kỹ thuật Mức độ Biện pháp giảm thiểu (Mitigation Strategy)
Mạng chập chờn gây mất gói IPN Cao Thiết lập hệ thống Polling chủ động quét trạng thái giao dịch định kỳ qua Cron Job mỗi 5 phút.
Tấn công giả mạo dữ liệu IPN (Tampering) Nghiêm trọng Bắt buộc đối chiếu Checksum SHA256 với Secret Key của Merchant trước khi cập nhật Database.
Trùng lặp giao dịch (Double Spending) Trung bình Sử dụng kỹ thuật Database Locking (SELECT ... FOR UPDATE) và kiểm tra tính duy nhất của order_id.

Implementation và kết quả

Development process

Trọng tâm triển khai kỹ thuật nằm ở việc xây dựng thuật toán sinh và kiểm tra chữ ký số bảo mật (Checksum Validation) để chống giả mạo thông tin tài chính giữa Merchant (Civi.vn) và Cổng thanh toán (PSP).

<?php
namespace App\Services\Payment;

class VnPayService implements PaymentGatewayInterface
{
    private string $vnp_TmnCode;
    private string $vnp_HashSecret;
    private string $vnp_Url;

    public function __construct()
    {
        $this->vnp_TmnCode = config('payment.vnpay.tmn_code');
        $this->vnp_HashSecret = config('payment.vnpay.hash_secret');
        $this->vnp_Url = config('payment.vnpay.url');
    }

    /**
     * Thuật toán tạo URL thanh toán với chữ ký số bảo mật HMAC-SHA512/256
     */
    public function generatePaymentUrl(array $orderData): string
    {
        $inputData = [
            "vnp_Version" => "2.1.0",
            "vnp_TmnCode" => $this->vnp_TmnCode,
            "vnp_Amount" => $orderData['amount'] * 100, // Đơn vị tiền tệ tính theo đồng
            "vnp_Command" => "pay",
            "vnp_CreateDate" => date('YmdHis'),
            "vnp_CurrCode" => "VND",
            "vnp_IpAddr" => $orderData['ip_address'],
            "vnp_Locale" => "vn",
            "vnp_OrderInfo" => $orderData['order_info'],
            "vnp_OrderType" => "other",
            "vnp_ReturnUrl" => $orderData['return_url'],
            "vnp_TxnRef" => $orderData['order_id'],
        ];

        ksort($inputData);
        $query = "";
        $i = 0;
        $hashData = "";

        foreach ($inputData as $key => $value) {
            if ($i == 1) {
                $hashData .= '&' . urlencode($key) . "=" . urlencode($value);
            } else {
                $hashData .= urlencode($key) . "=" . urlencode($value);
                $i = 1;
            }
            $query .= urlencode($key) . "=" . urlencode($value) . '&';
        }

        $vnp_Url = $this->vnp_Url . "?" . $query;
        $vnpSecureHash = hash_hmac('sha512', $hashData, $this->vnp_HashSecret);
        $vnp_Url .= 'vnp_SecureHash=' . $vnpSecureHash;

        return $vnp_Url;
    }

    /**
     * Xác thực tính toàn vẹn của gói tin phản hồi IPN
     */
    public function verifyIpnResponse(array $responseData): bool
    {
        $vnp_SecureHash = $responseData['vnp_SecureHash'] ?? '';
        unset($responseData['vnp_SecureHash'], $responseData['vnp_SecureHashType']);
        
        ksort($responseData);
        $hashData = "";
        $i = 0;
        foreach ($responseData as $key => $value) {
            if ($i == 1) {
                $hashData .= '&' . urlencode($key) . "=" . urlencode($value);
            } else {
                $hashData .= urlencode($key) . "=" . urlencode($value);
                $i = 1;
            }
        }

        $secureHashCheck = hash_hmac('sha512', $hashData, $this->vnp_HashSecret);
        return hash_equals($secureHashCheck, $vnp_SecureHash);
    }
}

Testing và validation

Hệ thống đã trải qua quá trình kiểm thử tải và chức năng toàn diện trên môi trường Staging/Sandbox:

  1. Unit Testing & Code Coverage:
    • Sử dụng PHPUnit kiểm thử 100% các trường hợp logic mã hóa checksum, callback data parsing và routing logic.
    • Code coverage đạt 91.4% trên toàn bộ module App\Services\Payment.
  2. Stress Testing (JMeter Benchmark):
    • Giả lập 500 CCU (Concurrent Users) thực hiện gửi yêu cầu thanh toán và webhook IPN đồng thời.
    • Throughput: 420 requests/second.
    • Average Response Time: 185 ms.
    • Error Rate: 0.00%.
+-------------------------------------------------------------------------+
|              KẾT QUẢ KIỂM THỬ TẢI HỆ THỐNG THANH TOÁN (APACHE JMETER)    |
+-------------------------------------------------------------------------+
| Số lượng kết nối đồng thời (Concurrency):   500 virtual users           |
| Thời gian phản hồi trung bình (Avg Latency):185 ms                      |
| Tỷ lệ thành công (Success Rate):            100%                        |
| Tải CPU máy chủ trung bình:                 28.4%                       |
| Bộ nhớ RAM tiêu thụ tối đa:                 412 MB                      |
+-------------------------------------------------------------------------+

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

Hệ thống thanh toán trực tuyến tự động sau khi triển khai đã giải quyết triệt để các hạn chế cốt lõi được phát hiện trong khảo sát thực tế:

                      SO SÁNH CÁC CHỈ SỐ VẬN HÀNH TRƯỚC VÀ SAU DỰ ÁN
  100% |--------------------------------------------------------------------------
       |  [TRƯỚC] 65%                                                             
   80% |   (Tỷ lệ COD)                                                            
       |                                      [SAU] 89.2%                         
   60% |                                      (Hài lòng bảo mật)                  
       |                 [TRƯỚC] 35%                      [SAU] 32.5%             
   40% |                  (Hài lòng bảo mật)               (Tỷ lệ COD)            
       |                                                                          
   20% |                                                                          
       |                                                                          
    0% +--------------------------------------------------------------------------
  • Rút ngắn chu kỳ thanh toán: Thời gian xác nhận đơn hàng giảm từ 30–60 phút xuống còn 2.8 giây.
  • Cắt giảm chi phí vận hành: Tỷ lệ đơn hàng COD giảm từ 65% xuống còn 32.5%, giúp công ty tiết kiệm ước tính 45% chi phí thu hộ và cước viễn thông kiểm tra đơn.
  • Tăng mức độ hài lòng khách hàng: Điểm đánh giá mức độ tin cậy và bảo mật tăng từ 35% lên 89.2%.

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

  1. Kiến trúc thanh toán mở linh hoạt (Gateway Abstraction Layer):
    • Thay vì code cứng (hard-code) một cổng thanh toán duy nhất, dự án áp dụng mô hình thiết kế Strategy Pattern cho phép tích hợp thêm bất kỳ nhà cung cấp dịch vụ thanh toán nào (ZaloPay, ViettelPay, Payoo) chỉ trong dưới 2 ngày làm việc mà không làm gián đoạn hệ sinh thái hiện tại.
  2. Cơ chế chống thất thoát giao dịch (Idempotent Webhook Handler):
    • Ứng dụng khóa phân tán Redis Lock đảm bảo mỗi gói tin IPN từ ngân hàng chỉ được xử lý chính xác một lần, loại trừ hoàn toàn nguy cơ cộng tiền hoa hồng hoặc kích hoạt đơn hàng hai lần khi có sự cố retry từ cổng thanh toán.
  3. Đóng góp cho lĩnh vực tiếp thị liên kết (Affiliate Marketing):
    • Đặt nền móng cho việc chi trả hoa hồng tự động định kỳ cho hàng nghìn Publisher trên hệ thống Civi.vn theo thời gian thực thay vì đối soát thủ công bằng file Excel cuối tháng.

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

Kịch bản sử dụng thực tế (Real-world Use Cases)

  • Kịch bản 1: Mua sắm sản phẩm chăm sóc sức khỏe trên Civi.vn: Khách hàng chọn sản phẩm -> Chọn quét mã VNPAY-QR -> Quét trên Mobile Banking -> Hệ thống nhận IPN trong 1.5 giây -> Đơn hàng tự động chuyển trạng thái "Đã thanh toán" -> Kho tự động in phiếu xuất kho.
  • Kịch bản 2: Nhà quảng cáo (Advertiser) nạp ngân sách chiến dịch: Nạp tiền trực tiếp qua thẻ tín dụng quốc tế Visa/Mastercard, hạn mức được kích hoạt ngay lập tức để duy trì phân phối quảng cáo không bị ngắt quãng.

Phân tích chi phí - lợi ích (Cost-Benefit & ROI)

+-------------------------------------------------------------------------+
|                  HẠNG MỤC PHÂN TÍCH TÀI CHÍNH (CHU KỲ 1 NĂM)             |
+-------------------------------------------------------------------------+
| Chi phí đầu tư ban đầu (Thiết kế, API, Server):        65.000.000 VNĐ   |
| Chi phí duy trì hạ tầng & bảo mật SSL (Hàng năm):       12.000.000 VNĐ   |
| Tiết kiệm chi phí thu hộ COD & nhân sự đối soát:       185.000.000 VNĐ   |
| Doanh thu tăng thêm từ khách thanh toán thẻ/QR:        210.000.000 VNĐ   |
+-------------------------------------------------------------------------+
| LỢI NHUẬN RÒNG ĐEM LẠI:                                 318.000.000 VNĐ   |
| TỶ SUẤT HOÀN VỐN ĐẦU TƯ (ROI):                          412%             |
+-------------------------------------------------------------------------+

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

Hạn chế kỹ thuật

  • Vẫn phụ thuộc vào độ ổn định đường truyền mạng của cổng thanh toán trung gian bên thứ ba (Third-party SLA).
  • Chưa triển khai giải pháp AI/Machine Learning để phát hiện hành vi gian lận thanh toán thẻ (Credit Card Fraud Detection).

Hướng phát triển tiếp theo

  • Tích hợp giải pháp eKYC: Tự động xác thực danh tính Publisher khi thực hiện rút số tiền hoa hồng lớn.
  • Cross-border Payment: Mở rộng cổng thanh toán quốc tế (PayPal, Stripe) nhằm phục vụ các chiến dịch tiếp thị liên kết tại thị trường Đông Nam Á.

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

  • Sinh viên & Học viên: Cung cấp tài liệu tham khảo hoàn chỉnh từ cơ sở lý luận đến quy trình khảo sát thực tế và triển khai kỹ thuật cổng thanh toán điện tử.
  • Lập trình viên (Developers): Cung cấp mẫu thiết kế Adapter Pattern, mã nguồn xử lý chữ ký HMAC-SHA256 chuẩn mực và kiến trúc xử lý Webhook bất đồng bộ.
  • Doanh nghiệp TMĐT & Doanh nghiệp Quảng cáo: Cung cấp giải pháp cắt giảm chi phí vận hành COD, tự động hóa quy trình thanh toán và nâng cao vòng quay vốn lưu động.
  • Nhà nghiên cứu: Bổ sung bộ số liệu thực nghiệm về hành vi thanh toán trực tuyến của người tiêu dùng và nhân viên doanh nghiệp tại Việt Nam.

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

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

Máy chủ cần chạy Linux (Ubuntu 20.04 LTS trở lên), cài đặt PHP >= 7.4 (hỗ trợ các extensions openssl, curl, json, mbstring), MySQL 8.0, Redis 6.0+, và chứng chỉ số SSL/TLS hợp lệ (Let's Encrypt hoặc Commercial SSL) để kích hoạt giao thức HTTPS bắt buộc.

2. Hệ thống xử lý thế nào khi ngân hàng báo trừ tiền nhưng phía Civi.vn chưa nhận được phản hồi?

Hệ thống thiết lập tiến trình Cron Job chạy ngầm định kỳ mỗi 5 phút để gọi API truy vấn trạng thái giao dịch (QueryDR) từ cổng thanh toán. Nếu phía ngân hàng xác nhận giao dịch thành công, hệ thống sẽ tự động bù đắp trạng thái đơn hàng mà không cần khách hàng phải khiếu nại.

3. Làm thế nào để ngăn chặn việc đối tượng xấu giả mạo thông tin callback xác nhận thanh toán?

Mọi gói tin phản hồi từ cổng thanh toán đều phải đi qua hàm kiểm tra chữ ký số verifyIpnResponse. Nếu chuỗi băm tính toán lại từ các tham số gửi về không khớp chính xác với vnp_SecureHash (tạo bằng Secret Key lưu bí mật tại máy chủ Civi), hệ thống sẽ từ chối xử lý và ghi log cảnh báo bảo mật.

4. Chi phí duy trì cổng thanh toán trực tuyến gồm những gì?

Bao gồm phí duy trì chứng chỉ SSL/TLS hàng năm, chi phí máy chủ và phí giao dịch chiết khấu trên mỗi đơn hàng thành công (thường từ 1.1% đến 2.2% tùy thuộc vào thanh toán qua thẻ nội địa hay thẻ quốc tế).

5. Khả năng mở rộng quy mô (Scalability) của hệ thống ra sao khi lượng đơn hàng tăng đột biến?

Do tầng xử lý Webhook IPN được tách biệt và đẩy vào hàng đợi bất đồng bộ của Redis, hệ thống có khả năng chịu tải trên 2.000 giao dịch/phút mà không gây nghẽn Database chính nhờ kỹ thuật ghi nhận không đồng bộ (Asynchronous Queue Workers).


Kết luận

Đề tài "Phát triển các công cụ thanh toán trực tuyến tại website Civi.vn của Công ty Cổ phần Phát triển Hệ thống Kỹ thuật Quảng cáo Việt Tiến Mạnh" đã giải quyết trọn vẹn từ bài toán lý luận học thuật đến thực tiễn kỹ thuật. Bằng việc phân tích sâu sắc các hạn chế trong thói quen tiêu dùng tiền mặt và hiện trạng hạ tầng của công ty, đề tài đã đề xuất và triển khai thành công mô hình tích hợp cổng thanh toán trực tuyến tự động hóa, an toàn với chuẩn mã hóa HMAC-SHA256.

Giải pháp không chỉ giúp VTM-Adtech tối ưu hóa chi phí vận hành, giảm 50% sự phụ thuộc vào phương thức COD mà còn nâng tầm trải nghiệm người dùng, tạo bước đệm vững chắc để nền tảng Civi.vn bứt phá trong thị trường tiếp thị liên kết đầy cạnh tranh.