static Handler premiumerHandler(PremiumerListener listener) { return new PremiumerHandler(listener); } }
@Override public void run() { final Purchase purchase = cache.load(); handler.obtainMessage(PremiumerHandler.ON_PURCHASE_DETAILS, purchase).sendToTarget(); } });
SimplePremiumer(@NonNull PremiumerBuilder builder, @NonNull Binder binder) { this.binder = checkNotNull(binder, "binder == null"); this.context = builder.context; this.sku = builder.sku; this.executor = builder.executor; this.requestCode = builder.requestCode; this.payloadGenerator = builder.payloadGenerator; this.verifier = builder.purchaseVerifier; this.cache = builder.purchaseCache; this.signatureBase64 = builder.signatureBase64; // Wrap the listener in a proxy, if show/hide ads should be invoked automatically. this.listener = builder.autoNotifyAds ? new NotifyAdsProxy(builder.listener) : builder.listener; this.handler = new PremiumerHandler(this.listener); }
@Override public void run() { final SkuDetails details = billing.skuDetails(sku); handler.obtainMessage(PremiumerHandler.ON_SKU_DETAILS, details).sendToTarget(); } });
@Override public void run() { final boolean owns = billing.ownsSku(sku); final int id = owns ? PremiumerHandler.ON_HIDE_ADS : PremiumerHandler.ON_SHOW_ADS; handler.obtainMessage(id).sendToTarget(); } });
@WorkerThread void onSuccessfulPurchase(@NonNull String purchaseData, @NonNull String signature) { final boolean verified = verifier == null || verifier.verify(signatureBase64, purchaseData, signature); if (verified) { final Purchase purchase = fromJson(purchaseData, signature); cache.cache(purchase); handler.obtainMessage(PremiumerHandler.ON_PURCHASE_SUCCESSFUL, purchase).sendToTarget(); } else { handler.obtainMessage(PremiumerHandler.ON_PURCHASE_FAILED_VERIFICATION).sendToTarget(); } }
@Override public void run() { boolean consumed = false; final Purchase purchase = cache.load(); if (purchase != null && purchase.purchaseToken != null) { consumed = billing.consumeSku(purchase.purchaseToken); } final int message; if (consumed) { cache.clear(); message = PremiumerHandler.ON_SKU_CONSUMED; } else { message = PremiumerHandler.ON_FAILED_TO_CONSUME_SKU; } handler.obtainMessage(message, purchase).sendToTarget(); } });