【问题标题】:How to do the setup for Google Wallet Production mode from Sandbox mode in Android?如何在 Android 的沙盒模式下设置 Google Wallet Production 模式?
【发布时间】:2014-03-27 13:34:32
【问题描述】:

我正在使用Google Wallet Instant Buy 根据此处给出的描述和 Google 在此路径上使用 Android SDK 提供的示例 或根据您电脑上的 SDK 设置的类似路径 D:\android-sdk-windows\extras\google\google_play_services\samples\wallet

我成功运行了应用程序并在我的应用程序中实现了相同的功能,它在沙盒模式

下运行良好

由于现在我必须进入应用程序的最后阶段才能在 Play 商店中发布它,我需要将 沙盒模式 更改为 生产模式,以便我们可以进行实时交易(购买)。

据我了解代码并得到我需要更改的内容,我已在特定类中进行了如下所示的更改

  1. 常量类

    // 创建 WalletClient 实例时使用的环境

    public static final int WALLET_ENVIRONMENT = WalletConstants.ENVIRONMENT_SANDBOX;
    

    替换为

    public static final int WALLET_ENVIRONMENT = WalletConstants.ENVIRONMENT_PRODUCTION;
    
  2. LoginFragment.class

    private static final String WALLET_SANDBOX_SCOPE ="https://www.googleapis.com/auth/paymentssandbox.make_payments";
    

    替换为

    private static final String WALLET_SANDBOX_SCOPE ="https://www.googleapis.com/auth/payments.make_payments";
    

所有这些类都在 GOOGLE 提供的示例中给出,并且位置 D:\android-sdk-windows\extras\google\google_play_services\samples\wallet 根据您的 SDK 提供个人电脑。

我在我的应用程序中直接使用了必要的包更改和其他与设计相关的更改。

我已经按照此处Android Google Wallet Integration的说明完成了所有必需的设置

由于我必须在 生产模式 上进行模式,因此我使用 Sign APK Keystore 创建了客户端 ID 和 Android 密钥。

我尝试在设备中运行 Sign APK,但它返回错误 ERROR_CODE_MERCHANT_ACCOUNT_ERROR (405)

不知道如何解决这个问题。

还有一个查询是谷歌钱包如何检测到它是 Android 密钥客户端密钥.. 因为在简单的谷歌地图示例中,我们使用的是 Api 密钥 在应用程序中,但我在 Google 电子钱包示例中没有发现 Api 密钥或客户端 ID 的类似用法

【问题讨论】:

  • 我正在使用谷歌钱包,目前我已集成到我的应用程序中并在沙盒环境中进行测试,但它不起作用。我创建了沙盒买家帐户并添加了信用卡,但它还没有显示任何交易。我在谷歌钱包帐户上添加了我的应用程序。我创建了具有不同 ID 的沙盒商家帐户,但我不知道它将在哪里与应用程序链接。因为在文档中他们提到了复制卖家密码和标识符密钥并粘贴到从示例下载的 Seller.py 文件中,但我没有找到任何示例应用程序中的 Seller.py 文件。你能帮帮我吗?

标签: android payment android-pay android-sdk-tools


【解决方案1】:

猜测是由于指纹无效导致的错误,当用于签署Android应用程序的签名密钥指纹与Google Play注册的指纹不匹配时,Android即时购买API返回ERROR_CODE_MERCHANT_ACCOUNT_ERROR (405)

要解决此问题,请确保提供给 Google 的指纹与用于签署 Android 应用程序的密钥指纹匹配。签署 Android 应用程序后,

使用以下命令验证用于签名的密钥的指纹:

//首先从APK jar中提取META-INF/CERT.RSA -xvf META-INF/CERT.RSA 膨胀:META-INF/CERT.RSA

keytool -printcert -file META-INF/CERT.RSA

证书指纹:MD5: 77:41:C5:C1:DD:3F:6C:09:88:FA:33:3D:83:5F:D3:9E SHA1: EC:4A:EE:DC:F4:02:EA:87:0A:C5:09:C0:58:06:91:E7:EA:41:09:9D
签名算法名称:SHA1withRSA

将 SHA1 与提供给 Google Play 的指纹进行匹配。希望对您有所帮助

【讨论】:

  • 在哪里可以找到在 Google Play 注册的指纹...我使用签名的 apk 密钥库在开发者控制台中生成客户端 ID 和 android 密钥...
  • @khan 使用这个 keytool -exportcert -alias your-key-name -keystore /path/to/your/keystore/file -list -v 来查找您的证书文件并获取其 SHA1 指纹。要获取 SHA1 指纹,请使用上述命令
  • blueberry 我知道这一步,我已经使用签名 apk 密钥库完成了这一步,并在开发者控制台上生成了 SH1 密钥和 ceated clientid 和/或 android 密钥...
  • @Khan 没关系,伙计,指纹看起来像吗?
  • 是的,两者都是相似的。。要么得到你提到的步骤,要么我尝试过其他方式,在这两种情况下,我得到了相同的 SH1 密钥......
【解决方案2】:
  1. 首先商家帐号需要通过 Google 的 Instant Buy 批准,您可以在这里申请 - http://getinstantbuy.withgoogle.com/

  2. 获得批准后,您需要在 Google API 控制台中为已安装的应用程序创建 OAuth 客户端 ID。

  3. 确保您提供的 SHA1 密钥指纹与您在 Google Play 中的软件包名称相同。换句话说,您与生产应用程序一起使用的签名证书 - 使用该证书的指纹。

就是这样。您不需要应用程序中的任何类型的任何密钥。 您设置 ENVIRONMENT 和 SCOPE 的步骤是可以的。

为了清楚起见,更改常量的名称。

private static final String WALLET_SANDBOX_SCOPE ="https://www.googleapis.com/auth/payments.make_payments";

private static final String WALLET_PRODUCTION_SCOPE ="https://www.googleapis.com/auth/payments.make_payments";

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2012-04-20
    • 2020-01-17
    • 1970-01-01
    • 2014-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    相关资源
    最近更新 更多