首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果我想消费或确认购买,Google播放计费库开发人员错误代码5

如果我想消费或确认购买,Google播放计费库开发人员错误代码5
EN

Stack Overflow用户
提问于 2019-06-24 23:06:40
回答 2查看 6.8K关注 0票数 4

我添加了最新的Google计费库:

代码语言:javascript
复制
implementation 'com.android.billingclient:billing:2.0.1'

如果我购买一张“慢速测试卡,总是在几分钟后批准”(这是一张来自Google的测试卡,用于测试应用程序中的购买):

代码语言:javascript
复制
val params = BillingFlowParams
   .newBuilder()
   .setSkuDetails(skuId)
   .build()

 billingClient.launchBillingFlow(activity, params)

一切都很顺利,直到我试着承认或消费该产品:

代码语言:javascript
复制
val consumeParams = ConsumeParams
   .newBuilder()
   .setPurchaseToken(purchase.purchaseToken)
   .build()

billingClient.consumeAsync(consumeParams, this)

我在回调中得到以下错误:

代码语言:javascript
复制
/**
     * 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天的消费或确认购买,否则它将被退还。

,但是如果他们不允许我在购买之后立即完成,我该如何消费或承认购买呢?

  1. 我没有服务器,消费/确认应该在手机上进行
  2. 我不能保持用户在应用程序中加载进度对话框/视图,而购买将被验证(获取SUCCESS状态)。使用测试帐户,在5-6分钟内,我将通过onPurchasesUpdated(billingResult: BillingResult?, purchases: MutableList<Purchase>?)获得新的“onPurchasesUpdated(billingResult: BillingResult?, purchases: MutableList<Purchase>?)”状态)

我使用MVVM体系结构(Activity - ViewModel),在Activity中保留计费客户端库(因为库需要Context),在ViewModel中保留业务逻辑。

看起来Google不希望我们将计费客户端库“绑定”到一个活动/视图模型中,而是在一个Service中使用它,然后在Application类中实例化它。可能与ObserversBroadcastReceivers通信,并监听购买更新。一旦Purchase被验证或拒绝,我应该更新用户的配置文件。这已经会造成问题,因为我不能启动Service而没有不可忽略的粘性通知,因为这是前台服务,我应该通知用户应用程序正在后台运行。这会把用户吓死的。

这一新的采购流程打破了多种因素。这不应该是异步的。在现实生活中,当我买东西时,我把钱给出纳员,然后我收到我的产品/服务不超过5分钟!我该怎么处理这事?用户购买,然后我通知用户,他/她将在5分钟内从谷歌确认后得到产品?这应该是瞬间的。

您如何处理应用程序内的采购?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-24 08:01:34

答案很简单。告知用户已发生购买请求,但付款或请求尚未确认或处理。

这种情况应该而且必须是异步的,因为它可能发生在某些场景中,也正是在实际生活中发生的情况,例如当用户使用一种非即时的支付方法时。有些支付方法可能需要几天的时间来处理--不是每个人都使用信用卡或礼品卡进行在线支付,也不是每个人都可以!例如,在巴西,有一个Boleto支付系统,它易于支付,但需要很长时间来处理。人们为他们的物品付费,打印收据,在特定的地方排队购买物品。这是这样做的,因为获得国际网卡是非常困难的,特别是在非常贫穷的人。

所以,你需要做的是得到你的新购买。检查它的状态。如果它是成功的,那么您的付款是完整的,并告诉用户。如果它是挂起的,然后告诉用户付款请求已经完成,等待来自谷歌的付款确认。

如果您在待定状态下购买,当付款清除时,您将通过您的应用程序流获得一个新的购买请求,但这一次它会说购买是成功的。

如果这不适合您当前的架构,那么您必须更改您的架构。

票数 4
EN

Stack Overflow用户

发布于 2020-01-28 09:26:34

我可能会迟到,但我希望这能帮上忙。我的情况是响应代码5无效令牌。在成功确认后尝试使用订阅产品时,我遇到了此错误。我犯了一个错误,区别了哪些是需要消费的,哪些是不需要的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56744971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档