如何区分可消费产品和未消费产品?

时间:2019-09-23 07:18:53

标签: in-app-billing billing android-billing play-billing-library

我使用了“ com.android.billingclient:帐单:2.0.3”。

如何区分消耗品和不消费品?

消费品获准与consumeAsync()一起购买,非消费品获准与acknowledgePurchase()一起购买。

似乎可消费产品和非可消费产品是通过是否调用preventAsync()来分类的。

1。还有其他分类方法吗?

https://developer.android.com/google/play/billing/billing_library_overview#acknowledge/

2。 acceptPurchase()指向非消耗性产品的api。它不应该用于消费品吗?

我可以通过以下方式添加开发人员薪水:

对于易耗品,consumeAsync()包含一个ConsumeParams对象,该对象包含开发人员有效负载字段,如以下示例所示:

BillingClient client = ...
ConsumeResponseListener listener = ...

ConsumeParams consumeParams =
    ConsumeParams.newBuilder()
        .setPurchaseToken(/* token */)
        .setDeveloperPayload(/* payload */)
        .build();

client.consumeAsync(consumeParams, listener);

对于未消费的产品,acceptPurchase()接受一个AcknowledgePurchaseParams对象,该对象包含开发人员有效负载字段,如以下示例所示:

BillingClient client = ...
AcknowledgePurchaseResponseListener listener = ...

AcknowledgePurchaseParams acknowledgePurchaseParams =
    AcknowledgePurchaseParams.newBuilder()
        .setPurchaseToken(/* token */)
        .setDeveloperPayload(/* payload */)
        .build();

client.acknowledgePurchase(acknowledgePurchaseParams, listener);

https://developer.android.com/google/play/billing/billing_library_overview#attach_a_developer_payload

3。您是否打算将来为消耗品和非消耗品添加管理类型?

4。可以限制键入错误的函数的调用吗?

2 个答案:

答案 0 :(得分:0)

就目前为止我所了解的,

非消耗产品调用cknowledgePurchase()会将购买记录设置为在Google端已确认,因此当您尝试触发queryPurchase()时,它将显示已购买已确认的产品(解析json数据以查看数据)

消费产品调用ConsumerAsync()用于删除Google端的数据。因此,当触发queryPurchase()时,将没有任何记录。

为什么消费品可以再次购买? 因为记录ady已从记录中删除。再次购买触发器时,不会返回错误代码7(BILLING_RESPONSE_RESULT_ITEM_ALREADY_OWNED)

消耗Async()和conceptPurchase()都将付款设置为完成。如果未触发任何人,则3天后它将自动退款。这两个动作也都可以作为确认付款的方式。

所以你的问题

1。还有其他分类方法吗?

那些公认的产品应该是非消耗性产品,因为在成功记录到我们这边之后,应删除消耗性产品记录。或者,如果要分类,可以为确认设置开发人员有效负载(设置后不能更改)

2。 acceptPurchase()指向非消耗性产品的api。它不应该用于消费品吗?

否,请根据您的要求单独使用

答案可能不正确。只是一些分享。

欢迎回答我的问题,与此相关,确认在服务器端执行

Server side can do something similar to mobile side comsumeAsync() in Google Billing Library?

答案 1 :(得分:0)

相对于非消耗性SKU,Google Play不了解其消耗性SKU。只有开发人员才有此知识。

如果您希望用户重复购买一个SKU(例如硬币,宝石),则可以调用consumpAsync()将其从用户库中删除。如果SKU已存在于他的书架中,则Google Play将不允许用户重新购买该SKU。因此,您必须使用它(将其从他的库中删除)。

对于其他一些SKU,例如订阅或免费广告,高级内容解锁,有限项,如果您希望用户只购买一次,则不要消费。而是使用acceptPurchase API。 Google Play将此合同作为一项合同,以确保您已将产品授予用户。

因此,我想说的是在您身边保留消耗品,非消耗品SKU的目录。然后根据类型,调用正确的Google API。