もしもAPIで在庫状況をゲット

もしもAPIで在庫状況をゲット

追記(2019/06/09):もしもAPIの提供終了により本記事で紹介しているDEMO等は機能しなくなりました。

もしもAPIの情報は少なく、見つけても古くて動かないか、「キャッシュ(後述)機能が無くて不安」だったりしますよね。そこでキャッシュ付でPHP7でも動作し、何年か前のもしもAPI仕様変更にも対応して、とりあえず在庫状況だけをゲットするプログラムを紹介。

ということで、以前私が超テケトーに作った在庫だけの「もしもゲットAPI」を紹介し、設置やカスタマイズの方法など説明します。

元ネタの紹介&やってみたこと

元はhttp://goodsmore.net/さんで公開されているもしもゲットAPIです。ライセンスはこちら。(リンク先はクソ重いので表示されるまでじっと我慢してください。)

それを私が在庫情報だけに絞ってみたというやつですが先に記しておくと「ちゃんと動くが無駄が多い」仕様となっとります。元のいろんな機能を削る時に適当に消しているので雑なコードであるということをご理解頂ください…。PHP5.x〜7.xなら動くような気がします。

雑といってもサイト、ショップに害はありませんので私と同じ程度の貧しい技術しかないか、プログラムなんか知らん!という初心者さんの方には重宝するかと思います。恥ずかしいのでデキる方は見ないでください。

設定と設置

ダウンロードしたファイルを解凍して「zaiko_get」フォルダ内「config.php」と、「sample.htm」をテキストエディタで開いて編集してください。Windowsでは「秀丸」、Macだと「Jedit」か「Mi」が無料で且つ高性能です。

config.php

まんまです。キャッシュについては後で説明します。

  • 4、7行目:APIコードとショップIDをxxxxxxxxのところに記述してください。
  • 14行明:とりあえずテストなので0を1に変更ください。

sample.htm

(私が)理解しやすいよう極力シンプルに、必要最低限の表示です。

  • 8〜30:デザイン用のスタイルです。下 で説明(37〜39)してる部分を見ながら私が編集しただけです。とりあえずこのままテストでよいです。
  • 37〜39:それぞれの在庫状況でどのように表示するかをデザインするために書いてるだけです。
  •  48、57:商品IDをそれぞれ記してください44行はその説明です。

アップロード・表示テスト

FTPクライアントソフトなどでご自分のサーバにアップロードしてください。例えば、サイト直下に「test」などのフォルダ(ディレクトリ)を作成し、その中に「sample.htm」と「zaiko_get」フォルダを入れてください。

実際にブラウザでアクセスしてテストしてみてください。上の例だと「xxxあなたのドメインxxx.xxx/test/sample.htm」にアクセスして下の画像の様に表示されれば成功です(赤枠の部分)。

うまく表示されない場合

失敗した場合は上記の設定をもう一度見直してください。config.phpのAPI認証コード、ショップIDは必須です。また、404Not Foundの場合はアクセスするurlが間違っています。よく見直してください。

どうしても表示されない場合はご利用のレンタルサーバーの管理ページからphpのバージョンを上げたり、アクセス権を見直すとか試してみてください。

カスタマイズ

ちょっと専門的になりますのでCSSを理解してる人向けです。

見た目にこだわりたい方はスタイルシートで細かく指定できるようにhtmlを編集したくなると思います。その場合はjavascriptを編集してください。

「jquery.moshimo_api.js」の下の方ある以下のコードを編集してください。

jquery.moshimo_api.js

キャッシュ機能について

もしもAPIの利用には2018年11月現在以下の制限があります。

・1分間に90回のアクセスを超えると、アカウントが1分間凍結される

1分間に90アクセスとかほぼほぼ夢物語ですし、停止期間も1分間とか取るに足らない事かもしれません。でもやっぱり心配になりますよね。なのでキャッシュを使います。

ここで言うキャッシュとはブラウザがダウンロードデータを減らして早く表示させるための「ブラウザキャッシュ」ではなく、レンタルサーバ側でデータを保存しておく「サーバーキャッシュ」というものになります。

このページで紹介したプログラムでは、そのままだとデータは「zaiko_get/cache/」内にサーバー側で保存されます。

config.phpで指定したキャッシュの有効期限を「60 * 60 * 1 」、つまり1時間に設定していれば、キャッシュデータを制作した時間から1時間はどれだけショップにアクセスがあってももしものサーバーにアクセスすることなく自分のショップサーバだけで完結するため、制限にかからない。という訳ですね。

注意点としてはその1時間以内に在庫が切れた場合に、その商品を購入しようとしていた人には間違いなく迷惑がかかるということ。なので在庫状況の付近にタイムラグがあることを記載したページへのリンクを張るなどの対策が必要かと思います。

ということでこのキャッシュ機能を使うときはconfig.phpの14行目を必ず「@define( ‘TEST_MODE’, 0 ) ;」にしてください

これじゃ物足りないな…

在庫状況だけじゃやっぱり物足りないですね。これに加えて

  • 価格
  • タイムセール状況

が必要な気がしますね。今度時間があるときに作るかもしれませんし作らないかもしれません。

では