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

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

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

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

有没有人可以帮助我?

Solutions Collecting From Web of "如何在Android InAppBilling中升级/降级订阅?"

只需使用我的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文件。 你可以添加这个方法来帮助你自己存档(并且通过尝试和错误来找出正确的签名),但是如果你可以的话,你应该等一会儿才能一起行动。