Проверка активности подписок в приложении в моем бессерверном приложении для Android - PullRequest
0 голосов
/ 13 июня 2018

У меня есть серверное приложение для Android с простым функционалом: если у пользователя есть подписка внутри приложения (с автоматическим продлением), то он может использовать функционал в приложении, в противном случае его нет.Я знаю, как сделать функционал с получением информации о подписке (цена, название и т. Д.) И оплаты звонка.Но я не могу проверить, есть ли у текущего пользователя активные (не отмененные) подписки.Я прочитал так много информации на многих сайтах и ​​руководствах, и там было написано, что я должен использовать Google API на моем сервере.Но у меня нет собственного сервера.Я использовал две разные библиотеки для подписок в приложении:

'com.anjlab.android.iab.v3:library:1.0.44'

и

'com.android.billingclient:billing:1.1'

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

Ответы [ 2 ]

0 голосов
/ 27 января 2019

Используя библиотеку anjlab in-app-billing Я также столкнулся с подобным.Это то, что я сделал, чтобы обойти это.

Вызвать метод billingProcessor.loadOwnedPurchasesFromGoogle(); Затем проверить значение транзакции. Если объект TransactionDetails возвращает ноль, это означает, что пользователь не подписался или не отменил свою подписку.в противном случае они все еще подписаны.

void checkIfUserIsSusbcribed(){
  Boolean purchaseResult = billingProcessor.loadOwnedPurchasesFromGoogle();
  if(purchaseResult){
     TransactionDetails subscriptionTransactionDetails billingProcessor.getSubscriptionTransactionDetails(YOUR_SUBSCRIPTION_ID);

     if(subscriptionTransactionDetails!=null)
        //User is still subscribed
     else  
        //Not subscribed
     }
}

Также следует отметить, что объект TransactionDetails вернет значение NULL только после истечения периода подписки.

0 голосов
/ 13 июня 2018

Вы пытались позвонить bp.loadOwnedPurchasesFromGoogle();?

Редактировать

Так попробуйте это:

Purchase purchase = inventory.getPurchase(product);
Log.d(TAG, "Purchase state: " + purchase.getPurchaseState());
// 0 (purchased), 1 (canceled), or 2 (refunded).
if (purchase.getPurchaseState() == 0
     || purchase.getPurchaseState() == 2) {
   showPremiumVersion();
} else {
   showFreeVersion();
}

Или это решение:

bp.isPurchased("yourSKU")
...