paint-brush
Phát triển và tùy chỉnh giỏ hàng dựa trên ASP.NET với thương mại điện tửtừ tác giả@nopcommerce
643 lượt đọc
643 lượt đọc

Phát triển và tùy chỉnh giỏ hàng dựa trên ASP.NET với thương mại điện tử

từ tác giả nopCommerce7m2023/03/21
Read on Terminal Reader

dài quá đọc không nổi

Một nhiệm vụ đầy thách thức trong việc xây dựng một cửa hàng Thương mại Điện tử là một giỏ hàng. Tìm hiểu cách tùy chỉnh giỏ hàng ASP.NET hiệu quả với nopC Commerce.
featured image - Phát triển và tùy chỉnh giỏ hàng dựa trên ASP.NET với thương mại điện tử
nopCommerce HackerNoon profile picture
0-item


Một thành phần thiết yếu của cửa hàng trực tuyến là giỏ hàng. Nó cũng có thể là một trong những thành phần khó tạo nhất cho trang web Thương mại điện tử. Khách hàng có thể chọn các thứ, đánh giá các lựa chọn của họ, chỉnh sửa chúng, thêm các mặt hàng khác nếu cần và sau đó mua các mặt hàng bằng cách sử dụng giỏ hàng. Trong quá trình thanh toán, chương trình thường tạo tổng đơn hàng có tính đến phí bưu chính, đóng gói và xử lý cũng như thuế, nếu có.


Trong trường hợp của thương mại điện tử, giỏ hàng cũng như danh sách yêu thích được tích hợp sẵn. Nếu được bật trong khu vực quản trị, mỗi sản phẩm có thể được đưa vào giỏ hàng hoặc danh sách yêu thích. Có thể vô hiệu hóa giỏ hàng và danh sách mong muốn của thương mại điện tử, trang danh sách kiểm soát truy cập có thể được sử dụng để định cấu hình. Chỉ cần tìm các quyền "Bật giỏ hàng" và "Bật danh sách yêu thích" cho hồ sơ khách hàng được yêu cầu và bỏ chọn chúng.


Cấu hình giỏ hàng


Để tìm hiểu thêm về chức năng giỏ hàng, cũng như cách các thành phần khác của nopC Commerce hoạt động, chúng tôi khuyên bạn nên tham gia khóa đào tạo thương mại điện tử , đã được sáng tác bởi nhóm các nhà phát triển cốt lõi.

Cấu trúc giỏ hàng của nền tảng Thương mại điện tử .NET

Để bắt đầu, hãy mở và xem trang giỏ hàng. Lúc đầu, nó có chế độ xem tóm tắt về đơn đặt hàng với các thuộc tính thanh toán đã chọn, giá, số lượng (có thể điều chỉnh), tổng cho từng mặt hàng được thêm và một nút xóa.


Tiếp theo, khách hàng có thể thêm vận chuyển ước tính, cũng như chọn thuộc tính thanh toán và nhập mã giảm giá và thẻ quà tặng. Cuối cùng, một đơn đặt hàng được tính toán và nó được cung cấp để tiến hành thanh toán, nơi khách hàng nhập thông tin thanh toán và giao hàng và thanh toán.


giỏ hàng nopC Commerce


Nhân tiện, tất cả các phương thức hành động liên quan đến giỏ hàng đều được đặt trong ShoppingCartController từ Nop.Web. Các phương pháp này cho phép khách hàng tương tác với tất cả các thành phần trang.


Mua SắmGiỏ HàngĐiều Khiển


Hãy chia nhỏ tất cả các thành phần chính của chức năng giỏ hàng nopC Commerce. Nó bao gồm các thuộc tính thanh toán, giảm giá và hộp thẻ quà tặng, bước tính tổng và quy trình thanh toán. Điều quan trọng là phải xem xét cấu trúc cơ sở dữ liệu.

thuộc tính thanh toán

Bắt đầu với các thuộc tính thanh toán, chúng được hiển thị trên trang giỏ hàng và tạo cơ hội cung cấp nhiều dịch vụ hơn cho khách hàng, chẳng hạn như gói quà, trước khi đặt hàng.


Thuộc tính Checkout có các lớp dịch vụ riêng trong thư mục Nop.Services.Orders và được lưu trữ dưới dạng XML trong cột CheckoutAttributesXml của bảng Đơn hàng. Tất cả chúng đều có chức năng gần như giống nhau như thuộc tính sản phẩm.


Lớp CheckoutAttributeService


Lớp CheckoutAttributeService


Cột CheckoutAttributesXml


Cột CheckoutAttributesXml

hộp giảm giá

Tính năng tiếp theo của giỏ hàng là hộp giảm giá. Nó cho phép khách hàng nhập mã phiếu giảm giá để áp dụng giảm giá cho tổng số đơn đặt hàng hoặc giao hàng. Tính năng giảm giá có thư mục riêng nằm trong phần Nop.Services. Mọi quy tắc và logic của quy trình thực hiện giảm giá đều có thể được điều chỉnh ở đó.


Nói về cơ sở dữ liệu, bản thân các khoản giảm giá được lưu trữ trong bảng Giảm giá. Ngoài ra còn có một vài bảng ánh xạ lưu trữ cách giảm giá được ánh xạ tới sản phẩm, nhà sản xuất và danh mục. Bảng Yêu cầu giảm giá lưu trữ các yêu cầu giảm giá xác định trường hợp nào nên áp dụng giảm giá. Bảng cuối cùng là bảng DiscountUsageHistory lưu trữ thông tin về giảm giá áp dụng cho đơn đặt hàng.


bảng chiết khấu

hộp thẻ quà tặng

Thành phần khác của giỏ hàng là hộp thẻ quà tặng. Khách hàng nên nhập mã tại đây để áp dụng thẻ quà tặng. Thẻ quà tặng là một loại sản phẩm đặc biệt. Bạn có thể đánh dấu sản phẩm là thẻ quà tặng trên trang chi tiết sản phẩm và bán thẻ quà tặng mà khách hàng có thể sử dụng theo cách này. Sau khi khách hàng hoàn tất giao dịch mua sản phẩm thẻ quà tặng, bạn có thể tìm kiếm và xem danh sách tất cả các thẻ quà tặng đã mua tại đây.


Trong trường hợp bạn cần định cấu hình chức năng thẻ quà tặng, bạn có thể sử dụng lớp GiftCardService nằm trong thư mục Nop.Service.Orders.


GiftCard lớp dịch vụ


Xem xét cơ sở dữ liệu, thẻ quà tặng được tạo thủ công hoặc mua dưới dạng sản phẩm được lưu trữ trong bảng GiftCard. Sau khi thẻ quà tặng được sử dụng theo thứ tự, bản ghi thích hợp sẽ được chèn vào bảng GiftCardUsageHistory của cơ sở dữ liệu.


Bảng quà tặng


Một khách hàng có thể áp dụng cả giảm giá và thẻ quà tặng trên trang giỏ hàng.

Tổng số

Khối thú vị cuối cùng trên trang giỏ hàng là tổng số giỏ hàng. Chúng được tính toán dựa trên các mặt hàng trong giỏ hàng, chiết khấu và thuế đã áp dụng, phương thức vận chuyển và thanh toán đã chọn. Tổng cộng bao gồm một vài hàng:


  1. Tổng phụ. Tổng phụ là tổng của tất cả các mặt hàng và số lượng trong giỏ hàng, bao gồm cả các chương trình khuyến mãi mặt hàng được áp dụng;
  2. Vận chuyển là chi phí vận chuyển được tính dựa trên địa chỉ giao hàng của khách hàng;
  3. Sau đó, các loại thuế áp dụng được hiển thị. nopC Commerce cung cấp các plugin thuế cho phép áp dụng thuế theo cách thủ công hoặc tự động cho các sản phẩm;
  4. Phương thức thanh toán hàng phí bổ sung là tự mô tả. Nó có thể được thiết lập trên trang cấu hình phương thức thanh toán;
  5. Sau đó, nó sẽ hiển thị các giảm giá và thẻ quà tặng được áp dụng;
  6. Điểm thưởng nếu áp dụng;
  7. Và cuối cùng là tổng đơn hàng.


tổng số


Tổng số đơn đặt hàng được tính toán trong OrderTotalCalculationService từ Nop.Services.Orders. Như bạn có thể thấy, nó chứa các phương thức như GetShoppingCartShippingTotal, GetTaxTotal, các phương thức liên quan đến điểm thưởng, chiết khấu và các phương thức khác. Đổi lại, phí bổ sung cho phương thức thanh toán được tính trong dịch vụ thanh toán của Nop.Services.Payments.


Lớp OrderTotalCalculationService

quy trình thanh toán

Để có cái nhìn rõ ràng hơn về toàn bộ trải nghiệm mua hàng, điều quan trọng là phải xem xét quy trình thanh toán. Thanh toán bắt đầu khi khách hàng rời khỏi giỏ hàng để tiến hành thanh toán và vận chuyển.


nopC Commerce cung cấp hai loại thiết kế quy trình thanh toán. Chúng là thanh toán một trang, được đặt theo mặc định và thanh toán với nhiều trang. Thanh toán một trang cho phép khách hàng thực hiện toàn bộ quy trình thanh toán bằng một trang duy nhất. Bạn có thể thiết lập điều này trên trang Cài đặt đơn hàng. Nhân tiện, bạn có thể tạm thời tắt tính năng thanh toán cho khách hàng của mình nếu cần trong cùng phần Thanh toán.


Một khách hàng trải qua các bước sau trong quá trình thanh toán:


  1. Một khách hàng cần nhập địa chỉ thanh toán;
  2. Sau đó, địa chỉ giao hàng;
  3. Sau đó, họ cần chọn một phương thức vận chuyển;
  4. Và một phương thức thanh toán;
  5. Sau đó, chúng tôi hiển thị thông tin thanh toán cần thiết cho khách hàng;
  6. Và cuối cùng là bước xác nhận khi khách hàng xác nhận đơn hàng.


Có nhiều điều kiện hơn ảnh hưởng đến số bước thanh toán. Chúng có thể được điều chỉnh trong cài đặt Đơn hàng.


Tất cả các phương thức hành động liên quan đến quy trình thanh toán được đặt trong CheckoutController. Như bạn có thể thấy, bộ điều khiển này có các vùng riêng biệt: dành cho thanh toán nhiều bước và thanh toán một trang. Phương thức kiểm tra nhiều bước trả về dạng xem, trong khi kết quả là phương thức kiểm tra một trang trả về JSON. Không có dịch vụ riêng biệt quản lý quy trình thanh toán. Tất cả công việc được thực hiện trong bộ điều khiển.


Kiểm soát thanh toán

Hoạt động cơ sở dữ liệu của giỏ mua hàng ASP.NET

Trong thương mại điện tử, cả giỏ hàng và danh sách yêu thích đều có cấu trúc giống nhau. Để hiểu rõ hơn, tốt hơn là xem cơ sở dữ liệu. Trong bảng ShoppingCartItem, cả giỏ hàng và các mặt hàng trong danh sách yêu thích đều được lưu trữ cùng nhau. Tuy nhiên, chúng được phân biệt bởi ShoppingCartTypeId.


Mua sắmGiỏ hàngBảng mục


Ngoài ra, nhìn vào thư mục “Miền – Đơn đặt hàng”, có thể thấy liệt kê ShoppingCartType cung cấp hai loại: ShoppingCart và Wishlist, với các giá trị số thích hợp. Đây là những giá trị được lưu trữ trong cột ShoppingCartTypeId trong cơ sở dữ liệu. Đây là sự khác biệt duy nhất giữa giỏ hàng và danh sách mong muốn trong các thuật ngữ cơ sở dữ liệu.


Các trường khác đại diện cho định danh khách hàng dưới dạng khóa ngoại. Đó là ID của khách hàng đã thêm mặt hàng này vào giỏ hàng. Ngoài ra, còn có ProductId xác định sản phẩm nào đã được thêm vào giỏ hàng, theo sau là StoreId đại diện cho cửa hàng của sản phẩm đó. Ngoài ra, ShoppingCartTypeId mà chúng ta đã thảo luận sẽ xác định xem khách hàng đã thêm mặt hàng này vào giỏ hàng hay danh sách mong muốn hay chưa.


Sau đó là cột AttributesXml. Cột này lưu trữ cấu hình sản phẩm được thêm vào giỏ hàng với tất cả các thuộc tính do khách hàng chọn. Đây là quy trình về cách thức hoạt động của XML này:


  1. mở bất kỳ trang sản phẩm nào và chọn hai thuộc tính của sản phẩm này;
  2. thêm sản phẩm vào giỏ hàng;
  3. chọn Top 1000 hàng của ShoppingCartItem;
  4. bấm vào một ô bên dưới AttributesXML;
  5. bạn sẽ thấy thuộc tính đầu tiên có ID 9 và giá trị 21, cũng như thuộc tính thứ hai có ID 10 và giá trị 25.


Đây là cách lưu trữ các thuộc tính sản phẩm đã chọn. Để phân tích các XML như vậy, có một lớp đặc biệt có tên là ProductAttributeParser nằm trong thư mục Nop.Services Catalog. Lớp này thao tác XML thuộc tính sản phẩm. Ví dụ: bằng cách sử dụng phương thức ParseProductAttributes, nó sẽ tạo một XML dựa trên các thuộc tính đã chọn khi khách hàng thêm sản phẩm vào giỏ hàng.


Lớp ProductAttributeParser


Như bạn có thể thấy, phương pháp này chấp nhận một biểu mẫu từ trang chi tiết sản phẩm. Nó cũng được sử dụng để tính toán lại giá sản phẩm khi các giá trị thuộc tính được thay đổi trên trang chi tiết sản phẩm (phương thức GetUnitPriceAsync). Vì vậy, trong lớp này, bạn có thể tìm thấy các phương thức hoạt động với các bản ghi XML thuộc tính sản phẩm. Nó cũng thao túng các kết hợp thuộc tính sản phẩm, ngày thuê và thuộc tính thẻ quà tặng.


Một cột quan trọng khác là Customer EnteredPrice. Nó được sử dụng khi tùy chọn “Khách hàng nhập giá” khả dụng cho một sản phẩm nhất định. Cột Số lượng khá tự mô tả vì nó hiển thị số lượng sản phẩm đã chọn. Các cột Ngày bắt đầu cho thuê và Ngày kết thúc cho thuê được sử dụng khi loại sản phẩm là cho thuê. Cuối cùng, ngày CreatedOn và UpdateOn đã rõ ràng.

Phần kết luận

Giỏ hàng nopC Commerce là một thành phần có cấu trúc và linh hoạt. Dựa trên thông tin từ bài viết này, bạn có thể tạo và định cấu hình trang web một cách hiệu quả với giỏ hàng nâng cao và danh sách mong muốn bằng cách sử dụng nền tảng thương mại điện tử.


Không cần phải xây dựng mọi thứ từ đầu, vì vậy nó cho phép bạn chỉ tập trung vào các yêu cầu cụ thể của doanh nghiệp Thương mại điện tử của mình. Một trong những lý do là giỏ hàng nopC Commerce có các tính năng được sử dụng nhiều nhất, như ước tính vận chuyển, thuộc tính thanh toán, thẻ quà tặng và triển khai chiết khấu.


Cuối cùng, cấu trúc cơ sở dữ liệu cho phép bạn cập nhật loại dữ liệu giỏ hàng nào được yêu cầu lưu trữ và quản lý. Bạn cũng có thể tìm thấy những chi tiết này trong tài liệu của chúng tôi dưới Lược đồ cơ sở dữ liệu mặc định phần.