how to get subscription expire date in inapp v3 android

前端 未结 3 1045
-上瘾入骨i
-上瘾入骨i 2020-12-10 06:26

Hi I have I implemented inapp billing V3 for one year subscription for a item using android-inapp-billing-v3. I want to show remaining days in my app. I am calling get

3条回答
  •  借酒劲吻你
    2020-12-10 07:23

    I'm using this:

    @Nullable
    public Date getSubscriptionRenewingDate(String sku) {
    
        // Get the Purchase object:
        Purchase purchase = null;
        Purchase.PurchasesResult purchasesResult = _billingClient.queryPurchases(BillingClient.SkuType.SUBS);
        if (purchasesResult.getPurchasesList() != null) {
            for (Purchase p : purchasesResult.getPurchasesList()) {
                if (p.getSku().equals(sku) && p.getPurchaseState() == Purchase.PurchaseState.PURCHASED && p.isAutoRenewing()) {
                    purchase = p;
                    break;
                }
            }
        }
    
        // Get the SkuDetails object:
        SkuDetails skuDetails = null;
        for (SkuDetails s : _skuDetails) { // _skuDetails is an array of SkuDetails retrieved with querySkuDetailsAsync
            if (s.getSku().equals(sku)) {
                skuDetails = s;
                break;
            }
        }
    
        if (purchase != null && skuDetails != null) {
    
            Date purchaseDate = new Date(purchase.getPurchaseTime());
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(purchaseDate);
    
            Date now = new Date();
    
            while (calendar.getTime().before(now)) {
    
                switch (skuDetails.getSubscriptionPeriod()) {
    
                    case "P1W": calendar.add(Calendar.HOUR, 7*24); break;
                    case "P1M": calendar.add(Calendar.MONTH, 1); break;
                    case "P3M": calendar.add(Calendar.MONTH, 3); break;
                    case "P6M": calendar.add(Calendar.MONTH, 6); break;
                    case "P1Y": calendar.add(Calendar.YEAR, 1); break;
                }
            }
    
            return calendar.getTime();
        }
    
        return null;
    }
    

提交回复
热议问题