paint-brush
使用 nopCommerce 开发和定制基于 ASP.NET 的购物车经过@nopcommerce
643 讀數
643 讀數

使用 nopCommerce 开发和定制基于 ASP.NET 的购物车

经过 nopCommerce7m2023/03/21
Read on Terminal Reader

太長; 讀書

构建电子商务商店的一项具有挑战性的任务是购物车。了解如何使用 nopCommerce 有效地自定义 ASP.NET 购物车。
featured image - 使用 nopCommerce 开发和定制基于 ASP.NET 的购物车
nopCommerce HackerNoon profile picture
0-item


在线商店的一个重要组成部分是购物车。它也可能是为电子商务网站创建的最难的组件之一。客户可以选择商品、评估他们的选择、编辑它们、在必要时添加更多商品,然后使用购物车购买商品。在结帐期间,该程序通常会生成一个订单总额,其中会考虑邮费、包装费、手续费以及税费(如果适用)。


对于 nopCommerce,购物车和愿望清单是内置的。如果在管理区域启用,每个产品都可以放入购物车或愿望清单。可以禁用 nopCommerce 购物车和愿望清单,可以使用访问控制列表页面对其进行配置。只需查找所需客户资料的“启用购物车”和“启用愿望清单”权限,然后取消选中它们。


购物车配置


要了解有关购物车功能的更多信息,以及 nopCommerce 的其他组件如何工作,我们建议采取nopCommerce培训课程,由核心开发团队组成。

.NET电子商务平台的购物车结构

首先,打开并查看购物车页面。首先,它有一个订单摘要视图,其中包含选定的结帐属性、价格、数量(可以调整)、每个添加项目的总计和一个删除按钮。


接下来,客户可以添加预计运费、选择结账属性、输入折扣代码和礼品卡。最后,订单被计算出来并被提供到结账处,客户在结账处输入账单和运输信息并付款。


nopCommerce 购物车


顺带一提,购物车相关的action方法都放在了Nop.Web的ShoppingCartController中。这些方法允许客户与所有页面组件进行交互。


购物车控制器


让我们分解 nopCommerce 购物车功能的所有主要组件。它由结帐属性、折扣和礼品卡盒、总计步骤和结帐流程组成。考虑数据库结构也很重要。

结帐属性

从结帐属性开始,它们显示在购物车页面上,并提供在下订单前向客户提供更多服务(如礼品包装)的机会。


Checkout 属性在 Nop.Services.Orders 文件夹中有自己的服务类,并以 XML 格式存储在 Order 表的 CheckoutAttributesXml 列中。它们都具有与产品属性几乎相同的功能。


CheckoutAttributeService 类


CheckoutAttributeService 类


CheckoutAttributesXml 列


CheckoutAttributesXml 列

折扣盒

购物车的下一个功能是折扣框。它允许客户输入优惠券代码以对订单总额或运费应用折扣。折扣功能有自己的文件夹,位于 Nop.Services 部分。可以在那里调整折扣实施过程的任何规则和逻辑。


谈到数据库,折扣本身存储在 Discount 表中。还有一些映射表存储折扣如何映射到产品、制造商和类别。 DiscountRequirement 表存储确定在何种情况下应应用折扣的折扣要求。最后一个表是 DiscountUsageHistory 表,它存储有关应用于订单的折扣的信息。


折扣表

礼品卡盒

另一个购物车组件是礼品卡盒。客户应在此处输入代码以申请礼品卡。礼品卡是一种特殊类型的产品。您可以在产品详情页面将产品标记为礼品卡,并销售客户可以通过这种方式使用的礼品卡。客户使用礼品卡产品完成购买后,您可以在此处搜索并查看所有已购买礼品卡的列表。


如果您需要配置礼品卡功能,您可以使用位于 Nop.Service.Orders 文件夹中的 GiftCardService 类。


GiftCardService类


考虑到数据库,将手动创建或作为产品购买的礼品卡存储在 GiftCard 表中。一旦在订单中使用了礼品卡,相应的记录就会插入到数据库的 GiftCardUsageHistory 表中。


礼品卡表


客户可以在购物车页面上申请折扣和礼品卡。

合计

购物车页面上最后一个有趣的块是购物车总数。它们是根据购物车项目、应用的折扣和税费、选择的运输和付款方式计算的。总数由几行组成:


  1. 小计。小计是购物车中所有商品和数量的总和,包括应用的商品促销;
  2. 运费是根据客户的收货地址计算的运费;
  3. 然后,显示应用的税金。 nopCommerce 提供允许手动或自动对产品征税的税收插件;
  4. 付款方式附加费用行是自我描述的。可在支付方式配置页面进行设置;
  5. 然后显示申请的折扣和礼品卡;
  6. 奖励积分(如果适用);
  7. 最后是总订单。


总数


订单总计在 Nop.Services.Orders 的 OrderTotalCalculationService 中计算。可以看到,它包含了GetShoppingCartShippingTotal、GetTaxTotal等方法,以及与奖励积分、折扣等相关的方法。反过来,付款方式的附加费用在 Nop.Services.Payments 的付款服务中计算。


OrderTotalCalculationService 类

结账流程

为了更清楚地了解整个购买体验,重要的是要考虑结帐流程。当客户离开购物车以继续付款和运输时结帐开始。


nopCommerce 提供两种类型的结帐流程设计。它们是单页结帐(默认设置)和多页结帐。单页结帐允许客户使用单个页面完成整个结帐过程。您可以在“订单设置”页面上进行设置。顺便说一句,如果需要,您可以在同一结帐部分暂时禁用客户结帐。


客户在结帐过程中完成以下步骤:


  1. 客户需要输入账单地址;
  2. 然后送货地址;
  3. 然后,他们需要选择一种运输方式;
  4. 以及付款方式;
  5. 然后,我们向客户出示所需的付款信息;
  6. 最后,这是客户确认订单的确认步骤。


还有更多条件会影响结帐步骤的数量。它们可以在订单设置中进行调整。


所有与结帐流程相关的操作方法都放在 CheckoutController 中。如您所见,该控制器具有不同的区域:用于多步结帐和单页结帐。多步结帐方法返回视图,而单页结帐方法返回 JSON 作为结果。没有单独的服务来管理结帐流程。所有的工作都在控制器中完成。


结帐控制器

ASP.NET购物车的数据库操作

在 nopCommerce 中,购物车和愿望清单都具有相同的结构。为了更深入的了解,还是看数据库比较好。在 ShoppingCartItem 表中,购物车和心愿单项目存储在一起。但是,它们是通过 ShoppingCartTypeId 来区分的。


ShoppingCartItem 表


此外,查看“Domain – Orders”文件夹,可以看到提供两种类型的 ShoppingCartType 枚举:ShoppingCart 和 Wishlist,具有适当的数值。这些是存储在数据库的 ShoppingCartTypeId 列中的值。这是数据库术语中购物车和愿望清单之间的唯一区别。


其他字段将客户标识符表示为外键。它是已将此商品添加到购物车的客户的 ID。此外,还有一个 ProductId 标识哪个产品已添加到购物车,其后是 StoreId 表示该产品的商店。此外,我们已经讨论过的 ShoppingCartTypeId 确定客户是否已将该商品添加到购物车或愿望清单。


然后是 AttributesXml 列。此列存储添加到购物车的产品配置以及客户选择的所有属性。下面是这个 XML 的工作过程:


  1. 打开任意一个产品页面,选择该产品的两个属性;
  2. 将产品添加到购物车;
  3. 选择 ShoppingCartItem 的前 1000 行;
  4. 单击 AttributesXML 下的单元格;
  5. 您将看到 ID 为 9 且值为 21 的第一个属性,以及 ID 为 10 且值为 25 的第二个属性。


这是所选产品属性的存储方式。为了解析此类 XML,在 Nop.Services Catalog 文件夹中有一个名为 ProductAttributeParser 的特殊类。此类处理产品属性 XML。例如,使用 ParseProductAttributes 方法,它会在客户将产品添加到购物车时基于所选属性创建 XML。


ProductAttributeParser 类


如您所见,此方法接受来自产品详细信息页面的表单。它还用于在产品详细信息页面上更改属性值时重新计算产品价格(GetUnitPriceAsync 方法)。因此,在此类中,您可以找到使用产品属性 XML 记录进行操作的方法。它还操纵产品属性组合、租赁日期和礼品卡属性。


另一个重要的列是 CustomerEnteredPrice。当“客户输入价格”选项可用于特定产品时使用。数量列是非常自我描述的,因为它显示了产品的选定数量。当产品类型为租赁时,使用 RentalStartDate 和 RentalEndDate 列。最后,CreatedOn 和 UpdatedOn 日期是不言自明的。

结论

nopCommerce 购物车是一个结构化且灵活的组件。根据本文中的信息,您可以使用 nopCommerce 平台有效地创建和配置带有高级购物车和心愿单的网站。


无需从头开始构建所有内容,因此您可以只关注电子商务业务的特定需求。原因之一是 nopCommerce 购物车具有最常用的功能,例如运费估算、结帐属性以及礼品卡和折扣实施。


最后,数据库结构使您能够更新需要存储和管理的购物车数据类型。您还可以在我们的文档中找到这些详细信息默认数据库架构部分。