RMS APIは楽天市場の店舗管理、商品管理の自動化を実現するAPIです。あまりサンプルがまとまっていないので、APIの全パターンを下記記事でまとめています。
楽天 RMS APIのPHPサンプル集・使い方 ほぼ全パターン(随時更新中)
今回は楽天ペイ受注API(RakutenPayOrderAPI)、searchOrderのサンプルを解説します。
APIを使用できる環境がない場合は、下記から出店申請をしてください。毎度言ってますが料金が高いので、APIを試すだけなら既に店舗アカウントを持っている人に頼んでテスト店舗を使わせてもらうのも手です。
サンプルソースコードは下記です。
こちらの記事は当初運営者メンバーの執筆でしたが現在は離れており、寄稿記事となっています。そのため当記事の情報アップデートにつきましては2020年1月をもって終了・サポート・内容についての問合せなどは受けておりません。また、記事内容を利用された際に生じた内容にも責任を負えませんのでご了承ください。
searchOrderの概要
searchOrderを使えば、店舗に入った注文の注文番号を取得することができます。
例えばステータス(orderProgress)が「100:注文確認待ち」になっている注文の注文番号を取得し、confirmOrderで楽天に決済を依頼するなどの使い方ができます。
searchOrderはREST APIです。エンドポイントにJSONパラメーターを添えてPOSTすると、指定の条件の注文をJSONで取得できます。
指定できる検索パラメータの例は下記です。
- ステータスリスト
- サブステータスIDリスト
- 期間検索種別
- 期間検索開始日時
- 期間検索終了日時
- 販売種別リスト
- 支払方法名
- 配送方法
- 発送日未指定有無フラグ
- お荷物伝票番号未指定有無フラグ
- 検索キーワード種別
- 検索キーワード
- 注文メールアドレス種別
- 注文者メールアドレス
- 電話番号種別
- 電話番号
- 申込番号
- 購入サイトリスト
- あす楽希望フラグ
- クーポン利用有無フラグ
- 医薬品受注フラグ
- 海外かご注文フラグ
取得できる注文の情報は下記です。
- 注文番号
メモ
取得件数はデフォルトで30件です。たくさんの件数を指定したければ、requestRecordsAmountで1000件まで指定できます
POST リクエスト例
下記のようなリクエストを送ります。
{
"dateType": 1,
"startDatetime": "2018-09-02T21:43:42+0900",
"endDatetime": "2018-10-02T21:43:42+0900",
"orderProgressList": [
100,
200,
300,
400
],
"PaginationRequestModel":{"requestRecordsAmount":1000,"requestPage":1}
}
レスポンス例
下記のような感じで返ってきます。
{
"orderNumberList": [
"362633-20180924-00001714",
"362633-20180921-00000729",
"362633-20180921-00001720",
"362633-20180921-00000701",
"362633-20180921-00001719",
"362633-20180921-00000723"
],
"MessageModelList": [
{
"messageType": "INFO",
"messageCode": "ORDER_EXT_API_SEARCH_ORDER_INFO_101",
"message": "注文検索に成功しました。"
}
],
"PaginationResponseModel": {
"totalRecordsAmount": 6,
"totalPages": 1,
"requestPage": 1
}
}
ソースコード解説
やることは超簡単で下記。
- POSTリクエストする検索条件を入力。JSONにして検索パラメータを作る
- CURLで検索パラメータをぶち込んでPOSTする
POSTリクエストする検索条件を入力。JSONにして検索パラメータを作る
まずはリクエストとして設定する検索条件の変数を設定。
$orderNumber = 1;
if($_GET[num]) {
$orderNumber = $_GET[num];
}
$orderNumberList = array($orderNumber);
$dateType = 1; // 期間検索種別
// 期間指定
$endDate = new DateTime('now');
$endDate->setTimeZone( new DateTimeZone('UTC'));
$endDate->modify('+1 day'); // 現在時刻の次の日を終了時刻に
$startDate = clone $endDate;
$startDate->modify('-30 day'); // 30日前を開始に
$startDateTime = $startDate->format("Y-m-d\TH:i:s+0900");
$endDateTime = $endDate->format("Y-m-d\TH:i:s+0900");
// var_dump($startDateTime);
// var_dump($endDateTime);
// 取得したいオーダーステータス
$orderProgressList = [ 100, 200, 300, 400 ];
// 1リクエストで何件要求するか (デフォルト30件しかないので注意)
$paginationRequestModel = [
'requestRecordsAmount' => 1000,
'requestPage' => 1,
];
CURLで検索パラメータをぶち込んでPOSTする
jsonにした検索パラメータをcurlでPOSTする。
list($httpStatusCode, $response, $requestJson, $jsonResponse) = searchOrder($dateType, $startDateTime, $endDateTime, $orderProgressList, $paginationRequestModel);
/***
* RakutenPayOrderAPI searchOrder APIを使って、楽天ペイ注文の「注文情報の取得」を行うことができます。
* サンプルレスポンスは下記
* */
function searchOrder($dateType, $startDateTime, $endDateTime, $orderProgressList) {
$authkey = base64_encode(RMS_SERVICE_SECRET . ':' . RMS_LICENSE_KEY);
$header = array(
'Content-Type: application/json; charset=utf-8',
"Authorization: ESA {$authkey}",
);
$requestJson = json_encode([
'dateType' => $dateType,//期間検索種別
'startDatetime' => $startDateTime,//検索対象期間先頭日時
'endDatetime' => $endDateTime,//検索対象エンド点
'orderProgressList'=> $orderProgressList,//取得したいオーダーステータス
'PaginationRequestModel' => $paginationRequestModel // 取得したい件数など
]);
$url = RMS_API_RAKUTEN_PAY_SEARCH_ORDER;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $requestJson);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //返り値を 文字列で返します
$response = curl_exec($ch);
if(curl_error($ch)){
$response = curl_error($ch);
}
$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$jsonResponse = $response;
$response = json_decode( $response, true );
curl_close($ch);
return array($httpStatusCode, $response, $requestJson, $jsonResponse);
}
まとめ
searchOrderを使って、注文の入った注文番号を取得できます。注文の詳細までは取れないため、取得した注文番号リストを使って、getOrderを使って更に注文詳細情報を取得する流れをとります。
楽天ペイ受注API(RakutenPayOrderAPI) getOrderの詳細記事はこちら↓
RMS 楽天ペイ受注API(RakutenPayOrderAPI) getOrderで注文情報を取得するPHPサンプル解説・使い方
試してみたい方は是非下記から資料請求などをして準備をはじめてみてくださいね。