退款后如何撤销Android应用程序内非消费品购买权利?

退款后如何撤销Android应用程序内非消费品购买权利?,android,google-play,google-play-services,in-app-billing,google-play-developer-api,Android,Google Play,Google Play Services,In App Billing,Google Play Developer Api,我目前正在测试我的Android应用程序(应用程序内支付许可测试),需要多次购买和退款来测试它。最后一次,在发放退款时,我无意中忘记选中Play Developer控制台中的“撤销授权”框(由于某些原因,默认情况下未选中该框)。现在,我的应用程序版本总是有权利的,我不能再测试购买它了 我知道没有办法通过网站撤销该权利。似乎有一种方法可以通过API调用来实现这一点,但我没有应用程序的后端设置,也无法找到如何通过浏览器/curl成功调用函数(始终存在身份验证错误)。我的应用程序似乎无法区分已购买的权

我目前正在测试我的Android应用程序(应用程序内支付许可测试),需要多次购买和退款来测试它。最后一次,在发放退款时,我无意中忘记选中Play Developer控制台中的“撤销授权”框(由于某些原因,默认情况下未选中该框)。现在,我的应用程序版本总是有权利的,我不能再测试购买它了

我知道没有办法通过网站撤销该权利。似乎有一种方法可以通过API调用来实现这一点,但我没有应用程序的后端设置,也无法找到如何通过浏览器/curl成功调用函数(始终存在身份验证错误)。我的应用程序似乎无法区分已购买的权利和已退款但未撤销的权利(我的
Purchase
对象的
getPurchaseState()
调用始终返回
Purchase.PurchaseState.purchased
),因此我不知道是否可以通过应用程序的代码库撤销它


我有没有办法撤销这项权利?授权自己进行API调用的过程对我来说是完全不透明的,但如果我能理解的话,这似乎是一个可行的途径。

事实证明,我必须通过应用程序消费购买的产品。为此,我在设置窗格中添加了一个仅限开发人员的
首选项
(通过编程方式根据
BuildConfig.Debug
的值添加一个新的首选项),专门用于撤销给定的产品。单击后,应用程序将:

  • 获取所有
    Purchase
    s的列表(通过
    BillingClient
    对象的
    querypurchaes
    方法)
  • 查找带有我要消费的产品(如果存在)的SKU的
    购买
  • 调用my
    BillingClient
    对象的
    ConsumeAncy
    方法,该方法接受购买令牌(由步骤2中的
    purchase
    对象持有)
  • 一旦完成并得到验证,产品将立即被消费,被授予的权利将被撤销(大大快于通过Google Play开发者控制台退款)


    小心不要让这个选项潜入你的
    发布版
    版本中,因为我认为它会在不退款的情况下撤销权利(对于不使用真金白银的许可证测试人员来说这不是问题,但会导致愤怒的客户)。

    对于任何感兴趣的人,这里是API调用的文档:或者可能是:非常感谢。另一个好处是,通过开发者控制台每天最多可以退款10次(包括出于某种原因的测试购买)。如果超过此限制,您的退款能力将被阻止24小时。