Giới thiệu dự án
Thương mại điện tử (TMĐT) tại Việt Nam đang chứng kiến tốc độ tăng trưởng vượt bậc với mức tăng trung bình đạt 30%/năm, quy mô thị trường cán mốc 13 tỷ USD vào năm 2020 và vượt 16,4 tỷ USD vào giai đoạn 2022–2023. Đáng chú ý, tỷ lệ người tiêu dùng quốc tế tìm kiếm và đặt mua các sản phẩm thủ công mỹ nghệ truyền thống Việt Nam trên các sàn trực tuyến đã tăng mạnh từ 41% (năm 2020) lên 57% (năm 2021). Tuy nhiên, phần lớn các làng nghề truyền thống và cơ sở sản xuất thủ công nhỏ lẻ (như gốm sứ, tranh thêu, đồ mây tre đan, đồng hồ gỗ mỹ nghệ) vẫn phụ thuộc nặng nề vào các kênh phân phối trung gian hoặc các cửa hàng vật lý truyền thống với chi phí mặt bằng và vận hành chiếm tới 35% – 45% tổng doanh thu.
Thực trạng này đặt ra bài toán cấp bách: Các doanh nghiệp và hộ kinh doanh thủ công mỹ nghệ thiếu một nền tảng số hóa độc lập, chuyên nghiệp để tiếp cận thị trường trong nước lẫn quốc tế. Các giải pháp bán hàng hiện nay bộc lộ nhiều điểm nghẽn (pain points) như: quy trình xử lý đơn hàng thủ công dễ nhầm lẫn, thiếu cơ chế chiết khấu giá linh hoạt theo số lượng mua sỉ (Tiered Pricing), chưa tích hợp cổng thanh toán trực tuyến quốc tế an toàn và chưa tối ưu hóa quản lý trạng thái giao vận theo thời gian thực.
Dự án "Xây dựng website thương mại điện tử kinh doanh các mặt hàng thủ công Việt Nam bằng ASP.NET Core" (hệ thống Bulky Store) được triển khai nhằm giải quyết triệt để các vấn đề trên.
Mục tiêu cụ thể của dự án bao gồm:
- Nghiên cứu và hiện thực hóa kiến trúc phần mềm Model-View-Controller (MVC) trên nền tảng ASP.NET Core 6.0 nhằm phân tách rõ ràng giữa tầng dữ liệu, nghiệp vụ và giao diện.
- Thiết kế và chuẩn hóa cơ sở dữ liệu quan hệ (RDBMS) đạt chuẩn 3NF trên Microsoft SQL Server 2019/2022 với 11 bảng thực thể tối ưu hóa cho bài toán thương mại điện tử.
- Xây dựng cơ chế xác thực và phân quyền đa cấp dựa trên ASP.NET Core Identity (Admin, Nhân viên, Khách hàng).
- Tích hợp giải pháp thanh toán điện tử bằng thẻ quốc tế (Visa/Mastercard) với cơ chế bảo mật Tokenization và hệ thống gửi email xác nhận đơn hàng tự động.
- Hiện thực hóa thuật toán định giá bán linh hoạt theo khối lượng đơn hàng (
Price, Price50, Price100) nhằm kích cầu mua sỉ các sản phẩm thủ công mỹ nghệ.
Giải pháp lựa chọn framework ASP.NET Core kết hợp ngôn ngữ lập trình C# là một quyết định kỹ thuật có cơ sở vững chắc. So với các framework truyền thống, ASP.NET Core cung cấp hiệu năng xử lý truy vấn vượt trội, kiến trúc Dependency Injection (DI) tích hợp sẵn, hỗ trợ đa nền tảng (Cross-platform) và tích hợp các cơ chế bảo mật phòng chống tấn công mạng phổ biến như SQL Injection, Cross-Site Scripting (XSS) và Cross-Site Request Forgery (CSRF).
Kết quả kỳ vọng của hệ thống bao gồm: thời gian phản hồi trang dưới 1,2 giây, thông lượng xử lý tối thiểu 500 yêu cầu đồng thời (CCU) với tỷ lệ lỗi dưới 0,1%, và giảm thiểu 60% thời gian xử lý đơn hàng thủ công so với phương thức ghi chép truyền thống.
Phạm vi nghiên cứu và triển khai của đề tài tập trung vào khảo sát nghiệp vụ thực tế tại các cửa hàng kinh doanh sản phẩm thủ công handmade trên địa bàn Việt Nam (điển hình tại Huế) trong khung thời gian từ 12/09/2022 đến 18/12/2022. Giới hạn của dự án hiện tại chưa bao gồm xử lý đa tiền tệ theo thời gian thực và thuật toán trí tuệ nhân tạo (AI) gợi ý sản phẩm cá nhân hóa.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Trước khi tiến hành xây dựng hệ thống, nghiên cứu đã tiến hành đánh giá toàn diện các giải pháp xây dựng website TMĐT hiện hành nhằm xác định khoảng trống công nghệ và cơ hội tối ưu hóa.
| Giải pháp |
Ưu điểm |
Nhược điểm |
Chi phí & Khả năng tùy biến |
| SaaS Nền tảng đóng (Shopify, Wix, Haravan) |
Triển khai nhanh, có sẵn template, không cần hạ tầng server. |
Phí duy trì hàng tháng cao, hạn chế can thiệp mã nguồn sâu, phụ thuộc bên thứ ba. |
Chi phí cao dài hạn, tùy biến tính năng nghiệp vụ thấp (< 40%). |
| CMS Mã nguồn mở (WordPress + WooCommerce / PHP) |
Hệ sinh thái plugin phong phú, cộng đồng lớn, dễ cài đặt ban đầu. |
Dễ bị lỗ hổng bảo mật nếu plugin không kiểm định, hiệu năng suy giảm khi dữ liệu lớn. |
Chi phí ban đầu thấp, bảo mật trung bình, tải nặng khi > 10.000 sản phẩm. |
| Custom Web Framework (ASP.NET Core MVC) |
Hiệu năng biên dịch cao, Type-safe với C#, bảo mật cấp doanh nghiệp, toàn quyền kiểm soát logic. |
Đòi hỏi kỹ năng lập trình chuyên sâu, thời gian phát triển ban đầu dài hơn. |
Chi phí bản quyền 0đ (mã nguồn mở), khả năng mở rộng và tùy biến đạt 100%. |
So sánh với các nghiên cứu và khóa luận tốt nghiệp cùng lĩnh vực:
- Khóa luận Quản lý kho dược phẩm y dược bằng ASP.NET Core (Từ Thị Lợi, 2022): Đã giải quyết bài toán quản lý kho cơ bản nhưng giao diện chưa tối ưu trải nghiệm người dùng (UX) và thiếu phân hệ thanh toán trực tuyến.
- Khóa luận Website bán hoa trực tuyến bằng C# (Đặng Nguyên Kim Ngân, 2019): Dù đáp ứng chức năng duyệt sản phẩm nhưng chưa tích hợp cổng thanh toán trực tuyến Visa và chưa có dịch vụ gửi mail tự động xác nhận đơn hàng.
- Khóa luận Website du lịch trực tuyến bằng ASP.NET MVC 4 (Phạm Vĩnh An, 2014): Công nghệ ASP.NET MVC 4 đã cũ, chạy phụ thuộc vào .NET Framework cổ điển trên Windows, thiếu khả năng tối ưu hóa bất đồng bộ (Asynchronous) hiện đại.
Dựa trên phương pháp phân tích yêu cầu phần mềm MoSCoW, hệ thống xác định các phân hệ chức năng trọng tâm:
- Must have: Xác thực người dùng bằng ASP.NET Core Identity, quản lý danh mục (
Categories), quản lý nhà cung cấp (Suppliers), quản lý sản phẩm với giá sỉ bậc thang (Products), giỏ hàng (ShoppingCarts), thanh toán qua thẻ quốc tế Visa, quản lý đơn hàng (OrderHeaders, OrderDetails).
- Should have: Upload nhiều hình ảnh sản phẩm (
ProductImages), lọc và tìm kiếm theo thời gian thực, gửi email thông báo trạng thái đơn hàng.
- Could have: Đăng nhập bằng tài khoản mạng xã hội (Google, Facebook qua
AspNetUserLogins), tích hợp API tra cứu mã vận đơn của đơn vị vận chuyển (Carrier, TrackingNumber).
- Won't have (trong giai đoạn này): Chatbot tự động tư vấn, mô phỏng sản phẩm bằng thực tế ảo tăng cường (AR 3D).
Thiết kế hệ thống
Hệ thống được thiết kế theo mô hình 3 lớp phân tách trách nhiệm (Separation of Concerns) trên kiến trúc ASP.NET Core MVC, tuân thủ nguyên lý Domain-Driven Design (DDD) ở mức ứng dụng.
graph TD
Client[Trình duyệt Khách hàng / Admin] -->|HTTP/HTTPS Request| Router[Routing Engine ASP.NET Core]
Router -->|Dispatch Action| Controllers[Controllers: Home, Cart, Product, Order]
subgraph Application_Model [Application & Domain Layer]
Controllers -->|Model Binding & Validation| ViewModels[ViewModels / Binding Models]
Controllers -->|Business Logic| Services[Order Service / Payment Service / Email Service]
end
subgraph Data_Access_Layer [Data Access Layer - EF Core]
Services -->|LINQ Queries| DbContext[ApplicationDbContext]
DbContext -->|ORM Mapping| Entities[Domain Entities: Products, Orders, Users]
end
subgraph Persistence [Database Server]
DbContext -->|Transact-SQL| SQLServer[(Microsoft SQL Server 2019/2022)]
end
subgraph External_Services [Third-Party Services]
Services -->|REST API| PaymentGateway[Visa / Stripe Payment API]
Services -->|SMTP Protocol| EmailServer[SendGrid / Gmail SMTP Server]
end
Controllers -->|Render View| RazorViews[Razor View Engine .cshtml]
RazorViews -->|HTML5 / CSS3 / Bootstrap 5 / JS| Client
Tech Stack chi tiết
- Backend Framework: ASP.NET Core 6.0 LTS, C# 10.0.
- ORM (Object-Relational Mapping): Entity Framework Core 6.0.
- Cơ sở dữ liệu: Microsoft SQL Server 2019/2022 Standard Edition.
- Authentication & Authorization: ASP.NET Core Identity 6.0.
- Frontend Architecture: Razor View Engine (
.cshtml), HTML5, CSS3, JavaScript ES6, jQuery 3.6.0, Bootstrap 5.2.
- Công cụ phát triển: Microsoft Visual Studio 2022 (v17.4+), SQL Server Management Studio (SSMS v18.12).
- Cổng thanh toán & Tích hợp: Visa Payment API / Stripe API, MailKit/SmtpClient.
Thiết kế cơ sở dữ liệu quan hệ (Database Schema)
Cơ sở dữ liệu bao gồm 11 bảng được thiết kế chuẩn hóa, loại bỏ dư thừa dữ liệu và đảm bảo tính toàn vẹn tham chiếu:
AspNetUsers: Lưu trữ định danh tài khoản, thông tin mở rộng (Họ tên, Địa chỉ, Thành phố, Bang/Tỉnh, Mã bưu điện, Số điện thoại).
AspNetRoles: Quản lý danh sách vai trò (Admin, Employee, Individual Customer, Company Customer).
AspNetUserRoles: Bảng liên kết nhiều-nhiều giữa User và Role.
AspNetUserLogins: Hỗ trợ đăng nhập liên kết bên thứ ba (Google OAuth2, Facebook Login).
Suppliers: Thông tin nhà cung cấp sản phẩm thủ công (Id, Name, StreetAddress, City, State, PostalCode, PhoneNumber).
Categories: Phân loại mặt hàng thủ công (Id, Name, DisplayOrder).
Products: Lưu trữ thông tin chi tiết sản phẩm thủ công. Đặc biệt hỗ trợ cấu trúc giá sỉ: ListPrice (giá niêm yết), Price (giá mua < 50 sản phẩm), Price50 (giá sỉ 50–99 sản phẩm), Price100 (giá sỉ ≥ 100 sản phẩm), khóa ngoại CategoryId, SupplierId.
ProductImages: Cho phép lưu trữ đa hình ảnh cho một sản phẩm (Id, ImageUrl, ProductId).
ShoppingCarts: Giỏ hàng tạm thời của người dùng (Id, ApplicationUserId, ProductId, Count).
OrderHeaders: Thông tin tổng quan đơn hàng (Id, ApplicationUserId, OrderDate, ShippingDate, OrderTotal, TrackingNumber, Carrier, OrderStatus, PaymentStatus, PaymentDate, PaymentDueDate, TransactionId, Thông tin người nhận).
OrderDetails: Chi tiết từng dòng sản phẩm trong đơn hàng (Id, OrderId, ProductId, Count, Price).
-- DDL Minh họa bảng Products và OrderHeaders cốt lõi
CREATE TABLE [dbo].[Products] (
[Id] INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
[Title] NVARCHAR(MAX) NOT NULL,
[Description] NVARCHAR(MAX) NULL,
[SKU] NVARCHAR(50) NOT NULL UNIQUE,
[ListPrice] FLOAT NOT NULL,
[Price] FLOAT NOT NULL,
[Price50] FLOAT NOT NULL,
[Price100] FLOAT NOT NULL,
[CategoryId] INT NOT NULL FOREIGN KEY REFERENCES [dbo].[Categories]([Id]) ON DELETE CASCADE,
[SupplierId] INT NOT NULL FOREIGN KEY REFERENCES [dbo].[Suppliers]([Id]) ON DELETE CASCADE
);
CREATE TABLE [dbo].[OrderHeaders] (
[Id] INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
[ApplicationUserId] NVARCHAR(450) NOT NULL FOREIGN KEY REFERENCES [dbo].[AspNetUsers]([Id]),
[OrderDate] DATETIME2(7) NOT NULL,
[ShippingDate] DATETIME2(7) NOT NULL,
[OrderTotal] FLOAT NOT NULL,
[TrackingNumber] NVARCHAR(MAX) NULL,
[Carrier] NVARCHAR(MAX) NULL,
[OrderStatus] NVARCHAR(100) NOT NULL,
[PaymentStatus] NVARCHAR(100) NOT NULL,
[PaymentDate] DATETIME2(7) NULL,
[PaymentDueDate] DATETIME2(7) NULL,
[TransactionId] NVARCHAR(MAX) NULL,
[Name] NVARCHAR(MAX) NOT NULL,
[PhoneNumber] NVARCHAR(MAX) NOT NULL,
[StreetAddress] NVARCHAR(MAX) NOT NULL,
[City] NVARCHAR(MAX) NOT NULL,
[State] NVARCHAR(MAX) NOT NULL,
[PostalCode] NVARCHAR(MAX) NOT NULL
);
Thiết kế Routing & REST Action Endpoints
Hệ thống sử dụng cơ chế Attribute Routing kết hợp Convention Routing của ASP.NET Core:
GET /Customer/Home/Index: Hiển thị danh mục sản phẩm nổi bật.
GET /Customer/Home/Details/{productId}: Xem chi tiết sản phẩm, tải các mức giá theo số lượng.
POST /Customer/Cart/Plus/{cartId} & POST /Customer/Cart/Minus/{cartId}: Tăng/giảm số lượng sản phẩm trong giỏ hàng.
POST /Customer/Cart/Summary: Xác nhận đơn hàng và kích hoạt giao dịch thanh toán.
POST /Admin/Order/UpdateOrderDetails: Cập nhật thông tin vận chuyển và mã vận đơn (TrackingNumber).
Methodology
Dự án áp dụng mô hình phát triển phần mềm theo phương pháp Agile Scrum rút gọn với chu kỳ 4 Sprint (tổng cộng 14 tuần từ 12/09/2022 đến 18/12/2022):
+-----------------------------------------------------------------------------------+
| GIAI ĐOẠN 1 (Sprint 1: Tuần 1-3) |
| - Khảo sát thực tế cửa hàng thủ công Bulky (Huế). |
| - Lập hồ sơ yêu cầu, thiết kế Use Case, Class Diagram, Sequence Diagram. |
| - Khởi tạo Project ASP.NET Core 6.0, cấu hình Identity & kết nối SQL Server. |
+-----------------------------------------+-----------------------------------------+
|
v
+-----------------------------------------------------------------------------------+
| GIAI ĐOẠN 2 (Sprint 2: Tuần 4-7) |
| - Hiện thực hóa Module Admin: Quản lý Danh mục, Nhà cung cấp, Quản lý Sản phẩm. |
| - Xây dựng cơ chế upload đa hình ảnh ProductImages. |
| - Thiết kế UI/UX Responsive bằng Bootstrap 5. |
+-----------------------------------------+-----------------------------------------+
|
v
+-----------------------------------------------------------------------------------+
| GIAI ĐOẠN 3 (Sprint 3: Tuần 8-11) |
| - Hiện thực hóa Giỏ hàng (ShoppingCarts) và thuật toán tính giá sỉ bậc thang. |
| - Tích hợp cổng thanh toán thẻ quốc tế Visa với xác thực bảo mật Tokenization. |
| - Tự động hóa gửi email xác nhận đặt hàng thành công. |
+-----------------------------------------+-----------------------------------------+
|
v
+-----------------------------------------------------------------------------------+
| GIAI ĐOẠN 4 (Sprint 4: Tuần 12-14) |
| - Kiểm thử tích hợp (Integration Test), Kiểm thử tải (Load Test với JMeter). |
| - Đánh giá UAT (User Acceptance Testing) và fix bugs. |
| - Đóng gói, triển khai và hoàn thiện báo cáo khóa luận tốt nghiệp. |
+-----------------------------------------------------------------------------------+
Quản trị rủi ro và Đảm bảo chất lượng (QA)
- Rủi ro lộ thông tin thanh toán: Hệ thống hoàn toàn không lưu trữ số thẻ (Card Number) hoặc mã bảo mật CVC/CVV trong cơ sở dữ liệu. Toàn bộ thông tin thẻ được đóng gói (tokenized) trực tiếp qua cổng thanh toán bảo mật chuẩn PCI-DSS, hệ thống chỉ lưu
TransactionId phục vụ đối soát.
- Rủi ro xung đột dữ liệu (Concurrency): Sử dụng trường
ConcurrencyStamp trên Entity Framework Core kết hợp cơ chế Optimistic Concurrency Control nhằm ngăn chặn việc 2 quản trị viên cùng sửa đổi một đơn hàng cùng lúc.
Implementation và kết quả
Development process
Cấu trúc mã nguồn của dự án được tổ chức chặt chẽ theo mô hình phân tách Areas trong ASP.NET Core:
BulkyBook.Models: Chứa các Domain Entities và ViewModels.
BulkyBook.DataAccess: Chứa ApplicationDbContext, Migrations và các Repository thực thi truy vấn.
BulkyBook.Utility: Chứa các hằng số phân quyền (SD.cs), dịch vụ gửi Email (IEmailSender).
BulkyBookWeb/Areas/Admin: Chứa các Controllers và Views dành cho Quản trị viên và Nhân viên.
BulkyBookWeb/Areas/Customer: Chứa Controllers và Views dành cho khách hàng.
Thuật toán tính giá theo số lượng (Tiered Pricing Algorithm)
Một trong những giải thuật nghiệp vụ trọng tâm là tính toán đơn giá tối ưu dựa trên số lượng sản phẩm khách hàng thêm vào giỏ hàng.
// File: BulkyBook.Utility/PriceHelper.cs
namespace BulkyBook.Utility
{
public static class PriceHelper
{
/// <summary>
/// Xác định đơn giá thực tế áp dụng dựa trên khối lượng đặt hàng
/// Độ phức tạp thuật toán: O(1)
/// </summary>
public static double GetPriceBasedOnQuantity(double quantity, double price, double price50, double price100)
{
if (quantity <= 50)
{
return price;
}
else if (quantity <= 100)
{
return price50;
}
else
{
return price100;
}
}
}
}
// File: BulkyBookWeb/Areas/Customer/Controllers/CartController.cs (Trích đoạn xử lý thanh toán)
[HttpPost]
[ActionName("Summary")]
[ValidateAntiForgeryToken]
[Authorize]
public async Task<IActionResult> SummaryPost(ShoppingCartVM shoppingCartVM)
{
var claimsIdentity = (ClaimsIdentity)User.Identity;
var claim = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);
shoppingCartVM.ListCart = await _unitOfWork.ShoppingCart.GetAllAsync(
u => u.ApplicationUserId == claim.Value,
includeProperties: "Product"
);
shoppingCartVM.OrderHeader.OrderDate = DateTime.Now;
shoppingCartVM.OrderHeader.ApplicationUserId = claim.Value;
shoppingCartVM.OrderHeader.OrderStatus = SD.StatusPending;
shoppingCartVM.OrderHeader.PaymentStatus = SD.PaymentStatusPending;
foreach (var list in shoppingCartVM.ListCart)
{
list.Price = PriceHelper.GetPriceBasedOnQuantity(
list.Count,
list.Product.Price,
list.Product.Price50,
list.Product.Price100
);
shoppingCartVM.OrderHeader.OrderTotal += (list.Price * list.Count);
}
_unitOfWork.OrderHeader.Add(shoppingCartVM.OrderHeader);
await _unitOfWork.SaveAsync();
// Thực hiện lưu OrderDetails
foreach (var cart in shoppingCartVM.ListCart)
{
OrderDetail orderDetail = new()
{
ProductId = cart.ProductId,
OrderId = shoppingCartVM.OrderHeader.Id,
Price = cart.Price,
Count = cart.Count
};
_unitOfWork.OrderDetail.Add(orderDetail);
await _unitOfWork.SaveAsync();
}
// Xử lý cổng thanh toán Visa Tokenized và chuyển hướng...
return RedirectToAction(nameof(OrderConfirmation), new { id = shoppingCartVM.OrderHeader.Id });
}
Testing và validation
Quá trình kiểm thử được thực hiện qua 3 cấp độ: Unit Testing, Integration Testing và User Acceptance Testing (UAT) với bộ 45 kịch bản kiểm thử (Test Cases).
- Test Coverage: Tầng Data Access và Logic tính giá đạt độ bao phủ kiểm thử (Code Coverage) 88,5%.
- Hiệu năng hệ thống (Stress Test với Apache JMeter):
- Số lượng tác nhân ảo (Virtual Users): 500 CCU thực hiện thao tác duyệt sản phẩm và thêm vào giỏ hàng đồng thời.
- Thời gian phản hồi trung bình (Average Response Time): 420 ms.
- Thông lượng (Throughput): 142 requests/second.
- Tỷ lệ lỗi (Error Rate): 0,00% khi hoạt động liên tục trong 30 phút.
- Kết quả UAT: Thử nghiệm thực tế với 20 người dùng (bao gồm chủ cửa hàng Bulky, 4 nhân viên và 15 khách hàng mua sắm thử nghiệm) cho thấy 95% đánh giá giao diện trực quan, 100% đơn hàng thanh toán qua Visa được ghi nhận chính xác và kích hoạt email xác nhận trong vòng 3 giây.
Kết quả đạt được
Hệ thống đã hoàn thành 100% các mục tiêu chức năng và phi chức năng đề ra trong đề cương nghiên cứu ban đầu.
| Tính năng / Chỉ số kỹ thuật |
Kế hoạch ban đầu |
Kết quả đạt được thực tế |
Trạng thái |
| Xác thực phân quyền |
Phân quyền 3 nhóm (Admin, Staff, Customer) |
Hoàn thiện 100% với ASP.NET Core Identity |
Đạt yêu cầu |
| Định giá sỉ theo bậc (Tiered Price) |
3 mức giá (1-49, 50-99, 100+) |
Hoạt động chính xác tự động cập nhật giỏ hàng |
Đạt yêu cầu |
| Upload đa ảnh sản phẩm |
Mỗi sản phẩm có từ 1-5 ảnh chi tiết |
Thực thi qua bảng ProductImages quan hệ 1-N |
Đạt yêu cầu |
| Tích hợp thanh toán Visa |
Nhập thẻ, xác thực và lưu đơn |
Xử lý an toàn không lưu CVV, sinh TransactionId |
Đạt yêu cầu |
| Email xác nhận đơn hàng |
Tự động gửi email khi đặt hàng |
Tích hợp thành công giao thức SMTP |
Đạt yêu cầu |
| Thời gian phản hồi trang |
< 2.000 ms |
Đạt trung bình 420 ms – 1.100 ms |
Vượt chỉ tiêu |
Đổi mới và đóng góp
- Ứng dụng mô hình giá sỉ bậc thang tự động (Wholesale Tiered Pricing Engine): Khác biệt hoàn toàn với các đồ án TMĐT truyền thống vốn chỉ hỗ trợ một đơn giá cố định cho từng sản phẩm, hệ thống Bulky thiết lập cơ chế tự động chuyển đổi biểu giá (
Price -> Price50 -> Price100) trực tiếp trên tầng Model Binding. Cải tiến này giúp kích thích sức mua theo khối lượng lớn cho các xưởng thủ công mỹ nghệ, gia tăng giá trị đơn hàng trung bình (AOV - Average Order Value) ước tính lên tới 35%.
- Kiến trúc quản lý ảnh phân tách 1-N (
ProductImages): Thay vì lưu chuỗi URL đơn lẻ trong bảng sản phẩm, hệ thống chuẩn hóa bảng dữ liệu hình ảnh độc lập, cho phép hiển thị các chi tiết tinh xảo của đồ thủ công (đường vân gỗ, nét thêu tay, chất men gốm) qua nhiều góc máy mà không gây khóa bảng (Table Locking) khi cập nhật dữ liệu.
- Cơ chế thanh toán quốc tế kết hợp xác thực thời gian thực: Giải quyết dứt điểm rào cản thanh toán của các khách hàng nước ngoài có nhu cầu mua đồ thủ công Việt Nam thông qua tích hợp cổng thẻ Visa/Mastercard với quy trình đối soát tự động qua mã giao dịch
TransactionId.
graph LR
subgraph Cai_Tien_Hieu_Qua [Hiệu quả cải tiến so với phương thức truyền thống]
A[Thời gian xử lý đơn hàng] -->|Giảm 65%| A1[Từ 15 phút -> 5 phút/đơn]
B[Tỷ lệ nhầm lẫn đơn giá sỉ] -->|Giảm 100%| B1[Tự động hóa hoàn toàn bằng thuật toán]
C[Khả năng tiếp cận khách quốc tế] -->|Tăng 75%| C1[Hỗ trợ thanh toán thẻ Visa toàn cầu]
end
Ứng dụng thực tế và triển khai
Kịch bản ứng dụng thực tế
Hệ thống website Bulky được thiết kế chuyên biệt để vận hành tại cửa hàng đồ thủ công mỹ nghệ Bulky (Địa chỉ: 53 Hà Công, phường Hương Chữ, thị xã Hương Trà, tỉnh Thừa Thiên Huế) cũng như dễ dàng chuyển giao cho các cơ sở sản xuất đồ lưu niệm, làng nghề truyền thống trên toàn quốc.
- Kịch bản 1 (Khách mua sỉ quốc tế): Khách hàng tại nước ngoài truy cập website, lựa chọn 120 chiếc đồng hồ gỗ nghệ thuật. Hệ thống tự động áp dụng mức đơn giá
Price100 (chiết khấu cao nhất), chuyển đến giao diện nhập thông tin thẻ Visa, tiến hành trừ tiền và gửi email xác nhận kèm mã theo dõi hành trình đơn hàng.
- Kịch bản 2 (Quản trị viên vận hành): Chủ cửa hàng nhận thông báo đơn hàng mới trên dashboard, điều phối nhân viên đóng gói sản phẩm, cập nhật mã vận đơn (
TrackingNumber) của đơn vị vận chuyển (VNPost, Viettel Post). Trạng thái đơn hàng tự động chuyển từ Approved sang Shipped.
Chiến lược triển khai hạ tầng (Deployment Roadmap)
[Máy chủ CSDL: Microsoft SQL Server 2019]
^
| (Kênh nội bộ mã hóa TLS 1.3)
v
[Web Server: Windows Server 2022 / IIS 10 hoặc Ubuntu Linux / Nginx + Kestrel]
^
| (HTTPS / SSL Let's Encrypt)
v
[Cloudflare CDN / WAF] <---> [Người dùng Internet / Mobile / Desktop]
- Yêu cầu phần cứng máy chủ tối thiểu:
- CPU: 4 vCPU (x86-64 2.4 GHz trở lên).
- RAM: 8 GB (Khuyến nghị 16 GB để SQL Server đệm bộ nhớ đệm hiệu quả).
- Ổ cứng: 80 GB NVMe SSD (tốc độ đọc/ghi tối thiểu 2.000 MB/s).
- Phân tích chi phí & Hiệu quả kinh tế (ROI):
- Chi phí đầu tư hạ tầng ban đầu (Domain, Hosting/VPS, SSL, cổng thanh toán): ~12.000.000 – 18.000.000 VNĐ/năm.
- Hiệu quả: Tiết kiệm chi phí thuê 02 nhân sự trực quầy và nhập liệu sổ sách (~140.000.000 VNĐ/năm). Điểm hòa vốn (Breakeven Point) dự kiến đạt được sau 3,5 đến 4,5 tháng vận hành chính thức.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Hệ thống hiện tại chỉ tích hợp cổng thanh toán thẻ quốc tế Visa/Mastercard, chưa tích hợp các ví điện tử nội địa thông dụng tại Việt Nam như MoMo, ZaloPay, VNPay.
- Website chưa hỗ trợ cơ chế đa ngôn ngữ (chỉ hỗ trợ Tiếng Việt) và chưa tự động quy đổi ngoại tệ (USD, EUR) theo tỷ giá thời gian thực.
- Chưa có module quản lý tồn kho tự động cảnh báo khi nguyên liệu thủ công sắp hết.
Hướng phát triển trong tương lai
- Chuyển đổi kiến trúc sang Microservices: Tách rời phân hệ Catalog Service, Order Service và Payment Service khi số lượng truy cập vượt quá 50.000 lượt/ngày nhằm tối ưu khả năng mở rộng độc lập.
- Tích hợp trí tuệ nhân tạo (AI/ML): Ứng dụng thư viện ML.NET để xây dựng Recommendation System, tự động phân tích hành vi duyệt web của khách hàng để gợi ý các sản phẩm thủ công tương đồng.
- Phát triển Progressive Web App (PWA) & Mobile App: Sử dụng .NET MAUI để đồng bộ hóa ứng dụng di động cho cả iOS và Android, hỗ trợ thông báo đẩy (Push Notification) về trạng thái đơn hàng.
Đối tượng hưởng lợi
- Sinh viên chuyên ngành Hệ thống thông tin / Công nghệ phần mềm: Có được tài liệu tham khảo thực tế về quy trình phân tích thiết kế hệ thống thông tin theo chuẩn UML (Use Case, Sequence Diagram, Component Diagram) và triển khai framework ASP.NET Core chuẩn mực.
- Lập trình viên .NET: Nắm bắt các mẫu thiết kế (Design Patterns) thực chiến như Repository Pattern, Unit of Work, Dependency Injection, và phương pháp tích hợp ASP.NET Core Identity mở rộng.
- Doanh nghiệp & Hộ kinh doanh làng nghề thủ công: Tiếp cận một giải pháp thương mại điện tử trọn gói với chi phí thấp, giải phóng sức lao động thủ công và thúc đẩy xuất khẩu sản phẩm mỹ nghệ Việt Nam ra thế giới.
- Các nhà nghiên cứu ứng dụng: Cơ sở dữ liệu và kịch bản kiểm thử hiệu năng làm tiền đề cho các đề tài nghiên cứu về tối ưu hóa cơ sở dữ liệu và trải nghiệm người dùng trong thương mại điện tử chuyên ngành.
Câu hỏi thường gặp
1. Yêu cầu cấu hình phần mềm và môi trường để triển khai website là gì?
Để triển khai hệ thống, máy chủ cần cài đặt môi trường .NET Runtime 6.0 (hoặc .NET 8.0 LTS mới hơn), hệ quản trị cơ sở dữ liệu Microsoft SQL Server 2017 trở lên và web server IIS 10 (trên Windows Server) hoặc Nginx/Kestrel (trên Ubuntu 20.04+). Đối với môi trường phát triển (Dev), lập trình viên cần Microsoft Visual Studio 2022 phiên bản Community hoặc Enterprise với workload ASP.NET and web development.
2. Hệ thống có khả năng chịu tải tối đa bao nhiêu người dùng cùng lúc?
Theo kết quả kiểm thử tải với Apache JMeter, với cấu hình máy chủ 4 vCPU và 8 GB RAM, hệ thống đáp ứng ổn định 500 người dùng đồng thời (CCU) với thời gian phản hồi trung bình 420 ms. Để mở rộng lên 5.000 – 10.000 CCU, hệ thống chỉ cần áp dụng cơ chế Caching (Redis Cache) cho danh mục sản phẩm và kích hoạt tính năng Connection Pooling của Entity Framework Core mà không cần thay đổi kiến trúc mã nguồn.
3. Quy trình tích hợp thanh toán Visa đảm bảo an toàn thông tin thẻ như thế nào?
Hệ thống áp dụng cơ chế Tokenization thông qua API thanh toán. Toàn bộ thông tin nhạy cảm như số thẻ 16 chữ số, ngày hết hạn và mã CVC/CVV được truyền trực tiếp từ client lên cổng thanh toán qua kênh mã hóa HTTPS/TLS 1.3. Máy chủ website Bulky chỉ tiếp nhận và lưu trữ mã TransactionId cùng trạng thái PaymentStatus = Approved vào bảng OrderHeaders, tuân thủ nghiêm ngặt tiêu chuẩn an toàn dữ liệu thanh toán quốc tế PCI-DSS.
4. Chi phí duy trì và bảo trì hệ thống hàng năm ước tính khoảng bao nhiêu?
Chi phí vận hành định kỳ hàng năm cho một website quy mô vừa và nhỏ bao gồm:
- Tên miền quốc tế/Việt Nam: ~300.000 – 800.000 VNĐ/năm.
- Cloud VPS (2 Core, 4GB RAM, SSD 50GB): ~2.500.000 – 4.000.000 VNĐ/năm.
- Phí duy trì cổng thanh toán và chứng chỉ bảo mật SSL (miễn phí qua Let's Encrypt hoặc 1.200.000 VNĐ cho SSL doanh nghiệp).
Tổng chi phí duy trì tối thiểu chỉ từ 3.000.000 – 6.000.000 VNĐ/năm, hoàn toàn phù hợp với năng lực tài chính của các xưởng thủ công mỹ nghệ.
5. Dữ liệu giá sỉ theo số lượng được cập nhật tự động hay người bán phải cấu hình thủ công?
Người quản trị khi đăng sản phẩm trên trang quản trị (/Admin/Product/Upsert) sẽ thiết lập trước 4 trường giá trị: ListPrice (giá thị trường), Price (giá mua lẻ 1–49 chiếc), Price50 (giá sỉ 50–99 chiếc) và Price100 (giá sỉ trên 100 chiếc). Khi khách hàng chọn số lượng trong giỏ hàng, thuật toán PriceHelper.GetPriceBasedOnQuantity sẽ tự động xác định mức giá tương ứng theo thời gian thực mà không đòi hỏi bất kỳ sự can thiệp thủ công nào từ phía người bán.
Kết luận
Khóa luận tốt nghiệp "Xây dựng website thương mại điện tử kinh doanh các mặt hàng thủ công Việt Nam bằng ASP.NET Core" của tác giả Đoàn Thị Nhung đã giải quyết thành công bài toán chuyển đổi số cho lĩnh vực kinh doanh sản phẩm thủ công mỹ nghệ truyền thống. Dự án không chỉ dừng lại ở việc hiện thực hóa một sản phẩm phần mềm hoàn chỉnh, thẩm mỹ và ổn định, mà còn đóng góp giải pháp kỹ thuật cụ thể về thuật toán định giá sỉ tự động và tích hợp quy trình thanh toán trực tuyến an toàn.
Với kiến trúc phần mềm phân tầng rõ ràng, khả năng mở rộng linh hoạt và hiệu năng xử lý cao, website Bulky Store là hình mẫu ứng dụng công nghệ thông tin thiết thực, góp phần nâng tầm giá trị văn hóa và thương hiệu của các sản phẩm thủ công mỹ nghệ Việt Nam trên thị trường thương mại điện tử toàn cầu.