スマレジAPI を使ってサンドボックス環境から会員情報を取得・更新してみた
スマレジとは iPhone/iPad 等の端末から利用できる高機能クラウド POS サービスです。レジ機能、予算管理、顧客管理、スタッフ管理、在庫管理など、幅広い用途で利用することができます。
本記事ではスマレジ Developersを利用してサンドボックス環境の作成から POS 機能と API 連携する一連の流れをまとめました。
本記事の流れ
- スマレジ Developers アカウントを作成
- サンプルアプリを登録
- サンプルデータを作成
- API からサンドボックス環境のデータを取得・更新
スマレジ Developers アカウントを作成
スマレジ Developersでアカウントを作成します。
サンプルアプリを登録
API を利用するのに必要なクライアント ID とクライアントシークレットを払い出すため、サンプルアプリを登録します。
スコープタブで利用したい API を有効にします。今回は会員情報を取得する API を利用したいので参照・更新を有効化しています。
基本情報は必須マークがついているもののみ入力すれば OK です。環境設定の認可情報のクライアント ID とクライアントシークレットを後に利用します。
サンプルデータを作成
コンソール右上の Bento メニューからサンドボックス環境を開くことができます。
POS を選択し、会員<新規登録 から会員データの登録を行います。データの量が多い場合は CSV でインポートすることも可能ですが、今回は手動で登録を行います。
二件の会員データを以下の内容で登録しました。後ほど会員ポイント一覧を取得する API も利用するため、それぞれポイントも付与しています。
API からデータを取得
Postmanを利用して API からデータを取得します。
アクセストークンの取得
全ての API コールに必要なアクセストークンを取得します。必要な情報は以下です。
項目 | 値 |
---|---|
契約 ID | スマレジDevelopersポータル右上に表示される”契約 ID” |
クライアント ID | 登録したサンプルアプリの”環境設定”ページの認可情報からで確認できる |
クライアントシークレット | 登録したサンプルアプリの”環境設定”ページの認可情報からで確認できる |
以下の内容でリクエストを送信します。
項目 | 値 |
---|---|
リクエスト種別 | GET |
リクエスト URL | https://id.smaregi.dev/app/<契約ID>/token |
Authorization | Basic Auth を選択し、UserName にクライアント ID、Password にクライアントシークレットを指定します。 |
Headers | Content-Type にapplication/x-www-form-urlencoded を指定します |
Body | x-www-form-urlencoded を選択し、grant_type にclient_credentials 、scope にアプリの環境変数で指定した API を半角スペース区切りで指定します。今回はpos.customers:read pos.customers:write を指定しています。 |
トークンが返るので、クリップボードに保存しておきます。
参考: スマレジ・プラットフォーム API 共通仕様書 アクセストークン
会員登録
先ほど取得したトークンを使ってスマレジ API から新規会員を追加します。
項目 | 値 |
---|---|
リクエスト種別 | POST |
リクエスト URL | https://api.smaregi.dev/<契約ID>/pos/customers |
Authorization | Bearer Token を選択し、Token に取得したトークンを指定します |
以下の内容で新規会員を作成します。
{ "customerCode": "003", "customerNo": "003", "firstName": "一郎", "lastName": "佐々木", "firstKana": "イチロウ", "lastKana": "ササキ", "sex": "1", "mailReceiveFlag": "1", "status": "0", "storeId": "2" }
レスポンス
Status: 200 { "customerId": 3, "customerCode": "003", "customerNo": "003", "rank": null, "staffRank": null, "firstName": "一郎", "lastName": "佐々木", "firstKana": "イチロウ", "lastKana": "ササキ", "postCode": null, "address": null, "phoneNumber": null, "faxNumber": null, "mobileNumber": null, "mailAddress": null, "mailAddress2": null, "mailAddress3": null, "companyName": null, "departmentName": null, "managerialPosition": null, "sex": "1", "birthDate": null, "pointExpireDate": null, "lastComeDateTime": null, "entryDate": null, "leaveDate": null, "pointGivingUnitPrice": null, "pointGivingUnit": null, "pinCode": null, "passportNo": null, "nationality": null, "alphabetName": null, "mailReceiveFlag": "1", "note": null, "note2": null, "favoriteList": null, "browsingList": null, "status": "0", "storeId": "2", "insDateTime": "2021-03-29T13:39:41+09:00", "updDateTime": "2021-03-29T13:39:41+09:00" }
会員情報を取得
会員の一覧データを取得してみましょう
項目 | 値 |
---|---|
リクエスト種別 | GET |
リクエスト URL | https://api.smaregi.dev/<契約ID>/pos/customers |
Authorization | Bearer Token を選択し、Token に取得したトークンを指定します |
レスポンス
[ { "customerId": "1", "customerCode": "001", "customerNo": "001", "rank": null, "staffRank": null, "firstName": "花子", "lastName": "山田", "firstKana": "ハナコ", "lastKana": "ヤマダ", "postCode": null, "address": null, "phoneNumber": null, "faxNumber": null, "mobileNumber": null, "mailAddress": null, "mailAddress2": null, "mailAddress3": null, "companyName": null, "departmentName": null, "managerialPosition": null, "sex": "2", "birthDate": null, "pointExpireDate": null, "lastComeDateTime": null, "entryDate": "2021-03-29", "leaveDate": null, "pointGivingUnitPrice": "100", "pointGivingUnit": "10.00", "pinCode": null, "passportNo": null, "nationality": null, "alphabetName": null, "mailReceiveFlag": "1", "note": null, "note2": null, "favoriteList": null, "browsingList": null, "status": "0", "storeId": "2", "insDateTime": "2021-03-29T10:53:26+09:00", "updDateTime": "2021-03-29T11:31:21+09:00" }, { "customerId": "2", "customerCode": "002", "customerNo": "002", "rank": null, "staffRank": null, "firstName": "太郎", "lastName": "佐藤", "firstKana": "タロウ", "lastKana": "サトウ", "postCode": null, "address": null, "phoneNumber": null, "faxNumber": null, "mobileNumber": null, "mailAddress": null, "mailAddress2": null, "mailAddress3": null, "companyName": null, "departmentName": null, "managerialPosition": null, "sex": "1", "birthDate": null, "pointExpireDate": null, "lastComeDateTime": null, "entryDate": "2021-03-29", "leaveDate": null, "pointGivingUnitPrice": null, "pointGivingUnit": null, "pinCode": null, "passportNo": null, "nationality": null, "alphabetName": null, "mailReceiveFlag": "1", "note": null, "note2": null, "favoriteList": null, "browsingList": null, "status": "0", "storeId": "2", "insDateTime": "2021-03-29T10:54:02+09:00", "updDateTime": "2021-03-29T11:31:34+09:00" }, { "customerId": "4", "customerCode": "003", "customerNo": "003", "rank": null, "staffRank": null, "firstName": "一郎", "lastName": "佐々木", "firstKana": "イチロウ", "lastKana": "ササキ", "postCode": null, "address": null, "phoneNumber": null, "faxNumber": null, "mobileNumber": null, "mailAddress": null, "mailAddress2": null, "mailAddress3": null, "companyName": null, "departmentName": null, "managerialPosition": null, "sex": "1", "birthDate": null, "pointExpireDate": null, "lastComeDateTime": null, "entryDate": null, "leaveDate": null, "pointGivingUnitPrice": null, "pointGivingUnit": null, "pinCode": null, "passportNo": null, "nationality": null, "alphabetName": null, "mailReceiveFlag": "1", "note": null, "note2": null, "favoriteList": null, "browsingList": null, "status": "0", "storeId": "2", "insDateTime": "2021-03-29T13:54:52+09:00", "updDateTime": "2021-03-29T13:54:52+09:00" } ]
会員ポイント一覧取得
項目 | 値 |
---|---|
リクエスト種別 | GET |
リクエスト URL | https://api.smaregi.dev/<契約ID>/pos/customers/point |
Authorization | Bearer Token を選択し、Token に取得したトークンを指定します |
レスポンス
[ { "customerId": "1", "mile": null, "point": "1001", "pointExpireDate": null, "insDateTime": "2021-03-29T10:53:26+09:00", "updDateTime": "2021-03-29T11:31:21+09:00" }, { "customerId": "2", "mile": null, "point": "200", "pointExpireDate": null, "insDateTime": "2021-03-29T10:54:02+09:00", "updDateTime": "2021-03-29T11:31:34+09:00" }, { "customerId": "4", "mile": null, "point": null, "pointExpireDate": null, "insDateTime": "2021-03-29T13:54:52+09:00", "updDateTime": "2021-03-29T13:54:52+09:00" } ]
あとがき
本記事では スマレジDeveloper アカウント作成、トークンの取得、APIとの疎通までの一連の流れをご紹介しました。今回は会員 API を試しましたが、他にもいろんな API が用意されているので引き続き触ってみようかなと思います。何かの参考になれば幸いです。