@Override public void onConfigurationFetched(Configuration configuration) { fragment.sendAnalyticsEvent("android-pay.started"); Intent intent = new Intent(fragment.getApplicationContext(), AndroidPayActivity.class) .putExtra(EXTRA_ENVIRONMENT, GooglePayment.getEnvironment(configuration.getAndroidPay())) .putExtra(EXTRA_MERCHANT_NAME, configuration.getAndroidPay().getDisplayName()) .putExtra(EXTRA_CART, cart) .putExtra(EXTRA_TOKENIZATION_PARAMETERS, GooglePayment.getTokenizationParameters(fragment)) .putIntegerArrayListExtra(EXTRA_ALLOWED_CARD_NETWORKS, GooglePayment.getAllowedCardNetworks(fragment)) .putExtra(EXTRA_SHIPPING_ADDRESS_REQUIRED, shippingAddressRequired) .putExtra(EXTRA_PHONE_NUMBER_REQUIRED, phoneNumberRequired) .putParcelableArrayListExtra(EXTRA_ALLOWED_COUNTRIES, allowedCountries) .putExtra(EXTRA_REQUEST_TYPE, AUTHORIZE); fragment.startActivityForResult(intent, BraintreeRequestCodes.ANDROID_PAY); } });
@Override public void onConfigurationFetched(Configuration configuration) { if (configuration.getGooglePayment().isEnabled(this)) { GooglePayment.isReadyToPay(mBraintreeFragment, new BraintreeResponseListener<Boolean>() { @Override public void onResponse(Boolean isReadyToPay) { if (isReadyToPay) { mGooglePaymentButton.setVisibility(VISIBLE); } else { showDialog("Google Payments are not available. The following issues could be the cause:\n\n" + "No user is logged in to the device.\n\n" + "Google Play Services is missing or out of date."); } } }); } else { showDialog("Google Payments are not available. The following issues could be the cause:\n\n" + "Google Payments are not enabled for the current merchant.\n\n" + "Google Play Services is missing or out of date."); } }
@Test public void onActivityResult_sendsAnalyticsEventOnNonOkOrCanceledResult() { BraintreeFragment fragment = getSetupFragment(); GooglePayment.onActivityResult(fragment, Activity.RESULT_FIRST_USER, new Intent()); verify(fragment).sendAnalyticsEvent("google-payment.failed"); }
@Override public void onConfigurationFetched(Configuration configuration) { listener.onResult(GooglePayment.getTokenizationParameters(fragment), GooglePayment.getAllowedCardNetworks(fragment)); } });
@Test public void requestPayment_postsExceptionWhenTransactionInfoIsNull() throws Exception { BraintreeFragment fragment = getSetupFragment(); GooglePayment.requestPayment(fragment, null); InOrder order = inOrder(fragment); order.verify(fragment).sendAnalyticsEvent("google-payment.selected"); order.verify(fragment).sendAnalyticsEvent("google-payment.failed"); }
@Override public void onConfigurationFetched(Configuration configuration) { Bundle tokenizationParameters = GooglePayment.getTokenizationParameters(fragment).getParameters(); assertNull(tokenizationParameters.getString("braintree:clientKey")); mLatch.countDown(); } });
@Override public void onConfigurationFetched(Configuration configuration) { Collection<Integer> allowedCardNetworks = GooglePayment.getAllowedCardNetworks(fragment); assertEquals(4, allowedCardNetworks.size()); assertTrue(allowedCardNetworks.contains(CardNetwork.VISA)); assertTrue(allowedCardNetworks.contains(CardNetwork.MASTERCARD)); assertTrue(allowedCardNetworks.contains(CardNetwork.AMEX)); assertTrue(allowedCardNetworks.contains(CardNetwork.DISCOVER)); mLatch.countDown(); } });
@Override public void onConfigurationFetched(Configuration configuration) { fragment.sendAnalyticsEvent("android-pay.change-masked-wallet"); Intent intent = new Intent(fragment.getApplicationContext(), AndroidPayActivity.class) .putExtra(EXTRA_ENVIRONMENT, GooglePayment.getEnvironment(configuration.getAndroidPay())) .putExtra(EXTRA_GOOGLE_TRANSACTION_ID, androidPayCardNonce.getGoogleTransactionId()) .putExtra(EXTRA_CART, androidPayCardNonce.getCart()) .putExtra(EXTRA_REQUEST_TYPE, CHANGE_PAYMENT_METHOD); fragment.startActivityForResult(intent, BraintreeRequestCodes.ANDROID_PAY); } });
.build()); GooglePayment.requestPayment(fragment, googlePaymentRequest);
@Override public void onConfigurationFetched(Configuration configuration) { Bundle tokenizationParameters = GooglePayment.getTokenizationParameters(fragment).getParameters(); assertEquals(TOKENIZATION_KEY, tokenizationParameters.getString("braintree:clientKey")); mLatch.countDown(); } });
mGoogleApiClient = new GoogleApiClient.Builder(getActivity()) .addApi(Wallet.API, new Wallet.WalletOptions.Builder() .setEnvironment(GooglePayment.getEnvironment(getConfiguration().getAndroidPay())) .setTheme(WalletConstants.THEME_LIGHT) .build())
@Test public void requestPayment_startsActivity() { BraintreeFragment fragment = getSetupFragment(); GooglePaymentRequest googlePaymentRequest = new GooglePaymentRequest() .transactionInfo(TransactionInfo.newBuilder() .setTotalPrice("1.00") .setTotalPriceStatus(WalletConstants.TOTAL_PRICE_STATUS_FINAL) .setCurrencyCode("USD") .build()); GooglePayment.requestPayment(fragment, googlePaymentRequest); verify(fragment).startActivityForResult(any(Intent.class), eq(BraintreeRequestCodes.GOOGLE_PAYMENT)); }
@Test public void onActivityResult_sendsAnalyticsEventOnOkResponse() { BraintreeFragment fragment = getSetupFragment(); GooglePayment.onActivityResult(fragment, Activity.RESULT_OK, new Intent()); verify(fragment).sendAnalyticsEvent("google-payment.authorized"); }
@Override public void onConfigurationFetched(Configuration configuration) { Bundle tokenizationParameters = GooglePayment.getTokenizationParameters(fragment).getParameters(); assertEquals("braintree", tokenizationParameters.getString("gateway")); assertEquals(configuration.getMerchantId(), tokenizationParameters.getString("braintree:merchantId")); assertEquals(configuration.getGooglePayment().getGoogleAuthorizationFingerprint(), tokenizationParameters.getString("braintree:authorizationFingerprint")); assertEquals("v1", tokenizationParameters.getString("braintree:apiVersion")); assertEquals(BuildConfig.VERSION_NAME, tokenizationParameters.getString("braintree:sdkVersion")); mLatch.countDown(); } });
@Test(timeout = 5000) public void isReadyToPay_returnsFalseWhenAndroidPayIsNotEnabled() throws Exception { String configuration = new TestConfigurationBuilder() .googlePayment(new TestGooglePaymentConfigurationBuilder().enabled(false)) .build(); BraintreeFragment fragment = getFragment(mActivityTestRule.getActivity(), TOKENIZATION_KEY, configuration); GooglePayment.isReadyToPay(fragment, new BraintreeResponseListener<Boolean>() { @Override public void onResponse(Boolean isReadyToPay) { assertFalse(isReadyToPay); mLatch.countDown(); } }); mLatch.await(); }
@Test public void requestPayment_sendsAnalyticsEvent() { BraintreeFragment fragment = getSetupFragment(); GooglePaymentRequest googlePaymentRequest = new GooglePaymentRequest() .transactionInfo(TransactionInfo.newBuilder() .setTotalPrice("1.00") .setTotalPriceStatus(WalletConstants.TOTAL_PRICE_STATUS_FINAL) .setCurrencyCode("USD") .build()); GooglePayment.requestPayment(fragment, googlePaymentRequest); InOrder order = inOrder(fragment); order.verify(fragment).sendAnalyticsEvent("google-payment.selected"); order.verify(fragment).sendAnalyticsEvent("google-payment.started"); }
@Test public void onActivityResult_sendsAnalyticsEventOnCancel() { BraintreeFragment fragment = getSetupFragment(); GooglePayment.onActivityResult(fragment, Activity.RESULT_CANCELED, new Intent()); verify(fragment).sendAnalyticsEvent("google-payment.canceled"); }
GooglePayment.getTokenizationParameters(fragment, new TokenizationParametersListener() { @Override public void onResult(PaymentMethodTokenizationParameters parameters,
.build()); GooglePayment.requestPayment(fragment, googlePaymentRequest);
@Test public void onActivityResult_handlesGooglePaymentResult() throws InvalidArgumentException { BraintreeFragment fragment = BraintreeFragment.newInstance(mActivity, TOKENIZATION_KEY); mockStatic(GooglePayment.class); Intent intent = new Intent(); fragment.onActivityResult(BraintreeRequestCodes.GOOGLE_PAYMENT, Activity.RESULT_OK, intent); verifyStatic(); GooglePayment.onActivityResult(fragment, Activity.RESULT_OK, intent); }