#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をサービス側で記録している課金ログと照らし合わせてアカウントを特定すれば良さそう