Yahoo!ショッピングWeb APIを使ってみた(注文検索API)
今回はYahoo!ショッピングWeb APIを使って指定期間内の注文情報の取得をやっていきたいと思います。
Yahoo! ID連携が必要になるので以前の記事を参照して準備しておいてください。
事前準備
1.注文APIの利用申請
注文APIを利用するには利用申請必要なのでリンク先にて申請を行って下さい。
<a href="https://forms.business.yahoo.co.jp/webform/Inquiry/InquiryTop?inquiry_type=developer_network_9101“>注文API利用申請フォーム</a>
公式説明では設定完了まで1週間~10日程度かかるとの事ですが、私が申請した時は2日で設定完了通知が来ました。
・メールアドレス:設定完了後の通知が来る
・アプリケーションID:取得済みのものを設定
・ストアアカウント:自身のストアアカウント
・APIリクエスト元IPアドレス:実装したプログラムを動かすサーバーのIPアドレス
事前準備は以上です。
動作確認サンプル(PHP)
注文API利用申請さえ通れば特に難しいことはありません。
サンプルコードを見ていきましょう。
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 |
<?php //注文日時(From) $OrderTimeFrom
=
new
DateTime('2020-02-18'); $OrderTimeFrom->setTimeZone(
new
DateTimeZone('Asia/Tokyo')); //注文日時(To) $OrderTimeTo
=
new
DateTime('now'); $OrderTimeTo->setTimeZone(
new
DateTimeZone('Asia/Tokyo')); $application_id
=
'アプリケーションID'; $client_secret
=
'シークレット'; $yahoo_refresh_token
=
'リフレッシュトークン'; $seller_id
=
'ストアアカウント'; //アクセストークンのリフレッシュ処理 $cred
=
new
ClientCredential($application_id,
$client_secret); $client
=
new
YConnectClient($cred); $client->refreshAccessToken($yahoo_refresh_token); $yahoo_access_token
=
$client->getAccessToken(); $header
=
array( 'POST /ShoppingWebService/V1/orderList HTTP/1.1', 'Host: circus.shopping.yahooapis.jp', 'Authorization:Bearer '.$yahoo_access_token ); $param
=
<<<EOD <Req> <Search> <Result>2000</Result> <Condition> <OrderTimeFrom>{$OrderTimeFrom->format('YmdHis')}</OrderTimeFrom> <OrderTimeTo>{$OrderTimeTo->format('YmdHis')}</OrderTimeTo> <SellerId>{$seller_id}</SellerId> </Condition> <Field>OrderId,OrderTime</Field> </Search> <SellerId>{$seller_id}</SellerId> </Req> EOD; $ch
=
curl_init('https://circus.shopping.yahooapis.jp/ShoppingWebService/V1/orderList'); curl_setopt_array($ch,
array( CURLOPT_CUSTOMREQUEST
=>
'POST', CURLOPT_POST
=>
true, CURLOPT_RETURNTRANSFER
=>
true, CURLOPT_HTTPHEADER =>
$header, CURLOPT_POSTFIELDS =>
$param, )); $result
=
curl_exec($ch); if(curl_error($ch)){ //cUrlのエラー return; } curl_close($ch); echo
var_dump($result); ?> |
認証周りは以前の商品検索と同じですね。
リクエストはXML形式で行います。リクエスト内容により必須項目が異なるので詳しくはWeb APIのドキュメントを参照してください。
下記、サンプルに使用したリクエスト情報の詳細になります。
1 2 3 4 5 6 7 8 9 10 11 12 |
<Req> ← リクエストパラメーター <Search> ← 検索条件指定情報 <Result>2000</Result> ← 最大取得件数(最大2000) <Condition> ← 検索条件 <OrderTimeFrom>{$OrderTimeFrom->format('YmdHis')}</OrderTimeFrom> ← 注文日時(From) <OrderTimeTo>{$OrderTimeTo->format('YmdHis')}</OrderTimeTo> ← 注文日時(To) <SellerId>{$seller_id}</SellerId> ← ストアアカウント </Condition> <Field>OrderId,OrderTime</Field> ← 取得情報 </Search> <SellerId>{$seller_id}</SellerId> ← ストアアカウント </Req> |
感想
リクエスト時に取得したい項目を絞りこめるので実装したい内容に合わせて調整できなかなか便利だと感じました。
少し疑問に感じたのは注文取得のAPIなので取得できる注文情報は自身の店舗のものに限られると思うのですが、検索条件にわざわざストアアカウントを必須項目にする意味はあるのでしょうか?
検索条件以外にもう一か所必須項目でストアアカウントの指定があるので2重で指定してて無駄な気がしました。
今回はここまでになります。
別の機会に証明書を使った方法を紹介できればと思います。
それでは
ディスカッション
コメント一覧
まだ、コメントがありません