【EC-CUBE】外部連携用APIについて調べてみました
こんにちはfukasawaです。最近はセブンの餃子スープがお気に入りです。 牛丼や麻婆丼といい、最近のセブンイレブンは美味しいものが多いですね。
さて、セブンイレブンとは関係なく最近知ったのですが、EC-CUBEには外部連携用のAPIというものがあるそうです。
#2102 (外部連携用APIの実装)- EC-CUBE Tracバージョン2.12でさりげなく追加された機能らしいのですが、これを使うことによって「EC-CUBEに登録してある商品データを取ってきて他のページで表示する」みたいな事ができるようになるはずです。
バージョン2.13.1時点ではまだ実装されていない部分も多くあるようなので実際にどのくらい使用できるのかわからないのですが、気になったので少し調べてみました。
※EC-CUBEバージョン2.13.1の使用を想定した内容になっています
準備: API機能を有効にする
外部連携APIを使用するにはまず、管理画面からAPI機能を有効にします。
[管理画面] → [システム設定] → [パラメータ設定]
の一番下の方にある「API_ENABLE_FLAG」という定数の値を「true」に書き換えます。
※バージョン2.12ではパラメータ設定に定数名が存在せず、デフォルトで有効になっているみたいです。
EC-CUBEのバージョンを取得してみる
簡単な例として、使用しているEC-CUBEのバージョンを取得してみます。
ショップのアドレスが「http://localhost/shop/」と仮定して、以下のアドレスにブラウザからアクセスします。
http://localhost/shop/api/xml.php?Operation=GetVersion&Service=abc
結果としてxmlが取得されました。赤枠で囲んである部分でEC-CUBEのバージョンを取得できたことが確認できます。
URLで指定したファイル、パラメータについて見てみます。
取得するフォーマット ("xml.php")
取得できるフォーマットはXML形式、JSON形式、PHP Serializeの3つです。 上記の例でアクセスした「xml.php」部分を「json.php」「php.php」に変更することで それぞれJSON形式、PHP Selialize形式の結果を取得できます。
Service ("Service=abc") [必須]
Serviceには任意の文字列(半角英数記号)を指定します。このパラメータが何を表しているのかよくわからないのですが、EC-CUBEのAPIは「Amazon Product Advertising API」の仕様を元にしているらしいので使用するサービスを指定するパラメータなのかもしれません。今の時点では渡す値に関わらず結果が返ってきます。
Operation(Operation=GetVersion) [必須]
OperationではAPIの動作を指定します。GetVersionを指定することでEC-CUBEのバージョンを取得しています。 GetVersion以外のOperationは以下のとおりです。
パラメータ値 | 内容 | アクセス権限 | |
---|---|---|---|
AddrFromZip | 郵便番号から住所を検索 | リファラー | (未動作?) |
BrowseNodeLookup | カテゴリ取得 | 完全オープン | |
CartAdd | カートへの商品追加 | CSRF TOKEN | (未動作) |
CartClear | カートのクリア | CSRF TOKEN | (未動作) |
CartCreate | カートの新規作成 | CSRF TOKEN | (未動作) |
CartGet | カートの取得 | CSRF TOKEN | (未動作) |
CartModify | カートの修正 | CSRF TOKEN | (未動作) |
GetVersion | EC-CUBEのバージョンを取得 | 完全オープン | |
ItemLookup | 商品詳細情報を取得 | 完全オープン | |
ItemSearch | 商品検索・商品一覧情報を取得 | 完全オープン |
カート周りの動作はほぼ未動作となっているようです。AddrFromZipも試してみたのですがうまく取得できませんでした。(指定の仕方がまちがっているのかも?)
商品情報の取得関係はデフォルトだと完全オープンになっており、認証など必要なくどこからでも情報を取得できるようになっています。これが望ましくない場合はアクセス権限をデフォルトからカスタマイズする必要があると思われます。
アイテム詳細を取得してみる
もう一つ例を試してみます。商品IDを指定し、商品詳細情報をjson形式で取得してみます。EC-CUBEのバージョンを取得したときと同様、以下のURLにブラウザからアクセスすることで商品の詳細情報が取得できることがわかります。
http://localhost/shop/api/json.php?Operation=ItemLookup&Service=abc&ItemId=1
Operation=ItemLookupで商品詳細情報の取得できます。
ItemId=1を指定することで商品ID=1の商品情報を取得しています。
まとめ
案件によっては外部サイトと連携したいというニーズもあると思うので、こういった機能が充実してくれるのは嬉しいですね。