@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(); } }
private void handleActivityVerification(boolean verified) throws Exception { final String responseData = JSON_PURCHASE; final String responseSignature = "responseSignature"; when(verifier.verify(SIGNATURE, responseData, responseSignature)).thenReturn(verified); final Intent intent = newBillingIntent(BILLING_RESPONSE_RESULT_OK, responseData, responseSignature); final boolean handled = premiumer.handleActivityResult(REQUEST_CODE, RESULT_OK, intent); assertThat(handled).isTrue(); assertInvokedOnce(verifier).verify(SIGNATURE, responseData, responseSignature); if (verified) { final Purchase purchase = new Purchase(responseData, responseSignature); assertInvokedOnce(cache).cache(purchase); assertInvokedOnce(listener).onPurchaseSuccessful(purchase); } else { assertInvokedOnce(listener).onPurchaseFailedVerification(); } }