diff --git a/library/src/main/java/com/anjlab/android/iab/v3/BillingProcessor.java b/library/src/main/java/com/anjlab/android/iab/v3/BillingProcessor.java index 6884fc86..4df73ad0 100644 --- a/library/src/main/java/com/anjlab/android/iab/v3/BillingProcessor.java +++ b/library/src/main/java/com/anjlab/android/iab/v3/BillingProcessor.java @@ -374,13 +374,28 @@ public boolean isSubscriptionUpdateSupported() * is not supported. */ public boolean updateSubscription(Activity activity, String oldProductId, String productId) + { + return updateSubscription(activity, oldProductId, productId, null); + } + + /** + * Change subscription i.e. upgrade or downgrade + * + * @param activity the activity calling this method + * @param oldProductId passing null or empty string will act the same as {@link #subscribe(Activity, String)} + * @param productId the new subscription id + * @param developerPayload the developer payload + * @return {@code false} if {@code oldProductId} is not {@code null} AND change subscription + * is not supported. + */ + public boolean updateSubscription(Activity activity, String oldProductId, String productId, String developerPayload) { List oldProductIds = null; if (!TextUtils.isEmpty(oldProductId)) { oldProductIds = Collections.singletonList(oldProductId); } - return updateSubscription(activity, oldProductIds, productId); + return updateSubscription(activity, oldProductIds, productId, developerPayload); } /** @@ -394,12 +409,28 @@ public boolean updateSubscription(Activity activity, String oldProductId, String */ public boolean updateSubscription(Activity activity, List oldProductIds, String productId) + { + return updateSubscription(activity, oldProductIds, productId, null); + } + + /** + * Change subscription i.e. upgrade or downgrade + * + * @param activity the activity calling this method + * @param oldProductIds passing null will act the same as {@link #subscribe(Activity, String)} + * @param productId the new subscription id + * @param developerPayload the developer payload + * @return {@code false} if {@code oldProductIds} is not {@code null} AND change subscription + * is not supported. + */ + public boolean updateSubscription(Activity activity, List oldProductIds, + String productId, String developerPayload) { if (oldProductIds != null && !isSubscriptionUpdateSupported()) { return false; } - return purchase(activity, oldProductIds, productId, Constants.PRODUCT_TYPE_SUBSCRIPTION, null); + return purchase(activity, oldProductIds, productId, Constants.PRODUCT_TYPE_SUBSCRIPTION, developerPayload); } private boolean purchase(Activity activity, String productId, String purchaseType,