「アイテム課金」の概要 [Android]

アイテム課金の種類
・消費型 |
・非消費型 |
・定期購入型 |
消費型、非消費型は同一のもので、アプリ側で消費させれば消費型となる。
アイテム課金の流れ
1. (アプリ側)アイテムの購入画面を表示する |
2. (ユーザー)アイテムの購入 |
3. (アプリ側)購入の承認 ※3日以内にアプリがアイテムの購入の承認を行わないと、自動的に返金される |
その後に、アイテムを消費型にする場合はアイテムを消費する。すると、再度、アイテムが購入可能となる。消費しなければ非消費型となり、同じアイテムは購入不可となる。
テスト
テストは実機かつリリース版APKでのみ可能。 ※エミュレータ不可
キャンセル
キャンセルは原則として48時間以内。48時間を経過するとアプリデベロッパーに連絡後、承諾を得た上で返金手続きを依頼する事になる。返金は各アプリで原則、1度しか受けられません。
参考サイト
Androidでアプリ内課金テストを行う
Androidのアプリ内購入を実装 Google Play Billing Library 2.0
補足
Google Play Consoleの開発者登録済みのGoogleアカウントとは別に、課金テスト用のGoogleアカウントが必要です。課金テスト用のアカウントは開発者登録の25ドルは不要です。(無料)
アイテムの消費のやり方は次のようにします。
// 購入済みアイテムの一覧を取得する int getPurchasesList(BillingClient billingClient, ArrayList<Purchase> purchase) { Purchase.PurchasesResult purchasesResult = billingClient.queryPurchases(BillingClient.SkuType.INAPP); int responseCode = purchasesResult.getResponseCode (); if(responseCode== BillingClient.BillingResponseCode.OK){ List<Purchase> purchases = purchasesResult.getPurchasesList(); for (Purchase p : purchases) { // 購入済み if(Purchase.PurchaseState.PURCHASED == p.getPurchaseState()){ purchase.add(p); } } } return purchase.size(); } // 課金アイテムの消費 // ※消費すると再度、購入が可能となる void Consume(){ // 購入済みのアイテムを取得する final ArrayList<Purchase> purchase = new ArrayList<>() ; int size = getPurchasesList(billingClient, purchase); // アイテムを消費する for (int i=0;i<size;i++) { // 承認済みのアイテムのみ消費を行う if (purchase.get(i).isAcknowledged()) { // 消費パラメータ ConsumeParams params = ConsumeParams.newBuilder() .setPurchaseToken(purchase.get(i).getPurchaseToken()) .build(); // 消費操作が終了 billingClient.consumeAsync(params, new ConsumeResponseListener() { @Override public void onConsumeResponse(BillingResult billingResult, String purchaseToken) { int responseCode = billingResult.getResponseCode(); // 購入トークンが一致する1つのPurchaseを取得する Purchase p = null; for (Purchase item : purchase) { if (item.getPurchaseToken().equals(purchaseToken)){ p = item; } } if (responseCode == BillingClient.BillingResponseCode.OK) { // ココで消費完了なので、お好きな処理を行う // p.getSku() // p.getOrderId() などを使う } } }); } } }
上記は「購入済み」(PURCHASED)のアイテムですが、その他に「保留中」(PENDING)、「不特定状態」(UNSPECIFIED_STATE)があります。
保留中の課金処理が不承認された場合は、1,2時間または数時間後に自動的に削除されます。保留中のアイテムは消費不可なので、そのまま放っておくだけです。以上でござる。
関連記事
前の記事: | 証明書フィンガープリント(MD5/SHA1/SHA-256)を確認する [Android Studio] |
次の記事: | Androidから安全に独自のWebAPIを実行する [端末にパスワード保存] |