Skip to content

Commit 605ca14

Browse files
IAP: add billing init method (#3332)
Co-authored-by: Marvin W <git@larma.de>
1 parent 801481b commit 605ca14

3 files changed

Lines changed: 43 additions & 2 deletions

File tree

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2026 microG Project Team
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
package com.android.vending.billing;
6+
7+
import android.os.Bundle;
8+
9+
interface IInAppBillingInitializeCallback {
10+
void callback(in Bundle bundle);
11+
}

vending-app/src/main/aidl/com/android/vending/billing/IInAppBillingService.aidl

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import com.android.vending.billing.IInAppBillingGetBillingConfigCallback;
1010
import com.android.vending.billing.IInAppBillingGetExternalPaymentDialogIntentCallback;
1111
import com.android.vending.billing.IInAppBillingIsAlternativeBillingOnlyAvailableCallback;
1212
import com.android.vending.billing.IInAppBillingIsExternalPaymentAvailableCallback;
13+
import com.android.vending.billing.IInAppBillingInitializeCallback;
1314

1415

1516
/**
@@ -441,4 +442,14 @@ interface IInAppBillingService {
441442
void showExternalOfferInformationDialog(int apiVersion, String packageName, in Bundle extraParams, IInAppBillingGetExternalPaymentDialogIntentCallback callback) = 1900;
442443

443444
void delegateToBackend(in Bundle bundle, IInAppBillingDelegateToBackendCallback callback) = 2000;
444-
}
445+
446+
/**
447+
* @param apiVersion billing API version that the app is using, must be 22 or later
448+
* @param packageName package name of the calling app
449+
* @param extraParams a Bundle with the following optional keys:
450+
* "callingPackage" - String
451+
* "enablePendingPurchases" - Boolean
452+
* @param callback callback that is invoked with the result, see IInAppBillingInitializeCallback.aidl for details
453+
*/
454+
void initialize(int apiVersion, String packageName, in Bundle extraParams, IInAppBillingInitializeCallback callback) = 2100;
455+
}

vending-app/src/main/java/org/microg/vending/billing/InAppBillingServiceImpl.kt

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import android.app.PendingIntent.FLAG_CANCEL_CURRENT
1010
import android.content.Context
1111
import android.content.Intent
1212
import android.os.Bundle
13+
import android.os.Parcel
1314
import android.util.Log
1415
import androidx.annotation.RequiresApi
1516
import androidx.core.app.PendingIntentCompat
@@ -23,6 +24,7 @@ import com.android.vending.billing.IInAppBillingDelegateToBackendCallback
2324
import com.android.vending.billing.IInAppBillingGetAlternativeBillingOnlyDialogIntentCallback
2425
import com.android.vending.billing.IInAppBillingGetBillingConfigCallback
2526
import com.android.vending.billing.IInAppBillingGetExternalPaymentDialogIntentCallback
27+
import com.android.vending.billing.IInAppBillingInitializeCallback
2628
import com.android.vending.billing.IInAppBillingIsAlternativeBillingOnlyAvailableCallback
2729
import com.android.vending.billing.IInAppBillingIsExternalPaymentAvailableCallback
2830
import com.android.vending.billing.IInAppBillingService
@@ -36,6 +38,7 @@ import kotlinx.coroutines.async
3638
import kotlinx.coroutines.runBlocking
3739
import org.json.JSONObject
3840
import org.microg.gms.utils.toHexString
41+
import org.microg.gms.utils.warnOnTransactionIssues
3942
import org.microg.vending.billing.core.*
4043
import java.util.Locale
4144

@@ -707,4 +710,20 @@ class InAppBillingServiceImpl(private val context: Context) : IInAppBillingServi
707710
override fun delegateToBackend(bundle: Bundle?, callback: IInAppBillingDelegateToBackendCallback?) {
708711
Log.d(TAG, "delegateToBackend Not yet implemented")
709712
}
710-
}
713+
714+
override fun initialize(
715+
apiVersion: Int,
716+
packageName: String?,
717+
extraParams: Bundle?,
718+
callback: IInAppBillingInitializeCallback?
719+
) {
720+
extraParams?.keySet()
721+
Log.w(TAG, "initialize: apiVersion: $apiVersion packageName:$packageName params:$extraParams")
722+
callback?.callback(resultBundle(BillingResponseCode.OK, "", bundleOf(
723+
"BILLING_API_VERSION_KEY" to apiVersion
724+
)))
725+
}
726+
727+
override fun onTransact(code: Int, data: Parcel, reply: Parcel?, flags: Int): Boolean =
728+
warnOnTransactionIssues(code, reply, flags, TAG) { super.onTransact(code, data, reply, flags) }
729+
}

0 commit comments

Comments
 (0)