楽天の注文フォームをハック(といえるほどのものじゃないと思うが)したので、
その方法を覚書。
フォーム設計の基本
- フォームはEUC-JPである必要がある
- 楽天のドメイン外に設置したフォームでも、形式さえ問題なければカートに入る
- 日本語の項目はなぜかURLエンコードされている(たぶんEUC-JP以外のフォームの対応のため)
- ただし、EUC-JPのページなら、URLエンコードなしでも正しく値が渡る
- 送信先は「http://order.step.rakuten.co.jp/rms/mall/basket/vc」
基本のフォームフォーマットはこんな感じ
<form method="post" action="http://order.step.rakuten.co.jp/rms/mall/basket/vc"> <select name="units"> <option value="1" selected="selected">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> <option value="10">10</option> </select> 個 <input name="ボタン" type="button" value=" 買い物かごに入れる " /> <input value="ES01_003_001" type="hidden" name="__event" /> <input type="hidden" name="shop_bid" value="[[店舗ID]]" /> <input type="hidden" name="item_id" value="[[商品ID]]" /> <input value="0" type="hidden" name="inventory_flag" /> </form>
unitsは個数
__eventとinventory_flagの項目は固定
shop_bidには店舗ID
item_idには商品IDを入れる
shop_bidとitem_idは、楽天に商品登録すると、
商品に付与される「RAC番号」という番号から判定できる。
CSV登録している場合は、商品データをDLすればOK。
RAC番号は、「店舗ID-商品ID」というフォーマットでできているので、
これをハイフンで分割すれば、それぞれ取得可能。
ただし、商品IDは規定桁数でゼロづめされているので注意が必要。
オプション項目を追加可能
<input type="hidden" name="choice" value="%c0%c4"> <input type="hidden" name="choice" value="%bb%d2%b6%a1%cd%d1">
このような「choice」という項目をつけると、カートにオプション文字列を渡せる。
数はおそらく無限。
値は、なぜか、EUC-JPでURLエンコードして入れておかないといけないらしい。
(私の確認した範囲では、EUC-JPのページならエンコードなしでも渡った)
上記の例では「青」「子供用」という文字列がカートに同時に入る。
使いどころとしては、RAC番号をjsonか何かでデータベース化しておけば、
楽天GOLDで、JS制御で、サイズ別に価格の違う商品を1ページで一気に紹介できたりとかするような。
もっと単純な使い方としては、
エンドユーザーに何かオプション入力してもらうような商品も実現可能。
たとえば、メッセージカードとか。
めちゃめちゃな使い方でいくなら、
楽天を自社ショッピングサイトのカートASPとして使うということもできなくはない。
(↑無茶すぐるwww)
Comment feed