PHP
api

ショップサーブ(Eストアー)のAPIを使って注文取得(注文検索)してみる

つかうAPIは?

注文情報検索API(V2-M-0024)は注文基本情報取得API~注文詳細情報取得APIまでの項目がサポートされているので、このAPIだけで取得できそう。
「【旧版】注文情報検索API」は廃止されるっぽい。

URLパラメータ指定のしかた

{composite_requests}である程度の情報の範囲を指定することができる。
;(セミコロン)区切りで複数指定する方法。なかなかなじみが無い。(マトリクスURLといいます)
データ量や通信量で、誰かになにか言われかねないので不要な情報はなるべく取らない方がいい。
(1注文あたりのデータ量は、けっこうな量になるのではないか?)

serial_codeってなんなの?

注文関連のAPIで使用する、注文を一意に管理するための項目と書いてある。
注文状態更新API(V2-M-0012)などの更新系で注文をピンポイントに指定するために使うみたい。
検索する>serial_code取得>serial_codeで更新する>serial_codeで状況をみる
みたいに使う。

なんでこの「serial_code」をつかうのか?よくわからないけど・・・
管理画面の「受注台帳設定」で注文番号が重複できるように設定できるから
注文番号はAPIでは使えないんじゃない?

コード

<?php
namespace eee;
$USERNAME='自分の店舗のID';
$PASSWORD='自分の店舗のマネージャ認証キー';

$curl = curl_init();
if (false === $curl) {
    throw new \RuntimeException('curl_init() error.');
}


curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_URL, 'https://management.api.shopserve.jp/v2/orders/_retrieve/basic');

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 300);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode(['since'=>'2016-02-19 00:00:00','until'=>'2017-12-31 23:59:59']));
curl_setopt($curl, CURLOPT_USERPWD, $USERNAME . ':' . $PASSWORD);



$contents=curl_exec($curl);
if (!curl_errno($curl)) {
    $header = curl_getinfo($curl);
} else {
    throw new \RuntimeException('curl_exec error.    ['.curl_errno($curl).']'.curl_error($curl));
}
curl_close($curl);
$contentsArray = json_decode($contents, true);
var_dump($header['http_code']);
var_dump($contentsArray);
if (200 !== $header['http_code']) {
    throw new \RuntimeException('HTTP status code is not 200.');
}

取得結果をWEBやスマホアプリで利用すれば夢が広がる~

V2-M-0025は何のためにある?

たぶん・・・V2-M-0024だと自社システムにもれなく注文を取り込むことが難しいと推測。
利用ガイドに「やや遅れる」って記述もあるし、きっと何かあるんだ。
last_capture_keyを使いまわして、もれなく取れるんじゃないかな。
取り込んだ後はserial_codeが分かるので、注文状態を必要に応じてAPIで確認すればよい。

新旧の注文検索APIの違い

手引きに違いが書いてあるが・・・返却スピードがあきらかにちがう。
注文情報検索API(V2-M-0024)の方が早い。

ショップサーブAPIの記事

curl
phpで在庫更新
注文取得