6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Voided Purchases APIを呼んでみる(Google Play Developer API)

Posted at

#0.はじめに
Google Playでの返金ポリシー変更に伴い、返金リクエストを行ったユーザーをアプリ提供者が知るためのAPI(Voided Purchases API)が追加されまたのでとりあえずOAuthでこのAPIを叩いてみたメモ

Google Play での返金についての新しい API とポリシーのお知らせ
https://developers-jp.googleblog.com/2017/04/google-play-new-api-policy.html

#1.APIアクセスの設定

  • Google Play Console https://play.google.com/apps/publish/ にアクセス
  • 設定 -> APIアクセス と進む
  • 初めての場合はAPIプロジェクトを作成する
  • OAuthクライアントを作成をクリック
  • 生成されたクライアントIDとクライアントシークレットを取得
    • クライアントシークレットはGoogle Developers Console で表示 -> 編集アイコンクリック先で確認できる

#2.ユーザーの準備

  • 「ユーザーと権限」メニューを開く
  • 「新しいユーザーを招待」から「注文の管理」権限のあるユーザーを作成する

#3.OAuth認証

  • ブラウザで以下のURLにアクセス
https://accounts.google.com/o/oauth2/auth?client_id={クライアントID}>&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope=https://www.googleapis.com/auth/androidpublisher&response_type=code&approval_prompt=force&access_type=offline

*client_id : 手順1で取得したクライアントID
*scope : 今回はhttps://www.googleapis.com/auth/androidpublisherとする
*scopeの一覧はこちらを参照 https://developers.google.com/identity/protocols/googlescopes

  • 認証画面が表示されるので手順2で作成したユーザーで認証
  • コードが表示される(「注文の管理」権限が無いユーザーの場合エラーになる)
  • ターミナルで以下のコマンドを叩く
curl -k -d client_id={クライアントID} -d client_secret={クライアントシークレット} -d redirect_uri=urn:ietf:wg:oauth:2.0:oob -d grant_type=authorization_code -d code={コード} https://accounts.google.com/o/oauth2/token

*client_id : 手順1で取得したクライアントID
*client_secret : 手順1で取得したクライアントシークレット
*code : ブラウザに表示されたコード

  • 以下のようなjsonが返ってくるのでアクセストークンを確認
{
  "access_token" : "<access_token>",
  "expires_in" : 3600,
  "refresh_token" : "<refresh_token>",
  "token_type" : "Bearer"
}

#4.APIを叩く

  • 以下のURLを叩く
https://www.googleapis.com/androidpublisher/v2/applications/{アプリパッケージ名}/purchases/voidedpurchases?access_token={アクセストークン}
  • 以下のようなjsonが返ってくる
{
 "voidedPurchases": [
  {
   "kind": "androidpublisher#voidedPurchase",
   "purchaseToken": "<purchaseToken>",
   "purchaseTimeMillis": "<purchaseTimeMillis>",
   "voidedTimeMillis": "<voidedTimeMillis>"
  }
 ]
}

*Voided Purchases API https://developers.google.com/android-publisher/voided-purchases?hl=ja

#5.おわりに
取得したpurchaseTokenをサービス側で記録している課金ログと照らし合わせてアカウントを特定すれば良さそう

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?