forked from organicmaps/organicmaps
[android] Added bmk purchase consumption even if validation is not verified
This commit is contained in:
parent
065d73b057
commit
bb20ac4c88
3 changed files with 80 additions and 29 deletions
|
@ -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);
|
||||
}
|
|
@ -22,7 +22,7 @@ class BookmarkPurchaseController extends AbstractPurchaseController<ValidationCa
|
|||
@NonNull
|
||||
private final PlayStoreBillingCallback mBillingCallback = new PlayStoreBillingCallbackImpl();
|
||||
@NonNull
|
||||
private final ValidationCallback mValidationCallback = new ValidationCallbackImpl();
|
||||
private final ValidationCallback mValidationCallback;
|
||||
@Nullable
|
||||
private final String mServerId;
|
||||
|
||||
|
@ -32,6 +32,7 @@ class BookmarkPurchaseController extends AbstractPurchaseController<ValidationCa
|
|||
{
|
||||
super(validator, billingManager, productId);
|
||||
mServerId = serverId;
|
||||
mValidationCallback = new ValidationCallbackImpl(mServerId);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -48,28 +49,27 @@ class BookmarkPurchaseController extends AbstractPurchaseController<ValidationCa
|
|||
getBillingManager().removeCallback(mBillingCallback);
|
||||
}
|
||||
|
||||
private class ValidationCallbackImpl implements ValidationCallback
|
||||
private class ValidationCallbackImpl extends AbstractBookmarkValidationCallback
|
||||
{
|
||||
|
||||
@Override
|
||||
public void onValidate(@NonNull String purchaseData, @NonNull ValidationStatus status)
|
||||
ValidationCallbackImpl(@Nullable String serverId)
|
||||
{
|
||||
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);
|
||||
LOGGER.i(TAG, "Bookmark purchase consuming...");
|
||||
getBillingManager().consumePurchase(PurchaseUtils.parseToken(purchaseData));
|
||||
return;
|
||||
}
|
||||
super(serverId);
|
||||
}
|
||||
|
||||
//noinspection ConstantConditions
|
||||
Statistics.INSTANCE.trackPurchaseValidationError(mServerId, status);
|
||||
@Override
|
||||
void onValidationError(@NonNull ValidationStatus status)
|
||||
{
|
||||
if (getUiCallback() != null)
|
||||
getUiCallback().onValidationFinish(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
void consumePurchase(@NonNull String purchaseData)
|
||||
{
|
||||
LOGGER.i(TAG, "Bookmark purchase consuming...");
|
||||
getBillingManager().consumePurchase(PurchaseUtils.parseToken(purchaseData));
|
||||
}
|
||||
}
|
||||
|
||||
private class PlayStoreBillingCallbackImpl extends AbstractPlayStoreBillingCallback
|
||||
|
@ -121,7 +121,7 @@ class BookmarkPurchaseController extends AbstractPurchaseController<ValidationCa
|
|||
@Override
|
||||
public void onConsumptionSuccess()
|
||||
{
|
||||
LOGGER.i(TAG, "Bookmark purchase consumed and verified");
|
||||
LOGGER.i(TAG, "Bookmark purchase consumed");
|
||||
if (getUiCallback() != null)
|
||||
getUiCallback().onValidationFinish(true);
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@ public class FailedBookmarkPurchaseController implements PurchaseController<Fail
|
|||
@Nullable
|
||||
private FailedPurchaseChecker mCallback;
|
||||
@NonNull
|
||||
private final ValidationCallback mValidationCallback = new ValidationCallbackImpl();
|
||||
private final ValidationCallback mValidationCallback = new ValidationCallbackImpl(null);
|
||||
@NonNull
|
||||
private final PlayStoreBillingCallback mBillingCallback = new PlayStoreBillingCallbackImpl();
|
||||
|
||||
|
@ -102,20 +102,17 @@ public class FailedBookmarkPurchaseController implements PurchaseController<Fail
|
|||
mValidator.onRestore(inState);
|
||||
}
|
||||
|
||||
private class ValidationCallbackImpl implements ValidationCallback
|
||||
private class ValidationCallbackImpl extends AbstractBookmarkValidationCallback
|
||||
{
|
||||
|
||||
@Override
|
||||
public void onValidate(@NonNull String purchaseData, @NonNull ValidationStatus status)
|
||||
ValidationCallbackImpl(@Nullable String serverId)
|
||||
{
|
||||
LOGGER.i(TAG, "Validation status of 'paid bookmark': " + status);
|
||||
if (status == ValidationStatus.VERIFIED)
|
||||
{
|
||||
LOGGER.i(TAG, "Bookmark purchase consuming...");
|
||||
mBillingManager.consumePurchase(PurchaseUtils.parseToken(purchaseData));
|
||||
return;
|
||||
}
|
||||
super(serverId);
|
||||
}
|
||||
|
||||
@Override
|
||||
void onValidationError(@NonNull ValidationStatus status)
|
||||
{
|
||||
if (status == ValidationStatus.AUTH_ERROR)
|
||||
{
|
||||
if (mCallback != null)
|
||||
|
@ -126,6 +123,13 @@ public class FailedBookmarkPurchaseController implements PurchaseController<Fail
|
|||
if (mCallback != null)
|
||||
mCallback.onFailedPurchaseDetected(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
void consumePurchase(@NonNull String purchaseData)
|
||||
{
|
||||
LOGGER.i(TAG, "Failed bookmark purchase consuming...");
|
||||
mBillingManager.consumePurchase(PurchaseUtils.parseToken(purchaseData));
|
||||
}
|
||||
}
|
||||
|
||||
private class PlayStoreBillingCallbackImpl implements PlayStoreBillingCallback
|
||||
|
@ -187,7 +191,7 @@ public class FailedBookmarkPurchaseController implements PurchaseController<Fail
|
|||
@Override
|
||||
public void onConsumptionSuccess()
|
||||
{
|
||||
LOGGER.i(TAG, "Failed bookmark purchase consumed and verified");
|
||||
LOGGER.i(TAG, "Failed bookmark purchase consumed");
|
||||
if (mCallback != null)
|
||||
mCallback.onFailedPurchaseDetected(false);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue