2017-06-01 61 views
1

我正在嘗試使用Android Pay進行測試付款。到目前爲止,我已經配置了我的設備,基於此answer測試,我在我的設備配置在Android應用卡,並根據此代碼:「payMaskedWallet」中的Android Pay錯誤

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庫現在

,當我進行支付我得到的onActivityResult此錯誤代碼:10

在我看到的只是這個錯誤消息的設備:

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

當我在錯誤對話框中按下OK我得到這個日誌:

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

我也嘗試將變量更改爲生產但仍然是相同的錯誤。 有沒有人有任何解決方案,或者我真的需要嘗試以後?

回答

0

根據這個問題張貼在Github上

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

等接觸有一個與沙盒模式和測試卡不至少在歐洲工作異常。

該問題的答案還包含一個替代解決方案。

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.

0

如果您嘗試使用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

+0

是的,我已經做到了,也只是爲了確保我試圖谷歌的例子,我已經開了這個問題:https://github.com/android-pay/androidpay-quickstart/issues/31 –