伊藤清徳の垂直落下式ムーンサルトプレス

PerlとかPHPとかMySQLとか...がんばっても8割だ。

楽天の注文フォームに無茶させる方法

楽天の注文フォームをハック(といえるほどのものじゃないと思うが)したので、
その方法を覚書。


フォーム設計の基本

  • フォームは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)

3 Comments

  1. しっかりとした作りで、デザイン性にも優れていたのですが、何せ重くて結局手放すことになりました。

  2. とても有益な情報が見つかった、と思ったのですが
    ボタンを押してもなんの反応もありませんでした…
    カートへ移動もしません
    掲載のコードをコピペなんですが…(店舗・商品IDは変えてます)

  3. admin

    2014/7/4 金曜日 at 16:25:22

    ボタンが反応がないとすると、
    HTMLの記述自体がおかしい可能性が高いです。

    上記例ですとJSでの制御を前提にしておりますので、

    このボタンは動きません。

    このボタンにすると動きます。

コメントを残す

Your email address will not be published.

*