ERROR_CODE_MERCHANT_ACCOUNT_ERROR(405)在使用Google示例代码

时间:2015-12-05 22:03:49

标签: android android-pay

使用https://github.com/android-pay/androidpay-quickstart试用Android Pay。 以下是我通过样本中的默认Google钱包实施对Android付费所做的微小更改。

  1. 在我的设备中安装了Google Play服务的最新版本(8.4.89)

  2. 更改build.gradle文件中的依赖项以将8.3版本用作

    编译com.google.android.gms:play-services-wallet:8.3.0'

  3. 在我的设备中,已下载" Android Pay"来自Play商店的应用程序并成功添加了一张支持的银行卡。

  4. WalletFragmentStyle walletFragmentStyle = new WalletFragmentStyle()
                .setBuyButtonText(BuyButtonText.BUY_WITH_GOOGLE)
                .setBuyButtonAppearance(WalletFragmentStyle.BuyButtonAppearance.ANDROID_PAY_LIGHT)
                .setMaskedWalletDetailsLogoImageType(WalletFragmentStyle.LogoImageType.ANDROID_PAY)
                .setBuyButtonWidth(Dimension.MATCH_PARENT);
    

    通过这样做,我可以在CheckOutActivity屏幕中获得类似于https://developers.google.com/android-pay/payment-flows中“付款流程”部分下的第一张图片的Android Pay徽标。但是当我点击" 购买Android(徽标)支付"我收到错误代码 405 。根据" 无效的签名密钥指纹"在https://developers.google.com/android-pay/best-practices中,这通常发生在开发中的应用程序从沙箱环境切换到生产环境之后。

    我已确保在代码中将环境设置为TEST(WalletConstants.ENVIRONMENT_TEST),如下所示

    WalletFragmentOptions walletFragmentOptions = WalletFragmentOptions.newBuilder()
                .setEnvironment(WalletConstants.ENVIRONMENT_TEST)
                .setFragmentStyle(walletFragmentStyle)
                .setTheme(WalletConstants.THEME_LIGHT)
                .setMode(WalletFragmentMode.BUY_BUTTON)
                .build();
    

    请注意我没有在Play商店发布此应用程序,我只在我的本地方框中尝试,并且不希望对示例应用程序进行预授权。因此,我没有按照https://developers.google.com/android-pay/preauth中提到的步骤进行操作。因此,我无法验证提供给Google的指纹是否与用于签署Android应用程序的密钥的指纹相匹配。如第34节中所述; 无效的签名密钥指纹"在https://developers.google.com/android-pay/best-practices

    不确定我正在做什么错误或错过了成功运行此操作的必要步骤。任何帮助将不胜感激,因为我渴望将其显示为POC并在我们的生产应用程序中实现相同的。

2 个答案:

答案 0 :(得分:4)

您是否将这些行放在AndroidManifest.xml中?

    <meta-data
        android:name="com.google.android.gms.wallet.api.enabled"
        android:value="true" />

答案 1 :(得分:1)

这是从Android Pay文档

中说明的
  

请务必使用发布密钥对您的应用进行签名

     

当您的应用指向Android Pay生产环境时,   如果,Android Pay API会返回ERROR_CODE_MERCHANT_ACCOUNT_ERROR(405)   用于签署Android应用程序的签名密钥指纹没有   匹配在Google Play注册的发布密钥指纹。这个   通常在开发中的应用程序从测试切换后发生   环境到生产环境

https://developers.google.com/android-pay/deployment