#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. Привет, Снорлакс, я пытался сделать то же самое.. Все еще получаю старый ответ по подписке.