Update billing library

This commit is contained in:
Jonas Lochmann 2021-05-24 02:00:00 +02:00
parent 5c6b028c59
commit e7687fd511
No known key found for this signature in database
GPG key ID: 8B8C9AEE10FA5B36
4 changed files with 15 additions and 13 deletions

View file

@ -203,8 +203,8 @@ dependencies {
implementation 'com.squareup.okhttp3:okhttp-tls:4.9.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.8.1'
googleApiImplementation "com.android.billingclient:billing:3.0.3"
googleApiImplementation "com.android.billingclient:billing-ktx:3.0.3"
googleApiImplementation "com.android.billingclient:billing:4.0.0"
googleApiImplementation "com.android.billingclient:billing-ktx:4.0.0"
implementation('io.socket:socket.io-client:1.0.0') {
exclude group: 'org.json', module: 'json'

View file

@ -137,11 +137,11 @@ class ActivityPurchaseModel(application: Application): AndroidViewModel(applicat
}
suspend fun queryPurchases() = initAndUseClient { client ->
val response = client.queryPurchases(BillingClient.SkuType.INAPP)
val response = client.queryPurchasesAsync(BillingClient.SkuType.INAPP)
response.billingResult.assertSuccess()
response.purchasesList!!.filter {
response.purchasesList.filter {
it.purchaseState == Purchase.PurchaseState.PURCHASED
}
}
@ -151,11 +151,11 @@ class ActivityPurchaseModel(application: Application): AndroidViewModel(applicat
isWorkingInternal.setTemporarily(true).use {
try {
initAndUseClient { client ->
val result = client.queryPurchases(BillingClient.SkuType.INAPP)
val result = client.queryPurchasesAsync(BillingClient.SkuType.INAPP)
result.billingResult.assertSuccess()
for (purchase in result.purchasesList!!) {
for (purchase in result.purchasesList) {
handlePurchase(purchase, client)
}
}
@ -219,7 +219,9 @@ class ActivityPurchaseModel(application: Application): AndroidViewModel(applicat
Log.d(LOG_TAG, "handlePurchase($purchase)")
}
if (PurchaseIds.SAL_SKUS.contains(purchase.sku)) {
val sku = purchase.skus.single()
if (PurchaseIds.SAL_SKUS.contains(sku)) {
// just acknowledge
billingClient.acknowledgePurchase(
@ -227,7 +229,7 @@ class ActivityPurchaseModel(application: Application): AndroidViewModel(applicat
.setPurchaseToken(purchase.purchaseToken)
.build()
).assertSuccess()
} else if (PurchaseIds.BUY_SKUS.contains(purchase.sku)) {
} else if (PurchaseIds.BUY_SKUS.contains(sku)) {
// send and consume
val server = logic.serverLogic.getServerConfigCoroutine()
@ -251,7 +253,7 @@ class ActivityPurchaseModel(application: Application): AndroidViewModel(applicat
}
} else {
if (BuildConfig.DEBUG) {
Log.d(LOG_TAG, "don't know how to handle ${purchase.sku}")
Log.d(LOG_TAG, "don't know how to handle $sku")
}
}
}

View file

@ -48,7 +48,7 @@ class StayAwesomeModel(application: Application): AndroidViewModel(application)
id = skuId,
title = sku?.description ?: skuId,
price = sku?.price ?: "???",
bought = purchases.find { it.sku == skuId } != null
bought = purchases.find { purchase -> purchase.skus.find { sku -> sku == skuId } != null } != null
)
}
)

View file

@ -32,7 +32,7 @@ object BillingClient {
fun launchBillingFlow(activity: Activity, params: BillingFlowParams) = BillingResult
fun acknowledgePurchase(params: AcknowledgePurchaseParams) = BillingResult
fun consumePurchase(params: ConsumeParams) = BillingResult
fun queryPurchases(type: String) = QueryPurchasesResult
suspend fun queryPurchasesAsync(type: String) = QueryPurchasesResult
object BillingResponseCode {
const val OK = 0
@ -74,7 +74,7 @@ object SkuDetailsParams {
object Purchase {
const val purchaseState = PurchaseState.PURCHASED
const val isAcknowledged = true
const val sku = ""
val skus = listOf("")
const val purchaseToken = ""
const val originalJson = ""
const val signature = ""
@ -113,7 +113,7 @@ object BillingFlowParams {
object QueryPurchasesResult {
val billingResult = BillingResult
val purchasesList: List<Purchase>? = emptyList()
val purchasesList: List<Purchase> = emptyList()
}
data class QuerySkuDetailsResult(val billingResult: BillingResult, val details: List<SkuDetails>?) {