我添加了最新的Google计费库:
implementation 'com.android.billingclient:billing:2.0.1'如果我购买一张“慢速测试卡,总是在几分钟后批准”(这是一张来自Google的测试卡,用于测试应用程序中的购买):
val params = BillingFlowParams
.newBuilder()
.setSkuDetails(skuId)
.build()
billingClient.launchBillingFlow(activity, params)一切都很顺利,直到我试着承认或消费该产品:
val consumeParams = ConsumeParams
.newBuilder()
.setPurchaseToken(purchase.purchaseToken)
.build()
billingClient.consumeAsync(consumeParams, this)我在回调中得到以下错误:
/**
* Invalid arguments provided to the API. This error can also indicate that the application was
* not correctly signed or properly set up for In-app Billing in Google Play, or does not have
* the necessary permissions in its manifest
*/
int DEVELOPER_ERROR = 5;我还收到一条调试消息,上面说购买有一个无效的状态(挂起)。也许我不能消费/承认没有“成功”状态的采购。
根据谷歌,我有3天的消费或确认购买,否则它将被退还。
,但是如果他们不允许我在购买之后立即完成,我该如何消费或承认购买呢?
SUCCESS状态)。使用测试帐户,在5-6分钟内,我将通过onPurchasesUpdated(billingResult: BillingResult?, purchases: MutableList<Purchase>?)获得新的“onPurchasesUpdated(billingResult: BillingResult?, purchases: MutableList<Purchase>?)”状态)我使用MVVM体系结构(Activity - ViewModel),在Activity中保留计费客户端库(因为库需要Context),在ViewModel中保留业务逻辑。
看起来Google不希望我们将计费客户端库“绑定”到一个活动/视图模型中,而是在一个Service中使用它,然后在Application类中实例化它。可能与Observers或BroadcastReceivers通信,并监听购买更新。一旦Purchase被验证或拒绝,我应该更新用户的配置文件。这已经会造成问题,因为我不能启动Service而没有不可忽略的粘性通知,因为这是前台服务,我应该通知用户应用程序正在后台运行。这会把用户吓死的。
这一新的采购流程打破了多种因素。这不应该是异步的。在现实生活中,当我买东西时,我把钱给出纳员,然后我收到我的产品/服务不超过5分钟!我该怎么处理这事?用户购买,然后我通知用户,他/她将在5分钟内从谷歌确认后得到产品?这应该是瞬间的。
您如何处理应用程序内的采购?
发布于 2019-07-24 08:01:34
答案很简单。告知用户已发生购买请求,但付款或请求尚未确认或处理。
这种情况应该而且必须是异步的,因为它可能发生在某些场景中,也正是在实际生活中发生的情况,例如当用户使用一种非即时的支付方法时。有些支付方法可能需要几天的时间来处理--不是每个人都使用信用卡或礼品卡进行在线支付,也不是每个人都可以!例如,在巴西,有一个Boleto支付系统,它易于支付,但需要很长时间来处理。人们为他们的物品付费,打印收据,在特定的地方排队购买物品。这是这样做的,因为获得国际网卡是非常困难的,特别是在非常贫穷的人。
所以,你需要做的是得到你的新购买。检查它的状态。如果它是成功的,那么您的付款是完整的,并告诉用户。如果它是挂起的,然后告诉用户付款请求已经完成,等待来自谷歌的付款确认。
如果您在待定状态下购买,当付款清除时,您将通过您的应用程序流获得一个新的购买请求,但这一次它会说购买是成功的。
如果这不适合您当前的架构,那么您必须更改您的架构。
发布于 2020-01-28 09:26:34
我可能会迟到,但我希望这能帮上忙。我的情况是响应代码5无效令牌。在成功确认后尝试使用订阅产品时,我遇到了此错误。我犯了一个错误,区别了哪些是需要消费的,哪些是不需要的。
https://stackoverflow.com/questions/56744971
复制相似问题