(2017/10/2)2016年3月31日以降の新基準に対応
前回、もしもAPIで各種情報を表示する方法を大雑把に記事にしましたが、なんとなく気になったので、もう少し実用性を高めたものにしてみました。
今回取得できるデータは以下です。
取得できる項目 | 取得するためのコード |
---|---|
商品名 | <?php echo $moshi_data[name] ?> |
画像URL | <?php echo $moshi_data[img] ?> |
税込価格 | <?php echo $moshi_data[price] ?> |
支払い方法(クレジット/クレジット+代金引換) | <?php echo $moshi_data[payment] ?> |
在庫状況(在庫切れ/在庫わずか/在庫あり/在庫豊富/予約販売) | <?php echo $moshi_data[stock] ?> |
納期(即日発送/○~○営業日/△年□月初旬等) | <?php echo $moshi_data[dod] ?> |
同梱可否 | <?php echo $moshi_data[bundle] ?> |
取得するための手順
手順としては、
- データを取得するためのPHPファイルを作る
- データを表示したいページに、そのファイルを読み込む
- 表示するためのコードを書く
という形になります。
1.データを取得するためのPHPファイルを作る
以下のソースをテキストファイルに全コピペして「moshimo_api.php」という名前で保存してください。
もしくは、zipファイルでダウンロードして解凍してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
<?php function moshimo_api($shouhin_id){ //もしもAPI認証コードを入れる $api_key = "もしもAPI認証コード"; //もしもAPIで商品情報を取得 $data = "http://api.moshimo.com/article/search2?authorization_code=".$api_key."&article_id=".$shouhin_id; $xml = @simplexml_load_file($data); //格納用の配列を定義 $moshi_data = array(); //商品名を取得 $moshi_data[name] = $xml->Articles->Article->Name; //商品画像URL(300x300px)を取得 $img_code = $xml->Articles->Article->ImageCode; $moshi_data[img] = "//image.moshimo.com/item_image/".$img_code."/1/l.jpg"; //金額を取得 $shop_price = $xml->Articles->Article->ShopPrice; $moshi_data[price] = number_format("$shop_price"); //支払い方法を取得 $payment_type = $xml->Articles->Article->PaymentType; $payment_jp = array(1=>"クレジット",3=>"クレジット+代金引換"); $moshi_data[payment] = $payment_jp["$payment_type"]; //在庫状況と納期を取得 $yoyaku = $xml->Articles->Article->PreorderFlag; if(!$yoyaku){ $moshi_data[stock] = "販売終了"; } elseif($yoyaku == 1){ $moshi_data[stock] = "予約販売"; $moshi_data[dod] = $xml->Articles->Article->PreorderPeriod; } else{ $stock_status = $xml->Articles->Article->StockStatus; $stock_jp = array("在庫切れ","在庫わずか","在庫あり","在庫豊富"); $moshi_data[stock] = $stock_jp["$stock_status"]; $sameday = $xml->Articles->Article->IsDeliverySameday; if($sameday == 1){ $moshi_data[dod] = "即日発送"; } else{ $dod_from = $xml->Articles->Article->DodFrom; $dod_to = $xml->Articles->Article->DodTo; $moshi_data[dod] = $dod_from."~".$dod_to."営業日"; } } //同梱可能かどうかを取得 $bundle = $xml->Articles->Article->BundleImpossible; if($bundle == 1){$moshi_data[bundle] = "同梱不可";} else{$moshi_data[bundle] = "同梱可";} return $moshi_data; } ?> |
そして、ここでもしもAPI認証コードを取得して、上記ソースでいうと5行目($api_key = "もしもAPI認証コード";)の部分に入力してください。
2.データを表示したいページに、そのファイルを読み込む
先ほどの「moshimo_api.php」を任意のサーバにアップし、商品情報を表示したいページのソース一番上に以下を表記する。(<body>の上あたりで良いかと)
1 |
<?php include './moshimo_api.php';?> |
('./moshimo_api.php'の部分はアップしたサーバの場所を示す相対パス。上記は同じディレクトリにファイルがある場合の例)
3.表示するためのコードを書く
表示したいページのソース内の、商品情報を表示したい場所の直前に商品IDを入れたコードを書き(1行目)、あとは、この記事の冒頭で一覧にしたPHPコードを記載すればOK。
以下例。
1 2 3 4 5 6 7 8 9 |
<?php $moshi_data = moshimo_api(商品ID);?> <p><img src="<?php echo $moshi_data[img] ?>" /></p> <p><?php echo $moshi_data[name] ?></p> <p><?php echo $moshi_data[price] ?>円(税込)</p> <p>お支払い方法=<?php echo $moshi_data[payment] ?></p> <p>在庫=<?php echo $moshi_data[stock] ?></p> <p>納期=<?php echo $moshi_data[dod] ?></p> <p>同梱=<?php echo $moshi_data[bundle] ?></p> |
で、上記例の商品IDに「亀山社中のお肉のID(343198)」を入れた場合、以下のように表示されます。
今後やってみるかもしれない事
とりあえず、上記でもしもドロップシッピングにおける商品情報を、もしもDSサーバーから引っ張ってこれるとは思います。
しかし、WordPressやSIRIUSで使う場合は一工夫必要かと思うし、ショップできすぎくんではPHPは使えないと思うし(←使い方分からないのでもしかしたら使えるかもw)、Javascriptを絡めて、もうちょっと汎用性の高いものを作れたらなぁ、と考えています。
あと、カテゴリページ等の商品一覧ページにおいては、
もしもAPIの仕様上、1分間に90回以上のアクセスがあると、アカウントが1分間凍結されるので、この場合の情報取得はさらにもう一工夫必要になると思います。(自動取得にするには、エックスサーバー等のcronが使えるサーバじゃないと難しいと思われ)
まあこれも、酔っ払ってテンションがおかしくなった時にでも、酒の肴としてやってみるかもしれませんw
ということで、自分のショップには使わないくせに、意味もなくもしもAPIによる情報取得を試してみたので、需要があるかどうかわからないけど共有してみました♪
コメント
こんなのがあること自体知りませんでした。自分でもやってみようかな、なんて重いたってしまいました。強力な情報の共有ありがとうございます。