From bb20ac4c88482e9e5d28ece9e828d789f3e6c27c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=97=D0=B0=D1=86=D0=B5=D0=BF=D0=B8=D0=BD?= Date: Thu, 29 Aug 2019 18:05:35 +0300 Subject: [PATCH] [android] Added bmk purchase consumption even if validation is not verified --- .../AbstractBookmarkValidationCallback.java | 47 +++++++++++++++++++ .../purchase/BookmarkPurchaseController.java | 34 +++++++------- .../FailedBookmarkPurchaseController.java | 28 ++++++----- 3 files changed, 80 insertions(+), 29 deletions(-) create mode 100644 android/src/com/mapswithme/maps/purchase/AbstractBookmarkValidationCallback.java diff --git a/android/src/com/mapswithme/maps/purchase/AbstractBookmarkValidationCallback.java b/android/src/com/mapswithme/maps/purchase/AbstractBookmarkValidationCallback.java new file mode 100644 index 0000000000..8cda259c81 --- /dev/null +++ b/android/src/com/mapswithme/maps/purchase/AbstractBookmarkValidationCallback.java @@ -0,0 +1,47 @@ +package com.mapswithme.maps.purchase; + +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; + +import com.mapswithme.util.log.Logger; +import com.mapswithme.util.log.LoggerFactory; +import com.mapswithme.util.statistics.Statistics; + +abstract class AbstractBookmarkValidationCallback implements ValidationCallback +{ + private static final Logger LOGGER = LoggerFactory.INSTANCE.getLogger(LoggerFactory.Type.BILLING); + private static final String TAG = AbstractBookmarkValidationCallback.class.getSimpleName(); + @Nullable + private final String mServerId; + + AbstractBookmarkValidationCallback(@Nullable String serverId) + { + mServerId = serverId; + } + + @Override + public final void onValidate(@NonNull String purchaseData, @NonNull ValidationStatus status) + { + LOGGER.i(TAG, "Validation status of 'paid bookmark': " + status); + if (status == ValidationStatus.VERIFIED) + { + //noinspection ConstantConditions + Statistics.INSTANCE.trackPurchaseEvent(Statistics.EventName.INAPP_PURCHASE_VALIDATION_SUCCESS, + mServerId); + consumePurchase(purchaseData); + return; + } + + // We consume purchase in 'NOT_VERIFIED' case to allow user enter in bookmark catalog again. + if (status == ValidationStatus.NOT_VERIFIED) + consumePurchase(purchaseData); + + //noinspection ConstantConditions + Statistics.INSTANCE.trackPurchaseValidationError(mServerId, status); + onValidationError(status); + } + + abstract void onValidationError(@NonNull ValidationStatus status); + + abstract void consumePurchase(@NonNull String purchaseData); +} diff --git a/android/src/com/mapswithme/maps/purchase/BookmarkPurchaseController.java b/android/src/com/mapswithme/maps/purchase/BookmarkPurchaseController.java index f0ccd30909..5a0f951527 100644 --- a/android/src/com/mapswithme/maps/purchase/BookmarkPurchaseController.java +++ b/android/src/com/mapswithme/maps/purchase/BookmarkPurchaseController.java @@ -22,7 +22,7 @@ class BookmarkPurchaseController extends AbstractPurchaseController