ショッピングカートの概念

トピック

以降のセクションでは、リモートショッピングカートについて詳しく説明します。

カートの制限

1つのカートには50個までエントリを追加できます。各エントリは、1以上 (最大999個) の同じ商品を表すことができます。つまり、Product Advertising API のショッピングカートには、最大で5万個近くの商品を格納できます。

多くの商品では、カートに追加できる数量に制限があります。これは、1点物のアクセサリーなどに適用されます。オートバイなどの高額商品では、カスタマーあたりに1台という制限を設定していることもあります。許容量を超える数の商品をカートに追加しようとすると、 CartAdd によって数量が自動的に最大値にリセットされます。エラーは生成されません。そのため、数量に制限がある場合は、カート内の商品数と注文数を照合して数量が正しいことを確認する必要があります。数量が変更されている場合は、必ずカスタマーに知らせてください。

アクティブエリアと「今は買わない」エリア

ショッピングカートには次の2つのエリアがあります。

  • アクティブ—購入予定の商品が格納されています。

  • 今は買わない—カスタマーが購入しようとしたが在庫切れだった商品や、保存しておいてあとで購入することにした商品の格納場所です。

ショッピングカートに追加された商品で在庫がある場合は、カスタマーが指定しない限りアクティブエリアに追加されます。在庫がない商品や、ショッピングカート内で在庫切れの商品は、「今は買わない」エリアに自動的に移動されます。これらの商品が入手可能になると、商品はショッピングカートのアクティブエリアに自動的に移動されます。

「今は買わない」エリアは、興味はあってもまだ購入するつもりがない商品を入れておくための場所としても使用できます。このエリアの商品の価格と在庫状況は、Amazon によって定期的に更新されます。

アクティブカートエリアに追加できない商品

Product Advertising API のオペレーションは、アクティブカートエリアに追加できない商品を返すことがあります。以降のセクションで、アクティブカートに追加できない商品について説明します。

  • 在庫のない商品

  • 数量が制限されている商品

  • 親バリエーション商品

  • 親コレクション商品

在庫のない商品

出品されているほとんどの商品には在庫があります。ただし、在庫がない場合もあります。商品が在庫切れになることや、ハリー・ポッターの新刊のように非常に人気がある商品は予約注文を受け付けることができます(つまり、本が発行される前に販売されます)。

カスタマーが在庫のない商品をカートに追加すると、「今は買わない」エリアに追加されます。また、カート内の商品が何らかの理由で在庫なしになると、商品は自動的に「今は買わない」エリアに移動されます。

カスタマーは、あとで商品をすぐに購入できるように、カートの「今は買わない」エリアに商品を直接追加することもできます。

商品が在庫ありになった場合、 CartModify オペレーションでActionパラメータを使用し、アイテムをカートの「今は買わない」エリアからアクティブエリアに移動することができます(詳細は 「今は買わない」エリアに商品を追加する をご参照ください)。また、商品が在庫切れになってアクティブエリアから「今は買わない」エリアに自動的に移動されても、在庫ありになると自動的にアクティブエリアに戻ります。

数量が制限されている商品

多くの商品には、カートに追加できる数量に制限があります。これは、1点物のアクセサリーなどに適用されます。カスタマーあたりに1つという制限を設定していることもあります。制限を超える数の商品をカートに追加しようとすると、 CartAdd または CartCreate によって数量が自動的に最大値にリセットされます。エラーは生成されません。そのため、数量に制限がある場合は、カート内の商品数と注文数を照合して数量が正しいことを確認する必要があります。数量が変更されている場合は、必ずカスタマーに知らせてください。

親バリエーション

親バリエーション商品はカートに追加できません。例えば、"Apparel" をカートに追加することはできません。実際に購入しようとしているアパレル商品が明確でないためです。しかし、Lサイズの赤いシャツなど、子バリエーションを追加することはできます。親商品を追加しようとすると、次のようなエラーメッセージが返されます。

指定された商品 [ASIN] は、カートに追加できません。商品が購入可能であることを確認してください。

親バリエーションには対応する OfferListingId がありません。

親コレクション

親コレクション商品は、コレクション内の商品を抽象化したものです。親コレクションはカートに追加できません。親コレクションは、コレクションの名称として使われます。親コレクションには対応する OfferListingId がありません。

出品情報とID

ASIN と出品IDは、ハリー・ポッターの本のように商品を識別します。しかし、ASIN と出品IDは、これらの商品に関する出品情報を識別するものではありません。

前の図からわかるように、ASIN はカスタマーが購入できるインスタンスではなく商品を識別します。どの ASIN も多くのマーチャントが出品している可能性があります。各マーチャントは、商品のコンディションと価格を提示します。このデータの組み合わせが OfferListingId を表します。全ての OfferListingIds を総合して出品情報と呼びます。ASIN (または出品ID)に OfferListingId (または ExchangeId) がない場合、商品は購入できません。

このため、商品をショッピングカートに追加する場合は、 OfferListingId (または ExchangeId) を、ASIN (または ListingId) の代わりに使用することを強くお勧めします。

Amazon のホスト機能で処理されるリモートショッピングカート

Product Advertising API のアプリケーションまたは Web サイトは各自のサーバーで動作しますが、Product Advertising API のリモートショッピングカートは Amazon のホストサーバーによって処理されます。カートとその中身を作成、変更するには、Product Advertising API のオペレーションを使用します。ショッピングカートのコピーをローカルに保持しておくことはおすすめできません。これは、商品の価格と在庫状況が頻繁に変化し、ショッピングカート内の商品についても自動的に更新されるためです。また、カスタマーがリスト上の商品を購入すると、ほしい物リストなどのリストの状態は自動更新されます。ショッピングカートをローカルに保持していると、カートの商品が実際の価格、在庫状況、ステータスと同期しなくなるおそれがあります。

Product Advertising API のショッピングカートは、ローカルのホストではなく Amazon のホスト機能によって処理されるため、ショッピングカートを「リモート」と呼んでいます。Amazon リテール Web サイト(JPサイトは www.amazon.co.jp)でショッピングしているカスタマーが使用するカートは、「ローカル」ショッピングカートと定義されます。Amazon は、各カスタマーIDに対し、1つのローカルショッピングカートだけを保持しています。開発者は、1人のカスタマーが複数のリモートショッピングカートを保持するようにできますが、カスタマーIDあたり保持するカートは1つにすることをお勧めします。

カートの寿命

ショッピングカートには寿命があります。作成されたリモートショッピングカートは、時間が経つと有効期限が切れます。カートが有効である間は、カートの中身を変更、購入できます。この様子を次の図に示します。

カートの作成

カスタマーが初めて商品をショッピングカートに追加する場合、リモートショッピングカートを作成する必要があります。これには CartCreate オペレーションを使用します。空のカートを作成することはできません。少なくとも1つの商品を追加する必要があります。

カートの変更

カスタマーがすでにリモートショッピングカートを持っている場合は、それを使用し、変更します。次の変更が考えられます。

  • 商品をカートに追加したり、カートから削除したりできます。

  • 商品をカートのアクティブエリアと「今は買わない」エリアの間で移動することができます。

  • USサイトでは、MergeCart 値を変更できます。

CartId と HMAC を CartModify, CartAdd, または CartClear オペレーションで使用し、カートの中身を変更することができます。

カートの有効期限切れ

リモートショッピングカートを削除することはできません。カートの中に商品がある場合は、90日間使われないとカートは自動的に有効期限切れになります。カートが空の場合は、7日間使われないと期限切れになります。カートの中を空にするには、 CartClear または CartModify オペレーションを使用します。カスタマーがカート内の商品を購入すると、自動的に空になります。カートの有効期限は、カートを変更するとリセットされます。例えば、89日間使わなかったあとでカスタマーがショッピングカート内の商品を変更すると、カートの有効期限が90日間延びます。このように、ショッピングカートはいつまでも存在し続けることができます。

カート内の商品を PurchaseURL 値を使用して購入すると、カートはすぐに削除されませんが、使用できなくなります。カスタマーの観点からは、カート内の商品を購入して「今は買わない」エリアに残っている商品がないと、古いカートはなくなります。次回商品を購入するときに、新しいカートが作成されます。