# 概要

カートは、複数のアイテムを1つの注文にまとめることができる購入メカニズムです。ユーザーは、任意のタイプのアイテムを任意の数量で実際通貨で購入でき、[プロモーションコード](https://developers.xsolla.com/ja/api/liveops/promotions-promo-codes)も使用できます。

カートはエクソーラ側で保存されます。セッションをまたいでカートを保存できるかどうかは、ユーザーが認証されているかによって異なります。
  * 認証されたユーザーの場合、カートは特定のユーザーに紐付けられ、同じユーザーとしてリクエストが送信される限り、セッションをまたいで保存されます。

  * [未認証ユーザー](/ja/api/catalog/authentication-with-guest-access-support)の場合、カートの保存は`x-unauthorized-id`ヘッダーの成否に依存します。未認証ユーザーのカートをセッション間で保持するには、すべてのリクエストで同じ`x-unauthorized-id`を渡してください。なお、このオプションはゲームキーの販売時のみ利用可能です。

カートを特定する方法は2つあります。[ユーザーのJWT](https://developers.xsolla.com/ja/api/catalog/authentication-using-users-jwt)による自動特定、またはカートID（`cart_id`）による特定です。

カート管理は、クライアント側とサーバー側の両方で利用可能です。

サーバー側では、ユーザーセッションを復元する場合などに、カートにアイテムを入れることができます。クライアント側では、以下の操作が利用可能です：

* 現在のユーザーのカートまたはIDによるカートを取得する
* カートにアイテムを追加する
* カート内のアイテムを更新する
* カートからアイテムを削除する

カートからアイテムを購入するには、注文作成のためのクライアントとサーバーのコールが使用されます。

カートの有効期限（TTL）は、デフォルトで72時間です。新しいアイテムが追加されるなど、カートの内容が変更されると、TTLは延長されます。

決済が成功した後も、カートは自動的にはクリアされません。カートをクリアするには、クライアントサイドの以下のAPIコールを使用してください：
  * [カートIDによる全カートアイテムを削除する](/ja/api/catalog/cart-client-side/cart-clear-by-id)。

  * [現在のカートからの全カートアイテムを削除する](/ja/api/catalog/cart-client-side/cart-clear)。

  * [カートIDによるカートアイテムを削除する](/ja/api/catalog/cart-client-side/delete-item-by-cart-id)および [現在のカートからのカートアイテムを削除する](/ja/api/catalog/cart-client-side/delete-item)：カート内の最後のアイテムを削除すると、カートはクリアされます。

カート使用シナリオ：

1. ユーザーがアイテムを選択するストアUIを実装します。

2. ユーザーがストアでアイテムを選択した際、たとえば [カートへアイテムを追加する](https://developers.xsolla.com/ja/api/catalog/cart-client-side/cart-fill)コールを使用してアイテムをカートに追加します。アイテム配列には、SKUと必要なアイテムの数量を渡す必要があります。

3. カート表示UIを実装します。ユーザーがカートに移動した際、[現在のユーザーのカートを取得する](https://developers.xsolla.com/ja/api/catalog/cart-client-side/get-user-cart)コールを使用してカートの内容を表示します。応答には、割引や適用されたプロモーションを含むアイテムの最終価格に関する情報が返されます。

4. 注文の支払いを行うために、決済UIを開く処理を実装します。たとえば、[特定のカートの全アイテムを含む注文を作成する](https://developers.xsolla.com/ja/api/catalog/payment-client-side/create-order-by-cart-id)コールを使用できます。応答には、決済UIを開くためのトークンが返されます。

5. 決済が完了したアイテムのデータをタイムリーに受け取り、ユーザーにそれらを付与するために、たとえば[ウェブフック](https://developers.xsolla.com/ja/webhooks/)を使用して注文状況の追跡を設定します。

<div class="note">
  <p><b>注意</b></p>
  <p>ゲーム内およびオンラインでのアイテム販売を実装するには、<a href="https://developers.xsolla.com/ja/virtual-goods/own-ui/">統合ガイド</a>を参照してください。</p>
</div>

![カートと決済フロー](https://cdn.xsolla.net/developers/current/images/api_docs/cart-payment-flow.svg)

