スマレジAPI を使ってサンドボックス環境から会員情報を取得・更新してみた

スマレジAPI を使ってサンドボックス環境から会員情報を取得・更新してみた

2021.03.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

スマレジとは 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 が用意されているので引き続き触ってみようかなと思います。何かの参考になれば幸いです。

参考

この記事をシェアする

関連記事