检查Android用户的Google Play国家/地区是否支持应用内购买

beq87vna  于 2022-12-25  发布在  Android
关注(0)|答案(1)|浏览(878)

我要求在Android应用中购买某些功能。对于不支持应用内购买的国家/地区的用户,我希望免费提供此功能。

  • 如何检查用户所在的Google Play国家/地区是否支持应用内购买?*

我尝试的问题:
1.似乎无法确定播放商店所在国家/地区。
1.检查BillingClient.BillingResponseCode是否为BILLING_UNAVAILABLE没有帮助,因为如果“用户设备上的Play商店应用已过期”或“Google Play无法向用户的支付方式收费”,也可能返回此响应。

  1. BillingClient.startConnectiononBillingSetupFinished回调返回的BillingResult中的debugMessage似乎也没有帮助,因为它错误地显示“Google Play应用内计费API版本小于3”(对于不受支持的国家/地区)。(我尝试使用VPN访问中国。
    1.如果用户位于其播放国家/地区以外的国家/地区或使用VPN,则检查用户的IP地址将给予错误的结果。
    1.使用位置API需要位置权限,如果用户在国外,还会给予错误的结果。
ddrv8njm

ddrv8njm1#

在最新版本的计费库(5.1)中,. BILLING_UNAVAILABLE表示:
用户设备上的Play Store应用已过期。
用户位于不受支持的国家/地区。
用户是企业用户,其企业管理员已禁止用户进行购买。
Google Play无法向用户的付款方式收费。
实现“com.android.计费客户端:计费-ktx:5.1.0”
所以,我希望这对你有帮助。
初始化billingClient对象后,查询是否启动连接。

billingClient.startConnection(object : BillingClientStateListener {
    override fun onBillingServiceDisconnected() {}

    override fun onBillingSetupFinished(billingResult: BillingResult) {
        val isBillingReady = billingResult.responseCode == BillingClient.BillingResponseCode.OK
        if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
            // Available
        } else if (billingResult.responseCode == BillingClient.BillingResponseCode.BILLING_UNAVAILABLE){

            // Make free purchases

        } else {
            // some error needs to be handled
        }
    }
})

我最近开发了一个template的Google Play计费V5,你也可以看看.

相关问题