API リファレンス

Google Play チェック

POST/v1/google-play/verify

この API キーに設定されたサービスアカウントで、Google Play の購入トークンを確認します(コンソール → API キー → 編集 → Google Play サブスクリプションの確認)。結果は Google から直接返されます。ゲートウェイは課金せず、何を解放するかはアプリ側で決めます。結果はトークンごとに 1 分間キャッシュされます。

#リクエストパラメーター

  • purchase_tokenstring必須

    Play Billing の購入トークン。Flutter の in_app_purchase では purchaseDetails.verificationData.serverVerificationData です。

subscribed は、期限切れのものも含め、このアプリの実際のサブスクリプションであれば true です。active は利用可能な間だけ true です。キャンセルされたサブスクリプションは、自動更新がオフになっただけなので expiry_time まで active のままです。in_trial は現在の期間が無料トライアルの間 true で、その場合 expiry_time はトライアルの終了時刻です。不明なトークンはステータス 200 で、subscribed false、state NOT_FOUND を返します。

Google の設定、Flutter アプリからの呼び出し、何を解放するかの判断については、ガイドで順を追って説明しています。 アプリでの Google Play サブスクリプション →

キャッシュ済みの応答や失敗も含め、すべての呼び出しはコンソール → リクエストログ に、呼び出したキーの無料の「Google Play チェック」行として、結果、注文 ID、トークンの末尾数文字とともに表示されます。そこで購入トークン全体、末尾の数文字、または注文 ID で検索できます。これらの行はリクエスト数には含まれません。

#関連するエラー

  • 400 invalid_requestボディが JSON でないか、purchase_token がありません。
  • 400 google_play_not_configuredこの API キーにはまだパッケージ名とサービスアカウントが設定されていません。
  • 401Bearer トークンが無効か、ありません。
  • 429確認呼び出しのキー単位の上限:デフォルトは 1 分あたり 120 回で、サポートがキーごとに引き上げられます。上限はキーの Google Play 設定に表示されます。Retry-After の時間だけ待ち、前回の結果を引き続き使ってください。
  • 502 google_play_api_disabledサービスアカウントの Google Cloud プロジェクトで Google Play Android Developer API が有効になっていません。有効にして、数分後に再試行してください。
  • 502 google_play_permission_deniedGoogle がアクセスを拒否しました:Play Console でサービスアカウントを招待し、財務データの閲覧と注文・サブスクリプションの管理の権限を付与してください。新しい権限の反映には最大 1 日かかることがあります。
  • 502 google_play_credentials_invalid保存されているサービスアカウントキーを Google が拒否しました。キーに新しいものをアップロードしてください。
  • 503 google_play_unavailableGoogle が時間内に応答しませんでした。数秒後に再試行してください。

エラーコード一覧 →

#リクエスト例

curl https://www.aisplice.store/v1/google-play/verify \
  -H "Authorization: Bearer sk-YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"purchase_token": "PURCHASE_TOKEN_FROM_PLAY_BILLING"}'

#レスポンス

response.json
{
  "package_name": "com.example.app",
  "subscribed": true,
  "active": true,
  "in_trial": false,
  "state": "SUBSCRIPTION_STATE_ACTIVE",
  "product_id": "vip_monthly",
  "expiry_time": 1793000000,
  "auto_renewing": true,
  "acknowledged": true,
  "test_purchase": false,
  "order_id": "GPA.3300-1111-2222-44444..2",
  "checked_at": 1790400000
}

まだ解決しませんか?

リクエスト ID かエラーメッセージを送っていただければ、こちらで調査します。