Android IAP getBuyIntentToReplaceSkus不会取消旧的订阅



我正在尝试在我的Android应用程序中实现升级/降级订阅。我相信我已经正确地实现了一切,但是在我的测试期间它似乎没有正确运行。

我的应用程序有三个选项:每月,3个月和6个月的订阅选项。当我订阅任何选项时,我调用以下函数,其中'sku'是所购买商品的sku, 'oldSkus'是其他商品的sku。

buyIntentBundle = mService.getBuyIntentToReplaceSkus(5,
          mContext.getPackageName(), oldSkus, sku, itemType, extraData);

当我订阅3个月的选项时,它工作得很好,应用程序正确地从Play商店接收3个月的订阅购买。如果我尝试升级到6个月的订阅,将出现以下流程:

  1. "更改订阅"对话框提示提供我的"当前计划"one_answers"新计划"->点击"继续"
  2. 计划细节概述。点击->"订阅"->"确认"
  3. 交易成功,购买数据返回到应用程序。
  4. 收到电子邮件,声称订阅已更新并包含详细信息:
    • 原计划:3 -月:取消
    • 新计划:6个月:立即生效
  5. 进入Play Store帐户并查看订阅
    • 3个月计划-订阅附有取消按钮
    • 6个月计划-订阅附有取消按钮
  6. 启动应用程序并观察getInventory结果
    • 3个月计划-用户订阅
    • 6个月计划-用户订阅

据我所知,旧的订阅没有被Play Store正确取消。我希望这种情况只会发生,因为我使用的是测试帐户,而在测试订阅时发生的$/天会导致比例评级出现一些问题。

更新:谷歌已经回应了我的投诉,并通知我他们已经升级了这个问题。当我得到另一个响应时,我将再次更新

我已经用真钱测试过了。旧的订阅被取消了(我认为是以Google Play理解的方式取消了)。升级后,旧的订阅在Google Play应用程序的应用程序详细信息中不再可见-只有新的订阅可见。

虽然我不确定如何识别它与Google Play开发者API调用-如何识别这个旧订阅不再有效。购买的get方法。订阅资源确实返回autoRenew为false(这很好),但这还不足以识别该订阅的功能应该不再对用户可用,因为当用户取消订阅时也会发生同样的情况,当用户取消订阅时,功能应该仍然可用,直到到期。

不幸的是,get调用返回的过期值仍然是相同的-所以我不能使用它。

更新:Android客户端的getPurchases方法在升级后不返回旧订阅。我想知道是否有一种方法通过Google Play Developer API调用来识别它。

最新更新