【问题标题】:How to handle pending purchases from Google Play如何处理来自 Google Play 的待处理购买
【发布时间】:2019-10-08 13:03:15
【问题描述】:

我们的大部分购买在 3 天 30 分钟后一直被取消,我认为这是待处理购买状态的结果。但是,关于如何准确处理待处理购买的文档很少。而且,由于某种原因,即使我自己是测试人员,我也无法测试它,因为购买方法上没有“慢卡”选项。另外,我们没有后端服务器,请备份我们。

这是我从官方文档中找到的解释:

void handlePurchase(Purchase purchase) {
    if (purchase.getPurchaseState() == PurchaseState.PURCHASED) {
        // Acknowledge purchase and grant the item to the user
    } else if (purchase.getPurchaseState() == PurchaseState.PENDING) {
        // Here you can confirm to the user that they've started the pending
        // purchase, and to complete it, they should follow instructions that
        // are given to them. You can also choose to remind the user in the
        // future to complete the purchase if you detect that it is still
        // pending.
    }
}

查看PENDING状态的解释。 “要完成购买,他们应该遵循给他们的指示”是什么意思?这些指令到底是什么?我们需要将用户重定向到 Google Play 还是什么?它没有具体说明该做什么,并且让我感到烦恼,因为购买被无缘无故地取消,或者出于这个原因。如何完成待处理的购买?什么都没有,或者我找不到它,所以我最终来到了这里。

我希望你能帮我解决这个问题。谢谢。

【问题讨论】:

    标签: android in-app-purchase


    【解决方案1】:

    我同意文档很差,特别是因为有一次您想确切地知道发生了什么是当您处理其他人的钱时!

    看起来“慢卡”交易实际上是“待购买”,Google 在 2019 年一直是 rolling out。这是可能的流程...

    • 在您的应用中,用户点击“立即购买”
    • 他们看到了 Google 结帐叠加层
    • 他们选择“在阿克拉的 Freddina's Grocery 付款”(一家已签约处理 Google 待处理购买的本地商店)
    • Google 结帐会显示一个代码以显示给 Freddina
    • 用户以现金支付 Freddina,Freddina 使用该代码处理付款
    • 10 分钟左右后,购买更新将登陆您的应用

    至于处理不可预知的定时更新事件,我们有一个带有handlePurchaseUpdated 方法的应用程序从应用程序启动的那一刻起进行监听,并根据它附带的Purchase 对象进行更改。这是一个示例流程:

    • 我们会在应用启动后立即收听购买更新
    • 用户购买缓慢
    • 我们收到了购买更新
    • 传递的Purchase 对象的购买状态为PENDING
    • 我们告诉用户我们会在购买完成后通知他们
    • 在未来的某个时间点(例如,应用重启后的第二天)购买更新会到来
    • 如果购买状态现在为 PURCHASED,我们将完成购买并告知用户

    注意:我们的是ReactNative app,不是原生java,但是流程应该是一样的。

    实施起来很复杂,因为您必须选择时间进行购买更改并在有意义的时间显示购买结果,而不一定是在启动后 5 秒(或任何其他奇怪的时间)到达购买更新时。如果在您的授权或确认步骤中出现错误,情况会变得更加复杂,呃。

    另外,您可能没有看到“慢卡”测试器选项,因为您没有allow it

    【讨论】:

    • 我不确定您所说的“允许”是什么意思,但我相信我们遇到的问题与待处理的购买完全无关。我认为我们需要先重定向用户,然后等待应用程序本身的响应,但如果他们使用诸如“在阿克拉 Freddina's Grocery 支付”之类的服务,那么用户应该知道购买将被延迟。如果“onPurchasesUpdated”或“queryPurchases”已经返回更新的值,那么应该没有问题。不过谢谢你的回答,我接受了。
    • 如你上面解释的,可能是用户使用实体店购买的情况,所以交易进入待处理状态。它会等待几天,如果用户不使用实体店的代码购买它,那么最终交易可能会被取消?我认为大多数用户这样做是为了玩它。
    • 这是一个很好的解释和路线图。但正如@RossCampaign 在她的回答中指出的那样,他的购买被取消的原因是不承认购买。
    【解决方案2】:

    听起来你不是acknowledging 购买。请参阅 Google Play 结算文档中的以下内容:

    如果您使用 Google Play 结算库 2.0 版或更高版本,则必须在三天内确认所有购买。未能正确确认购买会导致这些购买被退款。

    【讨论】:

      猜你喜欢
      • 2022-10-05
      • 1970-01-01
      • 2022-10-07
      • 1970-01-01
      • 1970-01-01
      • 2013-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多