構成
- スマレジの管理画面にアプリのアイコンが並び、押すと本アプリ(apps.orosy.com/smaregi)へ遷移します(iframe 埋め込みはしません)
- スマレジとの認証: 認可コード方式の OAuth 2.0 + OpenID Connect。リダイレクト URI は apps.orosy.com/smaregi/oauth/callback
- 利用者契約通知先: apps.orosy.com/smaregi/notify(契約の開始・終了を受け取り、終了時は接続情報を削除。通知の取りこぼしに備え、定期的に契約の状態を API で突き合わせます)
- Webhook: 使用しません
画面の操作と呼び出す API
- 接続 — OAuth(authorization_code)・店舗の一覧(在庫を足す店舗を決める)
- ショップに載せる — 商品の登録・更新・登録済み確認(非表示で登録。販売価格は税抜。軽減税率は設定で有効にしたときだけ)
- 載せた商品の一覧・削除 — 商品の参照・削除(削除は確認画面のあと)
- 入荷を在庫に反映 — 在庫の加算(確保が確定した数量だけ。同じ注文の同じ明細は 1 回しか足さない)
- 自動同期 — 仕入元 orosy の在庫を確認するだけ。スマレジ側は非表示にする設定のときだけ商品の表示状態を更新
データフロー
- 店主がスマレジの認可を承認 → アクセストークンを暗号化して保存
- 店主が orosy にログイン → orosy の API キーを発行し暗号化して保存(承認済みアカウントのみ商品と卸価格を表示)
- 商品の登録・在庫の加算は、店主の操作をきっかけにサーバー側からスマレジ API を呼び出す
- 契約終了の通知を受けたら、トークン・orosy の認証情報・配送先を削除
失敗時の扱い
- 一括登録は 1 件ずつ順に送り、失敗した商品は商品名と理由を画面に出して「もう一度載せる」を 提供
- 在庫の加算で応答が確認できなかった場合は「足したことにして止め」、店主に在庫の確認を促す(二重加算より不足側に倒す)
セキュリティ
- 秘密情報(トークン・API キー)は AES-256-GCM で暗号化して保存。ブラウザには渡さない
- スマレジ API の呼び出しはサーバー側の専用モジュールに限定(CI で境界を検査)
- 全テーブルで行レベルセキュリティを有効化。店舗ごとにデータを分離
- HTTPS のみ。Cookie は HttpOnly・Secure・SameSite=Lax
関連資料: orosy Wholesale アプリ説明資料/orosy Wholesale 動作マニュアル/サポート