-iOSと同じくまとめ
*参考情報 [#r9b4c7ca]
https://developer.android.com/google/play/billing/billing_overview.html?hl=ja
*テスト [#mbdf7198]
+PlayConsoleに登録必要で一回こっきりの$25
+対象アカウントを絞ったα版アプリ公開(ただしそのままだと課金されてしまう)
+対象アカウントに非課金対応を行う
+「これはテスト用の注文です。課金は発生しません」が出ていることを確認すること!
*定期購読レシート検証API [#w182eeb7]
**認証トークンの取得 [#we7c05d5]
**レシートの検証 [#p9939a8e]
https://developers.google.com/android-publisher/api-ref/purchases/subscriptions/get
|変数値|内容|
|
-https://www.googleapis.com/androidpublisher/v2/applications/packageName/purchases/subscriptions/subscriptionId/tokens/token
*流れ [#w35b5f4a]
**認証 [#ze6fcc44]
https://developers.google.com/android-publisher/authorization
**token [#i3d7326c]
base64でエンコードされたJsonを検証するのはiOSと変わらずだが、iOSよりは楽。
-署名検証でJSONが改ざんされていないことを確認(developerPayloadも見る)
INAPP_DATA_SIGNATURE
INAPP_PURCHASE_DATA
ディベロッパーコンソール > アプリ > サービスとAPI の「バイナリに追加する Base64 エンコードの RSA 公開鍵
*購入を一意に識別するキー [#s18d5201]
-orderId
「ユーザーがアプリ内アイテムを購入すると、Google は固有で不変の注文番号をトランザクションに割り当てます。 購入フローの完了時に Google Play からデベロッパーに、注文番号が PURCHASE_STATE_CHANGED インテントの orderId フィールドの値として送られます。」
*用語 [#vd2b5de1]
|Developer Payload|任意の値を設定しておける。なのでサーバーサイドで実DBと付き合わせれば他人のレシート流用は防げる|
|商品リスト|Google Play Developer Consoleで自分で作成するリフト|
|SKU|Stock Keeping Unitで商品の在庫管理単位のこと|
|アプリ内アイテム(Managed product)|消費型(一回使うとおしまい)と非消費型(永遠に付いてくる)がある|
|消費型 アプリ内アイテム|comsumePurchaseメソッドを呼ぶことで消費させる|
|非消費型 アプリ内アイテム|Googleアカウントに紐づく|
|定期購入(Subscription)|Subscription型|
|商品ID|アプリ内で商品を識別できるキー項目。自分で設定する|
同じ商品は二重に購入することはできない。消費型なら消費後、定期購入なら期限切れ後に再度購入可能。
*課金API V3 [#h71aeefb]
https://developer.android.com/google/play/billing/billing_reference.html?hl=ja#purchase-data-table
*参考サイト [#mcc80f2e]
http://inside.pixiv.net/entry/2014/12/09/111310