How to upgrade/downgrade subscriptions in Android InAppBilling?
Asked Answered
S

5

13

I spent a week looking for solution to upgrade/downgrade subscriptions on Android InAppBilling.

There's a reference page about this function: http://developer.android.com/google/play/billing/billing_reference.html

Google said that we could use getBuyIntentToReplaceSkus() method, but I couldn't found any documentation about that in its signature. I can't also see it in IInAppBillingService.aidl file that Google provided.

Is there any one who may help me?

Spooner answered 28/4, 2015 at 9:8 Comment(0)
O
4

Just use my aidl file and be happy :)

It works perfectly!

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

*Do not change the order of the methods inside aidl file or it will not work.

Or answered 7/8, 2015 at 14:54 Comment(5)
@Solidus0815 as described in the documentation, the error happens because the getBuyIntentToReplaceSkus was implemented on api version 5 and not 3. You just need to change the first parameter from 3 to 5 here mService.getBuyIntentToReplaceSkus(5, "package", subs, key, "subs", getResources().getString(R.string.developer_payload));Or
@Solidus0815 I'm glad you made it :)Or
I used same code as getBuyIntent from IabHelper like this: Bundle buyIntentBundle = mService.getBuyIntentToReplaceSkus(5, mContext.getPackageName(), oldSkus, newSku, itemType, extraData); However PendingIntent pendingIntent = buyIntentBundle.getParcelable(RESPONSE_BUY_INTENT); pendingIntent is null.Convulsive
@Convulsive are you using the aidl file that i post on gist?? If so, did you change something inside?Or
actually no. I mean yes... I was commenting for a coleague here, and he just told me "yes I did change it, and that's why it didn't work. Once I copy/pasted his, everything worked alright". So, it's all working fine now (y) :)Convulsive
D
1

at first thanks for aidl file.

But for me it is not working. I always get an error code 5:

Invalid arguments provided to the API. This error can also indicate that the application was not correctly signed or properly set up for In-app Billing in Google Play, or does not have the necessary permissions in its manifest

I don't think that the permissions are wrong or it is not correctly signed as all other payment requests work.

This is my code:

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

How do you execute an upgrade request or do you see any error in my request?

Thanks Solidus

Derm answered 20/8, 2015 at 13:12 Comment(2)
@Or thanks man, that was pretty stupid of me :D:D:D finally everything is working as expectedDerm
In case someone is looking for what @Or said, follow this #29915535Atherosclerosis
C
1

You just have to update the 'aidl' file from the official gitHub, and clean-build the project:

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

You'll be happy forever after.

Clodhopper answered 2/8, 2016 at 8:29 Comment(0)
G
0

This seems to be a mistake/bug from google. They have not updated aidl file correctly. You can probably add this method to aidl file yourself (and figure out correct signature by try&error) but if you can you should wait a little while they get their act together.

Gwenni answered 28/4, 2015 at 10:36 Comment(0)
C
0

I had the similar issue and found out that

  1. it is only supported in version 5
  2. the position of new sku (the array list) and old sku should be changed. Even though the methods shows first old and then new.. make the other way.
Collimator answered 24/1, 2019 at 10:6 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.