【 ECS4.0 】
2006年01月27日

Cartオペレーション(カート処理)
ECS4.0ではカートの処理を自サイトに組み込むことができます。実際にどこまで使えるか色々試したので、その内容について書きたいと思います(ええもん屋.comにも組み込みたかったんですが、画面遷移なしでカート処理をしようと思うと色々見た目上・操作上の問題があったので今後の課題です)。
一通りカート処理するには、5つのオペレーションを使わなければならず一見複雑そうにみえますが、取得するXMLデータはほとんど同じなのでそれほど問題にはならないでしょう。ただし、リクエスト時は他のオペレーションよりもやや複雑です。
Amazon.co.jpのカートに追加するオペレーションを使う方法以外にも存在します。その方法についてはこのエントリーの最後に追記しています(2006/01/31)。
では、詳細↓
[ショッピングカートオペレーションのおさらい]
OperationとResponseGroupの一覧にも書きましたが、一応カートオペレーションの一覧。
| CartAdd | ショッピングカートに商品を追加。 |
| CartClear | ショッピングカートの中身をクリア。 |
| CartCreate | 新しくショッピングカートを作成。 |
| CartGet | ショッピングカートの中身を検索。 |
| CartModify | カート内の商品の数量変更や削除。 |
[おおまかな流れ]
1.カートの作成
2-1.商品の追加
2-2.商品の変更(削除も含む)
2-3.カートの中身のクリア
3.Amazon.co.jpのカートに追加
最初に”カートを作成”し、最終的に”Amazon.co.jpのカートに追加”します。その間に”別の商品をカートに追加”したり、”商品の変更”をしたり、”カートを空”にしたりを繰り返すというのが大まかな流れです。
※ECS4.0で作成したカートは普段使うAmazon.co.jpのカートとは別に管理されます。従って、Amazonのカートに追加する処理が別途必要になります。
[基本知識]
カートを処理する上で覚えておかなければいけないXML内のデータについて書いておきます。
・CartId ・・・ カートのIDです。
・HMAC ・・・ 意味合いはよく分かりませんが、必ずCartIdとセットで必要になります。
・URLEncodedHMAC ・・・ 上記のURLエンコード版。何故かここだけ親切です(笑
・PurchaseURL ・・・ Amazon.co.jpのショッピングカートへ追加するURLです。
・CartItemId ・・・ カートに入っている個々の商品に対するId。変更する際に必要です。
・他の項目はXMLデータを見れば分かる範囲だと思います。
次に、商品の指定方法について。カートに商品を追加や変更をする場合、複数の商品を一度に指定することができます。その指定方法は、以下のようになっています。
Item.[番号].[パラメータ名]
例えば、”・・・Item.1.ASIN=B0007YT8XE”のように書きます。[番号]については特に厳密な制限がある訳ではなさそうです。"1"から順番に書く必要はないですし、順不同でも大丈夫です。更に"0"でも"99"でも"01"のような書き方でもOKです。ただ[番号]が若い順から処理が実行されるようです。逆に言うと[番号]は処理順序という意味合いしかない事を覚えておきましょう。
また重要な点として、5つのオペレーションは全てカートの中身を返します。従ってどの処理をしてもカートの中身を更新することが可能です。
[CartCreateオペレーション]
CartCreateオペレーションは、カートを作成するオペレーションであり、カート処理の一番最初に行うオペレーションですが、先にカートだけを作成することはできません。必ずカートに入れる商品が必要となります。別の言い方をすると、最初に商品をカートに入れる段階まで、カートを作成することはできません。
では、パラメータについて。あまり使わないパラメータは書きませんのでご了承を。書いてないパラメータは英文のHelpを読んでください。
http://webservices.amazon.com/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=[あなたのAccessKeyID]&AssociateTag=[あなたのアソシエイトID]&Operation=CartCreate&Item.1.ASIN=[ASINコード]&Item.1.Quantity=[商品の個数]&Item.2.ASIN=[ASINコード]&Item.2.Quantity=[商品の個数]&MergeCart=True
まず商品の書き方は、上の「基礎知識」で書いた通り、Item.[番号].[パラメータ]です。で、CartCreateの場合は、”Item.[番号].ASIN”と”Item.[番号].Quantity”がワンセットになります。このASINとQuantityの[番号]は同一である必要があります。
・ASIN ・・・ カートに入れる商品のASINコード。
・Quantity ・・・ 商品の購入数量。
・MergeCart ・・・ カートにマージするかしないか(”True” or ”False”)。
MergeCartに関しては以下全てのオペレーションで共通ですが、MergeCartをFalseにすると、Amazon.co.jpのカートに追加した時に、カート内ではなく保存したデータとして取り扱われ、もう一度カートに戻す処理をしなければ購入できません。つまり、かなり購入率が下がってしまうと思われますので、全てのカートオペレーションでMergeCartはTrueにしておいた方がいいでしょう。
また英文のHelpでは省略されていますが、AssociateTagは忘れずに入れましょう。PurchaseURLにアソシエイトIDが付加される為、MergeCart同様いつAmazon.co.jpのカートに追加されてもいいように5つ全てのオペレーションに入れておくことをオススメします(さすがにCartClearはいらないかもしれませんが・・・)。
[CartAddオペレーション]
CartAddオペレーションは、”カートを作成しない”ことを除けばほぼCartCreateと同じ挙動です。もちろん追加なので、パラメータに作成したカートの情報は必要です。
http://webservices.amazon.com/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=[あなたのAccessKeyID]&AssociateTag=[あなたのアソシエイトID]&Operation=CartAdd&CartId=[カートID]&HMAC=[HMAC]&Item.1.ASIN=[ASINコード]&Item.1.Quantity=[商品の個数]&Item.2.ASIN=[ASINコード]&Item.2.Quantity=[商品の個数]&MergeCart=True
[カートID]と[HMAC]は、CartCreateでカートを作成した際に取得した”CartId”と"HMAC"のデータを入れます。CGI等で自前でURLエンコードしなければならない場合は、[HMAC]に”URLEncodedHMAC”を入れると更に楽できます。
[CartGet・CartClearオペレーション]
パラメータが同じなので、CartGetとCartClearは一緒に書きます。CartGetはカートの中身の取得、CartClearはカートの中身のクリア(空にする)です。カートをクリアしても、カートは消えず再度CartAddする等そのまま使えます。
http://webservices.amazon.com/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=[あなたのAccessKeyID]&AssociateTag=[あなたのアソシエイトID]&Operation=CartGet&CartId=[カートID]&HMAC=[HMAC]&MergeCart=True
http://webservices.amazon.com/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=[あなたのAccessKeyID]&AssociateTag=[あなたのアソシエイトID]&Operation=CartClear&CartId=[カートID]&HMAC=[HMAC]&MergeCart=True
[カートID]と[HMAC]はCartAddともちろん同じです。
[CartModifyオペレーション]
カートに入っている商品の内容変更です。基本的には商品の数量変更がメインになると思います。特定の商品の削除もこのオペレーションで行います。
http://webservices.amazon.com/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=[あなたのAccessKeyID]&AssociateTag=[あなたのアソシエイトID]&Operation=CartModify&CartId=[カートID]&HMAC=[HMAC]&Item.1.CartItemId=[CartItemId]&Item.1.Quantity=[商品の個数]&Item.2.CartItemId=[CartItemId]&Item.2.Quantity=[商品の個数]&MergeCart=True
ここでは”ASIN”ではなく、カート内の個別の商品に対する”CartItemId”がパラメータとなります。 ”CartItemId”と”Quantity”がワンセットです。[商品の個数]に変更後の数量を指定します。0を指定すればカートから商品が削除されます。
このCartModifyでは、変更したい商品のみをパラメータに設定すればOKです。また、間違ったCartItemIdを入れてもスルーされるだけでエラーにはなりません(Errorの項目を入れてくれてもいいもんなんですが・・・)。
[Amazon.co.jpのカートへの追加]
最終的に取得したXMLデータ内の”PurchaseURL”にアクセスすれば、Amazon.co.jpのカートに追加されます。Amazon.co.jpのカート内にすでに商品がある場合は、自動的にマージされます。同時に現在のカートの中身は空になります(CartClearと同じような状態)。
[まとめ]
これで、一通りカートで必要な処理ができるはずです。
私が実際に色々試した感じでは、結構快適に動作しました(CartCreate時のみ若干時間がかかる場合はありましたが)。こういう複数入り乱れた流れの処理って不安定だったり、挙動不審な箇所があったりするもんですが、中々一貫していて優秀でした。さすがはAmazonといったところでしょうか?
この処理の弱点としては、”PurchaseURL”にアクセスしてもらうまで、アソシエイト対象外なところですね。いかにこのカートの使い勝手を良くするかにかかっている気がします。
それにしても、このカート処理を組み込んだWebサイトをほとんど見ないのは気のせいでしょうか?私が使った限りでは問題らしい問題も見当たらなかったんですがねぇ。
[追記(2006/01/31)]
Amazon.co.jpのカートへの追加する方法は上記オペレーションを使う以外にも存在し、現在稼動している多くのWebサービスはこの方法を利用しています(AWS3.0の場合はそれしかなかったというのも大きいはずです)。
http://www.amazon.co.jp/gp/aws/cart/add.html?AWSAccessKeyId=[あなたのAccessKeyID]&AssociateTag=[あなたのアソシエイトID]&ASIN.1=[ASINコード]&Quantity.1=[商品の個数]
ASIN.[番号]は、Cartオペレーション同様[番号]は任意です(未確認ですが、いや、おそらく)。
この方法の最大の利点は、このURLにアクセスした段階でAmazon.co.jpのカートに追加されることです。ただ、逆に最大の欠点でもあり、URLにアクセスしなければ商品を追加できない為、自サイトのみでカートを操作できず、ユーザーは毎回Amazonへアクセスしなければならない煩わしさがあります。
作成簡単なAmazonへ直接カートに追加する方法と、カート処理のオペレーションを使った応用力のある方法、どちらを使うかはサイトの内容、提供する形式にもよると思うので自由に必要に応じて選んだら良いと思います。
投稿者 shiz : 2006年01月27日 23:40
トラックバック
このエントリーのトラックバックURL:
http://mt.amonya.com/mt-tb.cgi/24
※トラックバックのリンク確認後に掲載させて頂きます。
(当エントリー又は当サイトへのリンクがない場合は掲載しません)