Как отличить продукты, которые можно употреблять, от продуктов, которые не потребляются?

Я использовал com.android.billingclient: billing: 2.0.3.

Как провести различие между потребляемыми продуктами и продуктами, которые не потребляются?

Расходные материалы одобрены для покупки с consumeAsync(), а нерасходуемые продукты одобрены для покупки с acknowledgePurchase().

Похоже, расходные и непотребляемые товары классифицируются в зависимости от того, вызывается ли consumerAsync () или нет.

1. Есть ли другие методы классификации?

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

2. acceptPurchase () направлен на apis для нерасходуемых продуктов. Разве его нельзя использовать для расходных материалов?

Я могу добавить плательщика разработчика следующим образом:

Для расходных материалов consumeAsync () принимает объект ConsumeParams, который включает поле полезной нагрузки разработчика, как показано в следующем примере:

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

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

client.consumeAsync(consumeParams, listener);

Для продуктов, которые не потребляются, confirmPurchase () принимает объект 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. Можно ли ограничить вызов для функций с ошибками?


person 김다영    schedule 23.09.2019    source источник


Ответы (2)


В Google Play нет информации о SKU расходных материалов по сравнению с нерасходуемыми SKU. Эти знания есть только у разработчиков.

Если вы хотите, чтобы пользователи неоднократно покупали один SKU (например, монеты, драгоценные камни), вы можете вызвать takeAsync (), чтобы удалить его из библиотеки пользователя. Google Play не позволит пользователям повторно покупать артикул, если он уже есть в его библиотеке. Следовательно, вы должны потребить его (удалить из его библиотеки).

Для некоторых других SKU, таких как подписка или бесплатная реклама, разблокировка премиум-контента, ограниченный товар, если вы хотите, чтобы пользователи покупали только один раз, не потребляйте его. Вместо этого используйте API-интерфейс подтверждения покупки. Google Play представил это как контракт, чтобы убедиться, что вы предоставили продукты пользователям.

Поэтому я бы посоветовал держать на своей стороне каталог расходных, не расходных материалов. И в зависимости от типа вызовите правильный API Google.

person DrPower    schedule 07.11.2019

Насколько я понимаю до сих пор,

Вызов нерасходуемого продукта confirmPurchase () должен установить подтверждение покупки на стороне Google, поэтому, когда вы пытаетесь запустить queryPurchase (), он покажет, что продукт приобретен с подтверждением (проанализируйте данные json для просмотра данных)

Consumable product call consumerAsync () предназначен для удаления данных на стороне Google. Поэтому при запуске queryPurchase () не должно быть записи для этого.

Почему расходный продукт можно покупать снова? Потому что запись ады снята с записи. При повторной покупке триггера код ошибки 7 не возвращается (BILLING_RESPONSE_RESULT_ITEM_ALREADY_OWNED)

оба метода consumerAsync () и confirmPurchase () также установят платеж как сделанный. Если ни один из них не сработал, он автоматически вернется через 3 дня. Оба действия также работают как подтверждение платежа.

Итак, на ваш вопрос

1. Есть ли другие методы классификации?

Признанный продукт должен быть нерасходуемым продуктом, так как запись о потребляемом продукте должна быть удалена после успешной записи на нашу сторону. Или, если хотите классифицировать, возможно, можно установить полезную нагрузку разработчика для подтверждения (не может быть изменено после установки)

2. acceptPurchase () направлен на apis для нерасходуемых продуктов. Разве его нельзя использовать для расходных материалов?

нет, используйте его отдельно в зависимости от ваших требований

Ответ может быть неверным. Просто немного об этом.

добро пожаловать, чтобы ответить на мой вопрос, также связанный с этим, подтверждение выполняется на стороне сервера

На стороне сервера можно сделать нечто подобное на мобильную сторону comsumeAsync () в Google Billing Library?

person Han    schedule 27.09.2019