我正在使用BillingClient api在应用购买中实现Android。
我成功设置了计费客户端,如下所示:
billingClient = BillingClient.newBuilder(this)
.enablePendingPurchases()
.setListener(this).build()
我实现了要进行应用内购买的代码,在我的情况下是订阅。
我的问题如下,我需要(定期)检查用户是否仍具有有效的订阅,或者他们是否已取消订阅。从我的阅读中,我可以调用方法queryPurchases(PRODUCT_ID)。我这样做如下:
override fun onBillingSetupFinished(billingResult: BillingResult?) {
if (billingResult != null) {
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK){
// The BillingClient is ready. You can query purchases here.
Log.d(TAG_PURCHASES_ACTIVITY, "BillingClient ready and connected")
billingClient.queryPurchases(MONTHLY_AGENT_SUBSCRIPTION_PRODUCT_ID)
}
else{
Log.d(TAG_PURCHASES_ACTIVITY, "BillingClient ERROR: ${billingResult.responseCode}")
}
}
}
但是,我在控制台中收到此消息:
W/BillingClient: getPurchase() failed. Response code: 3
现在,经过研究,许多人都说这是来自旧手机以及旧版本的Google Play服务。但是我正在使用新的手机(Pixel 3a),它是最新的。这部手机还具有在Google Play控制台中注册的Google帐户以进行测试。
为什么我收到此消息?
此外,这真的是检查订阅是否仍处于活动状态的正确方法吗?
我很久以来一直在寻找这种解决方案,谢谢您的帮助!
答案 0 :(得分:2)
我犯了一个错误,将产品ID作为参数传递给查询请求。 这是我需要做的:
var list = billingClient.queryPurchases(SkuType.SUBS)