スマレジAPI連携画面でAPI設定 & トークンを取得する
- 管理画面にログイン
- 左下の「設定」ボタンから「システム連携」→「スマレジAPI設定」へ移動
- 「受信設定」でAPIを利用できるようにする
- 受信機能を利用するを「利用する」に変更
- アクセストークン発行ボタンを押下してトークンを取得する
ここの「契約ID」と「アクセストークン」はPHPで使用するのでメモしておく
- 機能設定で利用したいAPI項目を「利用する」に変更
- 最後に「更新」ボタンを押下で完了
PHPで利用してみる
- sumaregi.php
<?php
// ⭐️ スマレジAPIのエンドポイント
$url = 'https://webapi.smaregi.jp/access/';
// ⭐️ 「受信設定」に記載されている契約ID
$contractId = 'XXXXX';
// ⭐️ 「受信設定」に記載されているアクセストークン
$accessToken = 'XXXXXXXXXXXXXXXXXXXXX';
// ⭐️ cURLセッション初期化
$curl = curl_init();
/**
* ⭐️ 各種設定を行う
*/
// エンドポイント設定
curl_setopt($curl, CURLOPT_URL, $url);
// ヘッダー情報設定
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/x-www-form-urlencoded;charset=UTF-8',
"X-contract-id: $contractId",
"X-access-token: $accessToken",
]);
// タイムアウト時間設定
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
// 出力を有効にする
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
// POSTリクエストを有効にする
curl_setopt($curl, CURLOPT_POST, true);
// SSL証明書の検証を無効にする
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
// ⭐️ 送信するデータを指定
// 例えば商品情報を全件取得する場合
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query([
'proc_name' => 'product_ref',
'params' => json_encode([
'table_name' => 'ProductReserveItem',
])
]));
// ⭐️ 取得結果を配列にしてダンプしてみる
$response = curl_exec($curl);
$responseArray = json_decode(trim($response), true);
print_r($responseArray);
// ⭐️ cURLセッション終了
curl_close($curl);
ざっくりまとめ
- スマレジAPIでは、契約IDとアクセストークンをヘッダーに入れて認証を行う
curl_setopt()
で諸々オプション設定CURLOPT_POSTFIELDS
でPOSTしたいデータを指定する
ここで取得対象のAPI項目や検索項目を指定できるcurl_exec()
でAPIにPOSTし、受け取ったデータをjson_decode
で配列として取得
CURLOPT_POSTFIELDSの例たち
- 商品情報取得
// 商品情報を全件取得する場合
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query([
'proc_name' => 'product_ref',
'params' => json_encode([
'table_name' => 'ProductReserveItem',
])
]));
// 商品情報を条件取得する場合
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query([
'proc_name' => 'product_ref',
'params' => json_encode([
'table_name' => 'ProductReserveItem',
'conditions' => [
['productId' => 10], // ID指定
]
])
]));
- 取引情報取得
// 取引情報を全件取得する場合
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query([
'proc_name' => 'transaction_ref',
'params' => json_encode([
'table_name' => 'TransactionDetail',
])
]));
// 取引情報を条件取得する場合
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query([
'proc_name' => 'transaction_ref',
'params' => json_encode([
'table_name' => 'TransactionDetail',
'conditions' => [
['productName like' => "%ハイボール%"] // あいまい検索
],
'order' => [
'transactionHeadId',
'transactionDetailId'
]
])
]));
- 日次締め情報取得
// 日次締め情報を全件取得する場合
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query([
'proc_name' => 'daily_sum_ref',
'params' => json_encode([
'table_name' => 'DailySum',
])
]));
// 日次締め情報を条件取得する場合
// 日付指定
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query([
'proc_name' => 'daily_sum_ref',
'params' => json_encode([
'table_name' => 'DailySum',
'conditions' => [
['sumDate' => '2020-12-21'] // 日付指定
]
])
]));
// 期間指定
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query([
'proc_name' => 'daily_sum_ref',
'params' => json_encode([
'table_name' => 'DailySum',
'conditions' => [
['sumDate >=' => '2021-02-16'], // 開始日指定
['sumDate <=' => '2021-02-17'] // 終了日指定
]
])
]));
PHPでスマレジのAPIを利用してデータ取得した時のメモ