如何在Android InAppBilling中升级/降级订阅?

我花了一个星期的时间寻找在Android InAppBilling上升级/降级订阅的解决scheme。

有关于此function的参考页面: http : //developer.android.com/google/play/billing/billing_reference.html

谷歌说,我们可以使用getBuyIntentToReplaceSkus()方法,但是在签名中找不到任何关于这个的文档。 我无法在Google提供的IInAppBillingService.aidl文件中看到它。

有没有人可以帮助我?

  • Android应用内结算:什么是“开发者有效负载”以及“购买”按钮的工作原理?
  • 如何检查用户是否有订阅(Android应用内结算)?
  • 如何轻松测试应用内购买,而无需先发布或签名?
  • 在应用程序结算v3 NullPointerException
  • 用户没有资格购买此应用程序
  • “你已经拥有这个项目”,但getPurchases是空的
  • 您要求的商品无法购买 - Android应用内结算
  • Android InApp购买空指针exception
  • 只需使用我的aidl文件,并开心:)

    它完美的作品!

    https://gist.github.com/cre8ivejp/21b10fbbc7e500f99059

    *不要改变aidl文件中的方法的顺序,否则将不起作用。

    首先感谢aidl文件。

    但对我来说,这是行不通的。 我总是得到一个错误代码5:

    提供给API的参数无效。 此错误还可能表示应用程序没有正确签名或在Google Play中为应用内结算设置正确,或者在其清单中没有必要的权限

    我不认为权限是错误的或者没有正确签名,因为所有其他支付请求都起作用。

    这是我的代码:

     List<String> subs = new ArrayList<>(); subs.add(current_sub); buyIntentBundle = mService.getBuyIntentToReplaceSkus(3, "package", subs, key, "subs", getResources().getString(R.string.developer_payload)); 

    您如何执行升级请求,或者您在我的请求中看到任何错误?

    谢谢Solidus

    你只需要从官方的gitHub更新'aidl'文件,并清理构build项目:

    https://github.com/googlesamples/android-play-billing/blob/master/TrivialDrive/app/src/main/aidl/com/android/vending/billing/IInAppBillingService.aidl

    之后你会永远快乐。

    这似乎是从谷歌的错误/错误。 他们没有正确更新aidl文件。 你可以添加这个方法来帮助你自己存档(并且通过尝试和错误来找出正确的签名),但是如果你可以的话,你应该等一会儿才能一起行动。