Ultimo_m
Ultimo_m

Reputation: 4897

Android Pay Error in "loadMaskedWallet"

I am trying to make a test payment with Android Pay. So far I have configured my device for testing based on this answer, I have configured a card in Android app in my device and based on this code:

Wallet.Payments.isReadyToPay(mGoogleApiClient, IsReadyToPayRequest.newBuilder()
                   .addAllowedCardNetwork(WalletConstants.CardNetwork.VISA)
                   .addAllowedCardNetwork(WalletConstants.CardNetwork.MASTERCARD)
                   .build())
                .setResultCallback(
                        booleanResult -> {
                           if (booleanResult.getStatus().isSuccess()) { // says true
...

I have build my example based on these guidelines from google code lab

private void initGoogleApi() {
    mGoogleApiClient = new GoogleApiClient.Builder(getActivity())
            .addOnConnectionFailedListener(this)
            .enableAutoManage(getActivity(),0, this)
            .addApi(Wallet.API, new Wallet.WalletOptions.Builder()
                    .setEnvironment(WalletConstants.ENVIRONMENT_TEST)
                    .setTheme(WalletConstants.THEME_LIGHT)
                    .build())
            .build();
}

and then:

    private void initAndroidPayView() {
    mWalletFragment = (SupportWalletFragment) getActivity().getSupportFragmentManager()
            .findFragmentByTag(WALLET_FRAGMENT_ID);

    if (mWalletFragment == null) {
        // Wallet fragment style
        WalletFragmentStyle walletFragmentStyle = new WalletFragmentStyle()
                .setBuyButtonText(WalletFragmentStyle.BuyButtonText.BUY_WITH)
                .setBuyButtonWidth(WalletFragmentStyle.Dimension.MATCH_PARENT);

        // Wallet fragment options
        WalletFragmentOptions walletFragmentOptions = WalletFragmentOptions.newBuilder()
                .setEnvironment(WalletConstants.ENVIRONMENT_TEST)
                .setFragmentStyle(walletFragmentStyle)
                .setTheme(WalletConstants.THEME_DARK)
                .setMode(WalletFragmentMode.BUY_BUTTON)
                .build();

        // Initialize the WalletFragment
        WalletFragmentInitParams.Builder startParamsBuilder =
                WalletFragmentInitParams.newBuilder()
                        .setMaskedWalletRequest(generateMaskedWalletRequest())
                        .setMaskedWalletRequestCode(MASKED_WALLET_REQUEST_CODE);
        //.setAccountName("Google I/O Codelab");//https://developers.google.com/android/reference/com/google/android/gms/wallet/fragment/WalletFragmentInitParams.Builder
        mWalletFragment = SupportWalletFragment.newInstance(walletFragmentOptions);
        mWalletFragment.initialize(startParamsBuilder.build());

        // Add the WalletFragment to the UI
        getActivity().getSupportFragmentManager().beginTransaction()
                .replace(R.id.androidPayContainer, mWalletFragment, WALLET_FRAGMENT_ID)
                .commit();
    }
}

I am using the

PaymentMethodTokenizationType.NETWORK_TOKEN

and I generated the publicKey as written in github repo

Now when I make the payment I get this error code in the onActivityResult: 10

In the device I see only this error message:

Request Failed An unexpected error has occurred. Please try again later.

And when I press ok in the error dialog I get this log:

06-01 12:18:05.739 11386 11386 W WalletMerchantError: Error in loadMaskedWallet: Did you forget the set Android Pay testing environment to PROD?

I tried also changing the variables to Production but still the same error. Does anyone have any solution or I really have to try that later?

Upvotes: 2

Views: 699

Answers (2)

Ultimo_m
Ultimo_m

Reputation: 4897

According to this issue posted on Github

https://github.com/android-pay/androidpay-quickstart/issues/31

and other contacts there is an anomaly with Sandbox mode and the test card don't work at least in Europe.

The answer from the issue contains also an alternative solution.

Issue: test cards (even the one provided by Google) don't work anymore (at least not outside of US);

Solution: you need real card to make it work. You won't be charged with ENVIRONMENT_TEST.

Upvotes: 0

fstanis
fstanis

Reputation: 5534

If you're trying to use ENVIRONMENT_TEST, make sure you've followed the steps outlined in Setup Android Pay. Specifically, make sure your AndroidManifest.xml contains the following bit:

<application
  ...
  <!-- Enables the Android Pay API -->
  <meta-data
    android:name="com.google.android.gms.wallet.api.enabled"
    android:value="true" />
</application>

If you feel your app is ready and are trying to use ENVIRONMENT_PRODUCTION, then there a few more steps outlined here.

Upvotes: 2

Related Questions