尝试使用getBuyIntentExtraParams升级订阅而不返回BUY_INTENT键的IAP Android问题

时间:2017-05-11 18:57:30

标签: android in-app-purchase in-app-billing

在Android上,我试图弄清楚如何在app购买中升级我的订阅。假设我有3个订阅类型1,2和3层。我使用此方法getBuyIntent购买我的第一个订阅层1,然后此方法返回带有RESPONSE_CODE键和BUY_INTENT键的包。

然后使用该捆绑包我做了一个bundle.getParcelable(" BUY_INTENT");它返回一个PendingIntent,一切都很好。

但是当我想从第1层升级到第2层时,我需要根据此https://developer.android.com/google/play/billing/billing_reference.html#getBuyIntent

使用此方法getBuyIntentExtraParams

当我使用getBuyIntentExtraParams时,返回的包不包含BUY_INTENT键,但它返回INAPP_PURCHASE_ITEM_LIST,INAPP_PURCHASE_DATA_LIST和INAPP_DATA_SIGNATURE_LIST键。

INAPP_PURCHASE_ITEM_LIST = [" product.id.name.tier1"]

所以看起来getBuyIntentExtraParams似乎正在返回你已经购买的东西。这与getPurchases()方法非常相似。

我无法在此捆绑包上执行bundle.getParcelable(" BUY_INTENT"),因为它没有此密钥。我注意到在google doc中它说getBuyIntentExtraParams是getBuyIntent的变种,所以我假设getBuyIntentExtraParams应该返回一个BUY_INTENT键。

所以我想知道如何才能正确使用这种方法?我注意到谷歌有关于文档的问题:https://issuetracker.google.com/issues/37140925

这是我的代码:

ArrayList skus = new ArrayList();

skus.add(" product.id.name.tier1&#34);

Bundle extraBundle = new Bundle();

extraBundle.putStringArrayList(" skusToReplace",skus);

getBuyIntentExtraParams(7,&#34; app.package.name&#34;,&#34; subs&#34;,&#34; product.id.name.tier2&#34;,DEVELOPER_PAYLOAD,extraBundle); < / p>

注意第三个参数&#34; subs&#34;应该是第四个参数&#34; product.id.name.tier2&#34;根据文件,反之亦然。但是,当我这样做时,它抱怨并说它不知道什么项目类型是product.id.name.tier2。所以我觉得文档不对。

PS:我也尝试过6而不是7(api版本)没有运气

我想我的主要问题是如何以不同于getBuyIntent的方式使用GetBuyIntentExtraParams?

我正在使用sdk min和目标19 btw。

我还注意到我在InAppBillingService.aidl文件中看不到这一点 isBillingSupportedExtraParams。

更新:

我将此添加到我的InAppBillingService.aidl文件中:

捆绑getBuyIntentToReplaceSkus(int apiVersion,String packageName, 在List oldSkus,String newSku,String type,String developerPayload);

然后我调用了它而不是getBuyIntentExtraParams并且它工作了!

我只是想知道这是正确的方法吗?

2 个答案:

答案 0 :(得分:1)

要回答关于如何使用getBuyIntentExtraParams的原始问题,我发现你需要从google复制实际的aidl文件并替换你的aidl文件..不要复制google的aidl中的代码并替换你的代码。

谷歌最新的aidl文件:https://github.com/googlesamples/android-play-billing/blob/0154723d8c97011fb5ce0163d55b496cb5ebccb7/TrivialDrive/app/src/main/aidl/com/android/vending/billing/IInAppBillingService.aidl

答案 1 :(得分:0)

我可以确认getBuyIntentToReplaceSkus是用于升级和降级订阅的正确方法。