ウォレットアプリ向け:ユーザーのレシートをOAuthで取得するガイド

oauth api receipt webhook ios android line
このガイドについて
このガイドはユーザーが自身の Receipt Roller アカウントと連携し、購買レシートを iOS・Android・LINE Mini App などで閲覧するウォレット型アプリ向けです(ユーザーの同意のもとに user.receipts.read スコープでデータを取得します)。

店舗が自社アプリでデジタルレシートをお客様に発行し、Webhook でリアルタイム通知を受け取りたい場合は、店舗向けガイドをご覧ください。

ウォレットアプリ向け:ユーザーのレシートをOAuthで取得するガイド

自社のiOSアプリ・Androidアプリ・LINE Mini Appを持つ店舗・ブランド向けのデベロッパーガイドです。
レシートローラーのOAuth認証とAPIを使えば、自分の店舗で発行されたデジタルレシートをユーザーの同意のもとで取得し、自社アプリに表示することができます。


ユースケース

たとえば、こんな使い方ができます。

  • コーヒーチェーンが自社アプリで「購入履歴」を表示する
  • ドラッグストアがLINE Mini Appで「マイレシート」を見せる
  • ECブランドがAndroidアプリで月次の支出サマリーをダッシュボードに表示する
  • 購買完了と同時にWebhookで自社サーバーへレシートデータを送信する

仕組みの概要

ユーザー → 自社アプリ → OAuth同意画面(レシートローラー)
                              ↓
                        アクセストークン発行
                              ↓
              自社アプリ → レシートAPI → デジタルレシート取得

自社アプリはレシートローラーのOAuth 2.0フローでアクセストークンを取得します。
取得したトークンを使ってAPIを呼び出すと、そのユーザーが自分の店舗で受け取ったレシートを返します。


ステップ1:アプリを登録する

  1. レシートローラーの開発者ポータルにログインします
  2. 「アプリを登録」からクライアントIDとシークレットを発行します
  3. redirect_uri(認可後のリダイレクト先)を設定します

ステップ2:OAuth認可コードフローを実装する

2-1. 認可コードを取得

ユーザーをブラウザで以下のURLに誘導します。

GET /oauth/authorize
  ?client_id=YOUR_CLIENT_ID
  &redirect_uri=YOUR_REDIRECT_URI
  &response_type=code
  &scope=user.receipts.read user.spending.read
  &state=RANDOM_STRING

ユーザーがレシートローラーの同意画面で「許可」をタップすると、redirect_uri に認可コードが返ります。

YOUR_REDIRECT_URI?code=AUTH_CODE&state=RANDOM_STRING

2-2. コードをトークンに交換

POST /api/v1/auth/token
Content-Type: application/json

{
  "grantType": "authorization_code",
  "clientId": "YOUR_CLIENT_ID",
  "clientSecret": "YOUR_CLIENT_SECRET",
  "code": "AUTH_CODE",
  "redirectUri": "YOUR_REDIRECT_URI"
}

レスポンス:

{
  "accessToken": "eyJ...",
  "refreshToken": "def50200...",
  "tokenType": "Bearer",
  "expiresIn": 3600,
  "scope": "user.receipts.read user.spending.read"
}

2-3. トークンのリフレッシュ

アクセストークンの有効期限が切れたらリフレッシュします。

POST /api/v1/auth/refresh
Content-Type: application/json

{
  "refreshToken": "def50200...",
  "clientId": "YOUR_CLIENT_ID"
}

ステップ3:レシートを取得する

すべてのAPIリクエストに Authorization: Bearer {access_token} ヘッダーを付けます。

レシート一覧(月別フィルタ対応)

GET /api/v1/user/receipts?year=2026&month=4
Authorization: Bearer {access_token}

レシート詳細(明細・店舗情報含む)

GET /api/v1/user/receipts/{id}
Authorization: Bearer {access_token}

月間支出サマリー

GET /api/v1/user/receipts/summary?year=2026&month=4
Authorization: Bearer {access_token}

スコープ:user.spending.read
カテゴリ別の内訳、前月比、レシート枚数を返します。ダッシュボード画面の構築に使えます。


ステップ4:Webhookでリアルタイム受信する

APIをポーリングする代わりに、レシートが発行された瞬間に自社サーバーへ通知を受けることができます。開発者ポータルからWebhookエンドポイントを登録すると、ユーザーのレシートが作成・更新されるたびにPOSTされます。

セキュリティ検証

受信したWebhookの正当性を確認するため、X-RR-Signature ヘッダーを検証してください。

import hmac, hashlib

def verify_signature(payload_body: bytes, secret: str, signature_header: str) -> bool:
    expected = "sha256=" + hmac.new(
        secret.encode(), payload_body, hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(expected, signature_header)

必要なスコープ一覧

スコープ 用途
user.receipts.read レシート一覧・詳細の取得、画像スキャン
user.spending.read 月間支出サマリーの取得

対応プラットフォーム

プラットフォーム 実装方法
iOS ASWebAuthenticationSession でOAuth認可、URLSession でAPI呼び出し
Android Chrome Custom Tabs でOAuth認可、OkHttp または Retrofit でAPI呼び出し
LINE Mini App liff.init() 後に liff.getAccessToken() でLINEトークンを取得し、レシートローラーOAuthトークンに交換

よくある質問

Q. 自分の店舗のレシートだけが返ってきますか?
A. はい。APIはOAuthで認証されたユーザーが受け取ったレシートのうち、あなたの店舗に紐付いたものだけを返します。他店のデータは取得できません。

Q. ユーザーが同意を取り消した場合は?
A. アクセストークンが無効になります。以降のAPIリクエストは 401 を返します。

Q. Webhookの再送はありますか?
A. 自社サーバーが 2xx を返せなかった場合、最大4回まで自動リトライされます。


次のステップ

  • 技術的なご質問はサポートまでお問い合わせください
公開日: 2026-04-09 更新日: 2026-04-14
タグ
API (8) Webhook (8) api (6) oauth (5) トラブル (5) OAuth (4) getting-started (4) アプリ登録 (4) app-registration (3) webhook (3)