---
title: "カートドメインモデル"
slug: "cart-domain-model"
abstract: "カートドメインモデルの概要。Sitecore開発者がカートとやり取りし、ECSとカートデータをやり取りする必要がある場合に使用されます。クラス図も含まれています。"
---
# カートドメインモデル

この節では、カートリッジおよびその構成データ転送オブジェクト(DTO)を表すドメインモデルについて説明します。ドメインモデルは、Sitecore開発者がカートリッジとやり取りし、ECSとカートデータをやり取りする必要がある場合に使用されます。カートリッジのすべてのビジネスロジックはサービス層APIで実装されており、カートリッジを操作するために使用する必要があります。

カートドメインモデルの利用例をいくつか挙げます:

-   訪問者から情報収集。
-   レンダリングに情報を表示するために。
-   情報をパーソナライズのために活用すること。
-   カート情報を外部の商取引システムに渡すためです。
-   プライシングサービス層からカート総額を返すために。

> !注カートには価格と総額への強い参照があるためドメインモデルに含まれますが、合計計算や価格の取得方法は価格統合サービス層の一部です。

以下のクラス図はドメインモデルを示しています。左側のカートクラスはCartで始まるすべてのクラスがこのセクションで説明され、右側のPrice、Total 、TaxTotalクラスは [価格設定](https://doc.sitecore.com/xp/ja/developers/100/sitecore-experience-commerce/pricing-service-layer.html "Pricing service layer") セクションで説明され、価格設定APIによって操作されます。 Party、ShippingInfo 、PaymentInfoクラスはそれぞれ顧客、配送、決済サービス層の一部です。

![Cart classes that are part of the Cart domain model.](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/100/sitecore-experience-commerce/images/03000010.png)

> !注ドメインモデルは外部システムとの契約を構成するクラスで構成されています。契約はインターフェースではなくクラスとして定義されており、必要に応じて後でモデルを容易に拡張できるようにしています。これは『Framework Design Guidelines』の書籍で定められたベストプラクティスガイドラインに従っています。
> 
> 契約のデフォルト実装はConnectの一部として提供されます。外部商取引システムを持つ実際のConnectプロバイダーがデフォルト以上の機能を持っている場合、その実装を置き換えることができます。実際のクラスのインスタンス化はすべてFactory設計パターンで処理されます。

## カートキー

カートリッジには2つの固有の複合キーがあります:

-   CartId(別名:ExternalCartId)、ショップネーム
    
    LoadCart\`\`, このキーを使ってカートを探す方法もあります。
    
-   UserId、CustomerId、CartName、ShopName
    
    GetCartsやCreateCart\`\`,のような一部の手法ではこのキーが使われています。
    

## クラス:カートベース

カートベースはメインカートデータの要約を表し、複数のマッチカートの場合にGetCartsやCreateOrResumeCartの返還値として使用されます。

CartクラスはCart Baseクラスから継承します。詳細は[「クラス:カート](https://doc.sitecore.com/xp/ja/developers/100/sitecore-experience-commerce/cart-domain-model.html#UUID-ad7e0087-03c5-d49b-ab89-e9c1a7e4f961 "Class: Cart")」を参照してください。

名称

種類

概要

名称

ストリング

カート名を付けるために使うことができます。このプロパティは任意ですが、単一の訪問者やユーザーが複数のカートを持つ解法で使うことができます。カートを区別するためには文字列の値が必要です。

ユーザーID

ストリング

カートのユーザーの識別子は以下の通りです:  
  

-   連絡先IDまたは識別子はSitecoreによって提供されました。
-   ユーザーIDはSitecoreから提供されました。
-   ECSが提供するユーザーID。

カスタマーID

ストリング

カートの顧客の識別子。  
  
顧客はカートを直接操作できず、ユーザーを通じて間接的に操作できます。

ショップネーム

ストリング

カートが置く場所のショップ名で、マルチショップ対応を可能にするために使われています。  
  
実装上では、ウェブサイトとショップが一対一で対応している場合、ウェブサイト名に対応することもあります。  
  
すべてのAPI手法は ShopName をパラメータとして取ります。

アイロックド

ブール

カートがロックされているかどうかを示します。  
  
カートは通常、支払い開始後、チェックアウトの一部でロックされます。

カートタイプ

ストリング

カートの異なる用途の型値を含みます。例:通常、ギフトカード、ウィッシュリスト、リカリングカート。  
  
デフォルトの実装では、通常値のみが使用されテストされます。  
  
後で拡張やカスタマイズが可能なのも、実際のConnectプロバイダー実装で可能です。

カートステータス

ストリング

ステータスコード:InProcess または Abandoned。後で拡張やカスタマイズは、実際の Connect プロバイダーの実装で可能です。

通貨コード

ストリング

カート内の商品の通貨コードを表します。

## クラス:カート

Cartクラスは、顧客が購入を計画している商品の集合を表現する責任を負います。カートの内容を表示する必要がある場合や、Sitecoreがパーソナライズなど他の目的でカートの内容を決定する必要がある場合に使用されます。

CartクラスはCart Baseクラスからベースカートデータを受け継ぎます。詳細については、[クラス:カートベース](https://doc.sitecore.com/xp/ja/developers/100/sitecore-experience-commerce/cart-domain-model.html#UUID-94d02b67-e435-41a1-d718-c365e7071c07 "Class: Cart Base")を参照してください。

名称

種類

概要

CartLines

List<CartLine>

カートラインを含んでいます。

Adjustments

List<Adjustment>

個々のカート項目の合計値と合計価格の不一致を説明する調整のコレクション。  
  
例としては、クーポンコード(手動でトリガー)や送料サーチャージ(自動でトリガー)があります

CartTotal

Total

カート内の商品の総価値を表します。

## クラス:カートライン

Cart Lineクラスはショッピングカート内のラインを表します。これは訪問者がカートに追加したものと、カートに加わった商品の数量を表します。また、カート内の他のラインに対するラインの位置(ラインが表示される順序を制御するため)を表します。

名称

種類

概要

ExternalCartLineId

String

商取引システムにおけるカートラインの一意識別子。  
  
カートラインを追加すると空になり、ECSで設定できます。  
  
カートラインの削除や更新時に指定できます。

Quantity

Decimal

カート内の特定の商品の量。

Product

CartProduct

カートライン商品。カート製品オブジェクトには実際の製品への参照が含まれています

LineNumber

Int

カートのラインの位置。  
  
カートラインの削除や更新時に指定できます。  
  
カートラインを追加するときに空になることがあります。

Adjustments

List<Adjustment>

合計価格とカート価格の不一致を説明する調整のコレクション。  
  
調整の実際の内容はECSによって提供されています。

Total

Total

カート製品(サブアイテム)が表す商品の合計値を表します。この値は、カート製品(サブアイテム)の合計に調整リストを含む数量を掛けたものと同じです。  
  
**読み取り専用**。プライシングサービスレイヤー用に予約されており、カートラインの追加、削除、更新時に提供してはなりません。

SubLines

List<CartLine>

再帰的サブライン。  
  
例えば、カート商品がバンドル商品の場合、サブラインはバンドルを構成する個別の商品となります。  
  
もう一つの例は、商品に追加される保険のようなサービスです

## クラス:カート製品

Cart Productクラスは、Cart Lineクラスオブジェクトによって参照可能な製品を表します。また、バンドルや保険の場合、Cart Productクラスオブジェクトのサブアイテムにもなり得ます。

名称

種類

概要

ProductId

String

外部商取引システムにおける製品の一意識別子。

SitecoreProductItemId

ID

Sitecoreで商品を直接参照するためのショートカットです。

Options

List<Option>

訪問者が指定した製品オプション(例:engraving=Adam)を表します。

LineNumber

Integer

カート内のアイテムの位置を取得します。

Adjustments

List<Adjustment>

カート商品の総額と価格の不一致を説明する調整のコレクション。

Price

Price

商品価格を含みます。  
  
カートラインを追加または更新する際に提供できますが、GetCartTotalへの通話時にプライシングサービス層によって設定されることもあります。

## クラス:カート調整

カート調整とは、Cart、Cart Line 、またはCart Line Productクラスのインスタンスに対して支払われる料金や割引を指します。

例としては以下の通りです:

-   CartクラスやCart Lineクラスのインスタンスで手動でトリガーされたクーポンコード。
-   CartクラスやCart Lineクラスのインスタンスで自動的に発動する配送上座料金(Shipping surcharges)。

調整は固定額または割合で行うことができますが、同時に両方行うことはできません。もし金額と割合の両方が適用される場合は、2つの調整が必要であり、*LineNumber*プロパティはそれらの適用順を指定します。

顧客の行動

データフロー

金額

小数点

小計に加えたり引いたりする必要がある金額。  
  
一度に使用できるのは *Amount* または *Percentage* (後述)のみです

概要

ストリング

適用される料金や割引の説明。説明にはクーポンコードへの言及が含まれることもあります。

IsCharge

ブール

「True」の場合はチャージであることを示し、そうでなければ割引となります。

割合

フロート

加算または引く必要がある割合。一度に使えるのは *Amount* か *Percentage* だけだ

ライン番号

整数

複数の調整が行われる場合、 *LineNumber* は手数料や割引の適用順を指定します。  
  
調整に格納された情報は、実際の計算ではなく、計算順序の表示に使われます。

## クラス:カートオプション

Cart Optionクラスはカート内のアイテムに特有の設定可能な変数値を表します。オプションの例としては、パーソナライズされた商品の彫刻があります。カートに彫刻サービスを追加すると、彫刻するテキストも必要です。Cart Optionクラスはこれを表します。

オプションに追加料金がある場合は、そのオプションはCart Line Productクラスの別のインスタンスで表現されなければなりません。オプションは、Cart Line Productクラスの特定のインスタンス上の変数や設定を説明するためにのみ使用され、調整や価格変更を扱うためのものではありません。

名称

種類

概要

OptionId

String

オプションの内部IDは、ユーザーがカートラインに追加した際に通常Sitecoreから提供されます。

Description

String

オプションの種類に関する説明はオプションです。例えば、彫刻やTシャツに名前など。

Value

String

実際のカスタム値は