オンライン ストアの重要なコンポーネントは、ショッピング カートです。また、e コマース Web サイト用に作成するのが最も難しいコンポーネントの 1 つかもしれません。顧客は商品を選択し、その選択を評価し、編集し、必要に応じて商品を追加してから、ショッピング カートを使用して商品を購入できます。チェックアウト時に、プログラムは通常、送料、梱包、手数料、および該当する場合は税金を考慮した注文合計を生成します。
nopCommerce の場合、ショッピング カートとウィッシュ リストが組み込まれています。管理エリアで有効にすると、各製品をショッピング カートまたはウィッシュリストに入れることができます。 nopCommerce ショッピング カートとウィッシュ リストを無効にすることができます。アクセス コントロール リスト ページを使用して設定できます。必要な顧客プロファイルの「ショッピング カートを有効にする」権限と「ウィッシュ リストを有効にする」権限を探して、チェックを外します。
ショッピング カートの機能、および nopCommerce の他のコンポーネントの仕組みについて詳しく知るには、
まず、ショッピングカートページを開いて見てください。最初に、選択されたチェックアウト属性、価格、数量 (調整可能)、追加された各アイテムの合計、および削除ボタンを含む注文の概要ビューがあります。
次に、顧客は配送予定を追加したり、チェックアウト属性を選択したり、割引コードやギフトカードを入力したりできます。最後に、注文が計算され、顧客が請求情報と配送情報を入力して支払うチェックアウトに進むように提案されます。
ちなみに、ショッピング カート関連のアクション メソッドはすべて、Nop.Web から ShoppingCartController に配置されています。これらのメソッドにより、顧客はすべてのページ コンポーネントを操作できます。
nopCommerce ショッピング カート機能のすべての主要コンポーネントを分解してみましょう。これは、チェックアウト属性、割引、ギフト カード ボックス、合計ステップ、およびチェックアウト プロセスで構成されます。データベースの構造も考慮することが重要です。
チェックアウト属性から始まり、それらはショッピング カート ページに表示され、注文前にギフト ラッピングなどのより多くのサービスを顧客に提供する機会を提供します。
チェックアウト属性は Nop.Services.Orders フォルダーに独自のサービス クラスを持ち、Order テーブルの CheckoutAttributesXml 列に XML として格納されます。それらはすべて、製品属性とほぼ同じ機能を持っています。
CheckoutAttributeService クラス
CheckoutAttributesXml 列
ショッピング カートの次の機能は、ディスカウント ボックスです。これにより、顧客はクーポン コードを入力して、注文合計または配送料に割引を適用できます。割引機能には、Nop.Services セクションにある独自のフォルダーがあります。そこでは、割引の実装プロセスのルールとロジックを調整できます。
データベースについて言えば、割引自体は割引テーブルに格納されます。割引が製品、メーカー、およびカテゴリにどのようにマッピングされるかを格納するいくつかのマッピング テーブルもあります。 DiscountRequirement テーブルには、割引を適用する必要がある場合を決定する割引要件が格納されます。最後のテーブルは、注文に適用される割引に関する情報を格納する DiscountUsageHistory テーブルです。
もう 1 つのショッピング カート コンポーネントは、ギフト カード ボックスです。ギフトカードを適用するには、ここにコードを入力する必要があります。ギフトカードは特別なタイプの商品です。商品詳細ページで商品をギフトカードとしてマークし、顧客がこの方法で使用できるギフトカードを販売できます。顧客がギフト カード製品での購入を完了した後、ここで購入したすべてのギフト カードのリストを検索して表示できます。
ギフト カード機能を構成する必要がある場合は、Nop.Service.Orders フォルダーにある GiftCardService クラスを使用できます。
データベースを考慮すると、商品として手動で作成または購入されたギフト カードは、GiftCard テーブルに格納されます。注文でギフト カードが使用されると、適切なレコードがデータベースの GiftCardUsageHistory テーブルに挿入されます。
顧客は、ショッピング カート ページで割引とギフト カードの両方を適用できます。
ショッピング カート ページの最後の興味深いブロックは、ショッピング カートの合計です。これらは、ショッピング カートのアイテム、適用される割引と税金、選択された配送、および支払い方法に基づいて計算されます。合計はいくつかの行で構成されます。
注文の合計は、Nop.Services.Orders の OrderTotalCalculationService で計算されます。ご覧のとおり、GetShoppingCartShippingTotal、GetTaxTotal などのメソッド、報酬ポイント、割引などに関連するメソッドが含まれています。次に、Nop.Services.Payments の支払いサービスで支払い方法の追加料金が計算されます。
購入体験全体をより明確に把握するには、チェックアウト プロセスを検討することが重要です。顧客がショッピング カートを離れて支払いと配送に進むと、チェックアウトが開始されます。
nopCommerce は、2 種類のチェックアウト プロセス設計を提供します。それらは、デフォルトで設定されている 1 ページのチェックアウトと、複数のページでのチェックアウトです。ワンページ チェックアウトでは、顧客は 1 つのページを使用してチェックアウト プロセス全体を実行できます。これは注文設定ページで設定できます。ちなみに、必要に応じて、同じチェックアウト セクションで顧客のチェックアウトを一時的に無効にすることができます。
顧客は、チェックアウト プロセス中に次の手順を実行します。
チェックアウトのステップ数に影響を与える条件は他にもあります。これらは注文設定で調整できます。
チェックアウト プロセスに関連するすべてのアクション メソッドは、CheckoutController に配置されます。ご覧のとおり、このコントローラーには、複数ステップのチェックアウトと 1 ページのチェックアウト用に別々の領域があります。複数ステップのチェックアウト メソッドはビューを返しますが、1 ページのチェックアウト メソッドは結果として JSON を返します。チェックアウト プロセスを管理する個別のサービスはありません。すべての作業はコントローラーで行われます。
nopCommerce では、ショッピング カートとウィッシュ リストの構造は同じです。理解を深めるには、データベースを参照することをお勧めします。 ShoppingCartItem テーブルには、ショッピング カートとウィッシュリストの両方のアイテムが一緒に格納されます。ただし、それらは ShoppingCartTypeId によって区別されます。
さらに、「Domain – Orders」フォルダを見ると、ShoppingCart と Wishlist の 2 つのタイプを適切な数値で提供する ShoppingCartType 列挙があることがわかります。これらは、データベースの ShoppingCartTypeId 列に格納されている値です。これが、データベース用語におけるショッピング カートとウィッシュ リストの唯一の違いです。
他のフィールドは、顧客 ID を外部キーとして表します。この商品をショッピングカートに追加したお客様のIDです。また、カートに追加された製品を識別する ProductId があり、その後にその製品のストアを表す StoreId が続きます。さらに、既に説明した ShoppingCartTypeId は、顧客がこのアイテムをショッピング カートまたはウィッシュ リストに追加したかどうかを判断します。
次に、AttributesXml 列が続きます。この列には、顧客が選択したすべての属性とともにカートに追加された製品構成が保存されます。この XML がどのように機能するかのプロセスは次のとおりです。
これは、選択された製品属性が保存される方法です。このような XML を解析するために、Nop.Services Catalog フォルダーに ProductAttributeParser という名前の特別なクラスがあります。このクラスは、製品属性 XML を操作します。たとえば、ParseProductAttributes メソッドを使用すると、顧客が製品をカートに追加したときに、選択した属性に基づいて XML が作成されます。
ご覧のとおり、このメソッドは商品詳細ページからフォームを受け取ります。また、商品詳細ページで属性値が変更された場合に商品価格を再計算するためにも使用されます (GetUnitPriceAsync メソッド)。したがって、このクラスでは、製品属性の XML レコードを操作するメソッドを見つけることができます。また、製品属性の組み合わせ、レンタル日、ギフト カード属性も操作します。
もう 1 つの重要な列は CustomerEnteredPrice です。特定の製品で「顧客が価格を入力」オプションが利用可能な場合に使用されます。 Quantity 列は、製品の選択された数量を示すため、非常にわかりやすいです。 RentalStartDate 列と RentalEndDate 列は、商品の種類がレンタルの場合に使用されます。最後に、CreatedOn と UpdatedOn の日付は一目瞭然です。
nopCommerce ショッピング カートは、構造化された柔軟なコンポーネントです。この記事の情報に基づいて、nopCommerce プラットフォームを使用して、高度なショッピング カートとウィッシュ リストを備えた Web サイトを効果的に作成および構成できます。
すべてをゼロから構築する必要がないため、e コマース ビジネスの特定の要件のみに集中できます。その理由の 1 つは、nopCommerce ショッピング カートには、配送見積もり、チェックアウト属性、ギフト カードや割引の実装など、最もよく使用される機能があるためです。
最後に、データベース構造により、保存および管理する必要があるショッピング カート データの種類を更新できます。これらの詳細は、次のドキュメントにも記載されています。