Подписка на Google Play: Определите, автоматически ли продлевается подписка в Android

#java #android #in-app-subscription

Вопрос:

Есть ли способ определить автоматическое продление подписки? У меня есть приложение для Android с возобновляемыми ежегодными подписками. Я хотел бы знать, был ли план пользователя автоматически продлен или нет.

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

 Purchase.PurchasesResult result = billingClient.queryPurchases(BillingClient.SkuType.SUBS);
Log.e("BillingActivity: ", "" result.getPurchasesList());
 

и,

 billingClient.queryPurchaseHistoryAsync(BillingClient.SkuType.SUBS, new PurchaseHistoryResponseListener() {
                    @Override
                    public void onPurchaseHistoryResponse(@NonNull BillingResult billingResult, @Nullable List<PurchaseHistoryRecord> list) {
                        if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
                            if (!list.isEmpty()) {
                                Log.e("BillingActivity: ", ""   list);
                            } else {
                                Toast.makeText(MainActivity_Sub.this, "History is null", Toast.LENGTH_LONG).show();
                            }
                        }
                    }
                });
 

Какая-нибудь помощь в этом деле?
Мне просто нужно знать, продлевается ли план автоматически.

Данные в журналах:

E/ASA:: [Запись истории покупок. Json: {«productId»:»my_dummy_plan»,»purchaseToken»:»blgdbeodmiajcbemdmdepjfe.AO-J1OyPfc8gwQrW_k-8TS7DsNge9zVjNqd21MajO0—0duhduhduhduh-igWOd0EypH6ppMtF4ZQHV0y0CYVeduhduhduh»,»purchaseTime»:1635328168793,»developerPayload»:null}]

Ответ №1:

Примечание: Продление подписки не требуется подтверждать.

Если подписка успешно возобновляется, BillingClient продолжает возвращать подписку.queryPurchasesAsync()

Уведомление о возобновлении подписки также отправляется при возобновлении подписки. Ваше приложение должно убедиться, что пользователь по-прежнему имеет право на подписку, а затем обновить состояние подписки с новым сроком действия, указанным в ресурсе подписки, возвращенном из API разработчика Google Play. Ресурс подписки выглядит следующим образом:

 {
  "kind": "androidpublisher#subscriptionPurchase",
  ...
  "expiryTimeMillis": updated_expiration_time,
  "autoRenewing": true,
  ...
  "paymentState": 1  # Payment received
}
 

Примечание.Если подписка должна быть продлена 29, 30 или 31 числа месяца, в следующем феврале не високосного года, день продления подписки переносится на 28 число и продолжает продлеваться 28 числа каждого месяца в течение срока действия подписки. Аналогично, если пользователь начинает подписку 31 марта, подписка продлевается 30 апреля и продолжает продлеваться 30 числа каждого месяца.

Комментарии:

1. queryPurchasesAsync не является методом библиотеки выставления счетов V3, мне нужно решение для V3 🙁

2. Привет, Снорлакс, я пытался сделать то же самое.. Все еще получаю старый ответ по подписке.