楽天市場 RMS APIを使ってみた(受注情報の取得) 前編
今回は楽天市場 RMS APIを使って指定期間内の受注情報の取得をやっていきたいと思います。
『serviceSecret』『licenseKey』が必要になるので以前の記事を参照して準備しておいてください。
事前準備
1.楽天ペイ受注API利用設定
RMSにログインし受注APIの利用設定を行います。
※受注API(OrderAPI)は、楽天ペイ移行の為使えなくなったので、楽天ペイ受注API(RakutenPay_OrderAPI)を利用してください。
1.RMSにログインし、『拡張サービス一覧』→『4.WEB APIサービス』を開く
2.『2-1 WEB API』を開き、利用機能一覧の『利用機能編集』ボタンをクリック
3.『利用機能編集』より楽天ペイ受注API(RakutenPay_OrderAPI)の『rpay.order.getOrder』『rpay.order.searchOrder』に利用するチェックを選択し登録してください。
2.受注情報
受注情報を取得するんでこれは必須ですね...
ただ、テスト注文を用意するのは楽天の罰則規約絡んで面倒なことになったりしそうなので、本番環境で試す方は実データ使うしかないですね...
もしくはテスト用店舗利用申請してそちらで試しましょう。
動作確認サンプル(PHP)
今回も事前準備はそんなにありませんでしたね。
早速期間指定して受注情報を取得しましょう!!
リクエストに必要な情報は主に2つ『ページングリクエスト情報』と『ベース情報』です。
1回のリクエストで取得する件数とリクエストページ番号の設定なります。
例えば次の様な前提条件の元リクエストしたとします。
・リクエストした期間の注文件数が50件
・1回のリクエストで取得する件数:10件
・リクエストページ番号 :1
この場合、注文件数50件をリクエストした件数で分割した1番目の10件を取得してきます。
50件
↓
[1(10件)][2 (10件) ][3 (10件) ][4 (10件) ][5 (10件) ]
リクエストページ番号に2を指定すれば2番目の10件を取得できます。
例では注文件数やページ番号がわかっていますが、実際はリクエストを投げるまでは分からない情報なので、最初のリクエストではページ番号に1を指定するのがベターです。
また、取得する件数に関しては最大1000件まで指定可能ですが、サーバー等の処理能力に応じた件数を指定することをお勧めします。
受注情報を取得するための検索条件になります。
検索条件に指定できる項目は20以上あるので詳しくはRMS WEB APIのドキュメントを参照してみた下さい。
今回のサンプルでは必須項目である『期間検索種別』『期間検索開始日時』『 期間検索終了日時 』を使用しています。
※期間検索開始日時・終了日時は『YYYY-MM-DDThh:mm:ss+09:00』形式でしか指定できないので注意してください。
これらの情報を使って『rpay.order.searchOrder』に対してリクエストを行います。
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 |
<?php $startDate
=
new
DateTime('2020-02-01'); $startDate->setTimeZone(
new
DateTimeZone('Asia/Tokyo')); $endDate
=
new
DateTime('now'); $endDate->setTimeZone(
new
DateTimeZone('Asia/Tokyo')); $authkey
=
base64_encode('serviceSecret'
.
':'
.
'licenseKey'); $header
=
array( "Content-Type: application/json; charset=utf-8", "Authorization: ESA {$authkey}" ); //ページングリクエスト情報 $paginationRequestModel
=
array( requestRecordsAmount
=>
'100',
//1回のリクエストで取得する件数 requestPage
=>
'1'
//リクエストページ番号 ); //リクエスト内容 $params
=
array( dateType
=>
'1', //期間検索種別 1:注文日 startDatetime
=>
$startDate->format('Y-m-d\TH:i:sO'),
//期間検索開始日時(YYYY-MM-DDThh:mm:ss+09:00) endDatetime
=>
$endDate->format('Y-m-d\TH:i:sO'), //期間検索終了日時(YYYY-MM-DDThh:mm:ss+09:00) PaginationRequestModel
=>
$paginationRequestModel //ページングリクエスト情報 ); $ch
=
curl_init('https://api.rms.rakuten.co.jp/es/2.0/order/searchOrder/'); curl_setopt_array($ch,
array( CURLOPT_POST
=>
true, CURLOPT_RETURNTRANSFER
=>
true, CURLOPT_HTTPHEADER =>
$header, CURLOPT_POSTFIELDS
=>
json_encode($params) )); //リクエストの送信 $result
=
curl_exec($ch); if(curl_error($ch)){ $response
=
curl_error($ch); return
'エラー:'.$response; } curl_close($ch); $result
=
json_decode($result); //注文番号リスト echo
$result->orderNumberList; ?> |
認証情報、リクエストパラメーターに不備がなければレスポンス結果として総ページ数や注文番号リストを確認できるはずです。
この時取得した総ページ数を元に、ページリクエスト情報のリクエストページ番号を変えることで期間内の全注文を取得することが可能になります。
さて、お気付きかと思いますが、このサンプルでは受注の詳細な情報を取得することはできません。
取得できるのはリクエストで指定した条件に該当する注文の『注文番号リスト』だけです。
受注の詳細情報を取得するには、『注文番号リスト』を使って『rpay.order.getOrder』にリクエストを行う必要があります。
今回はここまでになります。
後編にて受注詳細情報の取得『rpay.order.getOrder』を使った受注詳細情報の取得について投稿します。
不明な点があれば気軽にコメントください。
それでは
ディスカッション
コメント一覧
まだ、コメントがありません