概要
課金今まで触れてこなかったので、メモです。
基本的にはBillingClientに対して以下をするだけです。
- 接続する。
- 課金アイテムの情報を取得する。
- アイテムの情報を渡して課金するだけ。
このコードラボやりました。
https://codelabs.developers.google.com/codelabs/play-billing-codelab/
(この記事のコードミスっててヤバイことになっても保証はできないです)
何かコメントあればください。
接続する
val billingClient: BillingClient = BillingClient
.newBuilder(context)
.setListener(this)
.build()
init {
billingClient.startConnection(object : BillingClientStateListener {
override fun onBillingSetupFinished(@BillingResponse billingResponse: Int) {
if (billingResponse == BillingResponse.OK) {
Log.i(TAG, "onBillingSetupFinished() response: $billingResponse")
} else {
Log.w(TAG, "onBillingSetupFinished() error code: $billingResponse")
}
}
override fun onBillingServiceDisconnected() {
Log.w(TAG, "onBillingServiceDisconnected()")
}
})
}
課金アイテム(SKU)の情報を取得する
SKUの名前はGoogle Play上でつけるっぽい。
val itemType = SkuType.INAPP
val skuList = listOf("gas", "premium")
val skuDetailsParams = SkuDetailsParams.newBuilder()
.setSkusList(skuList).setType(itemType).build()
billingClient.querySkuDetailsAsync(skuDetailsParams,
{ responseCode, skuDetailsList: MutableList<SkuDetails> ->
// ここで取得完了。(RecyclerViewとかでSkuDetailsの情報を表示できる)
})
SkuDetailsの例
{"productId":"gas","type":"inapp","price":"¥113","price_amount_micros":113088351,"price_currency_code":"JPY","title":"Gas (Play Billing Codelab)","description":"Buy gasoline to ride!"}
課金する
取得した情報にあるSkuDetailsのインスタンスを渡すだけで課金できる
val billingFlowParams = BillingFlowParams.newBuilder()
.setSkuDetails(skuDetails).build()
billingClient.launchBillingFlow(activity, billingFlowParams)
接続の時に渡したリスナーで課金が検知できる。
override fun onPurchasesUpdated(responseCode: Int, purchases: MutableList<Purchase>?) {
Log.d(TAG, "onPurchasesUpdated() response: $responseCode");
}
queryPurchases(SkuType.INAPP)などを呼ぶと、今の課金の状態とか取得できるみたい。
https://developer.android.com/google/play/billing/billing_library_overview へ
接続のリトライのベストプラクティス
ここに載っているので見てみると良さそう
https://codelabs.developers.google.com/codelabs/play-billing-codelab/#7
Next Step
https://developer.android.com/google/play/billing/billing_library_overview
ここに載っていたものそのままですが、Next Stepとして以下が良さそう
アイテム課金などの都度課金
https://developer.android.com/google/play/billing/billing_onetime
月額課金などのサブスクリプション
https://developer.android.com/google/play/billing/billing_subscriptions