как получить срок действия подписки в inapp v3 android


Привет у меня есть я реализовал iNAPP биллинга V3 для одного года подписка на элемент с помощью андроид-встроенная-выставление счетов-В3. Я хочу показать оставшиеся дни в своем приложении. Я звоню getSubscriptionTransactionDetails, чтобы получить детали транзакции для продукта, но он всегда возвращает null. вот мой код.

  private BillingProcessor startInappCheck(){

         bp = new BillingProcessor(mContext, BASE64ENCODEDPUBLICKEY, new BillingProcessor.IBillingHandler() {
                @Override
                public void onProductPurchased(String productId, TransactionDetails details) {
                    LogUtils.e(TAG, "onProductPurchased :" +productId);
    //              showToast("onProductPurchased: " + productId);

                }
                @Override
                public void onBillingError(int errorCode, Throwable error) {

                    LogUtils.e(TAG, "onBillingError :" +errorCode);


                }
                @Override
                public void onBillingInitialized() {
  //                showToast("onBillingInitialized");
                    readyToPurchase = true;



                    try{
                        SkuDetails subs = bp.getSubscriptionListingDetails(SUBSCRIPTION_ID);


                        LogUtils.d(TAG, "Owned Subscription: " + subs.toString());
                       TransactionDetails tr = bp.getSubscriptionTransactionDetails(SUBSCRIPTION_ID);
                      LogUtils.d(TAG, "Owned Subscription: " + tr.toString());

                    }catch (Exception e) {
                        // TODO: handle exception
                    }


                }
                @Override
                public void onPurchaseHistoryRestored() {
   //                   showToast("onPurchaseHistoryRestored");
                    for(String sku : bp.listOwnedSubscriptions()){
                        LogUtils.d(TAG, "Owned Subscription: " + sku);
                    }
   //                showToast("onPurchaseHistoryRestored");

                }
            });
         return bp;
    }

Я вызвал этот метод из onCreate.

  @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
     if (!bp.handleActivityResult(requestCode, resultCode, data))
            super.onActivityResult(requestCode, resultCode, data);

}

Моя кнопка элемента подписки реализована в fragment. Еще одна проблема, которую я обнаружил, что после успешной подписки onProductPurchased не вызывается, но я реализовали логику в onResume для обновления пользовательского интерфейса, если bp.isSubscribed(SUBSCRIPTION_ID) возвращает true. Пожалуйста, скажите мне, как получить дату начала подписки и срок ее действия.

2 3

2 ответа:

Я хочу дать ответ на мой собственный вопрос, чтобы, если кто-то ищет то же самое, мог найти решение. После большого количества google я не нашел точного решения, которое искал, поэтому я создаю метод в BillingProcessor классе в iabv3 library проекте, который возвращает Bundle с деталями покупок, в которых я получаю дату покупки. Теперь я могу найти срок годности с этим. Метод выглядит следующим образом

public Bundle getPurchases(){
    if (!isInitialized())
        return null;
    try{
        return  billingService.getPurchases(Constants.GOOGLE_API_VERSION, contextPackageName, Constants.PRODUCT_TYPE_SUBSCRIPTION, null);
    }catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

Я использовал этот код для получения сведений о покупке в библиотеке процессоров биллинга.

   TransactionDetails transactionDetails = bp.getSubscriptionTransactionDetails(channelModel.getAndroidProductId());
        Log.d(TAG, "initializePaymentSetup: " + transactionDetails.toString());
        Log.d(TAG, "initializePaymentSetup: " + transactionDetails.purchaseInfo.toString());

 transactionDetails.purchaseInfo.purchaseData// this will return the purchase date