“loadMaskedWallet”中的Android Pay错误

时间:2017-06-01 10:47:12

标签: android android-pay

我正在尝试使用Android Pay进行测试付款。到目前为止,我已根据此answer配置了我的设备进行测试,我已在我的设备中根据此代码在Android应用中配置了一张卡:

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

我根据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();
}

然后:

    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();
    }
}

我正在使用

  

PaymentMethodTokenizationType.NETWORK_TOKEN

我生成了github repo

中写的publicKey

现在,当我付款时,我在onActivityResult中收到此错误代码:10

在设备中我只看到此错误消息:

  

请求失败发生意外错误。请稍后再试。

当我在错误对话框中按ok时,我得到这个日志:

  

06-01 12:18:05.739 11386 11386 W WalletMerchantError:错误   loadMaskedWallet:您是否忘记了设置的Android Pay测试   环境到PROD?

我还尝试将变量更改为Production但仍然是相同的错误。 有没有人有任何解决方案,或者我真的必须稍后再尝试?

2 个答案:

答案 0 :(得分:1)

如果您尝试使用ENVIRONMENT_TEST,请确保您已按照Setup Android Pay中列出的步骤操作。具体来说,请确保您的AndroidManifest.xml包含以下位:

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

如果您认为自己的应用已准备好并且正在尝试使用ENVIRONMENT_PRODUCTION,那么还需要执行一些步骤outlined here

答案 1 :(得分:0)

根据Github上发布的这个问题

  

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

和其他联系人有沙盒模式的异常,测试卡至少在欧洲不起作用。

该问题的答案还包含一种替代解决方案。

  

问题:测试卡(即使是Google提供的测试卡)也不再工作了   (至少不在美国境外);

     

解决方案:您需要真卡才能制作   工作。你不会被指控为ENVIRONMENT_TEST。