Android应用内购买失败

时间:2016-07-20 06:36:12

标签: android in-app-purchase

我正在尝试在我的应用程序中实现应用内结算系统,但我无法查询库存以检索订阅,因为我收到以下错误:

IabResult: Error refreshing inventory (querying owned items). (response: -1003:Purchase signature verification failed)

我做了什么:

  1. 已签名的APK已在关闭的ALPHA上传到Google Play商店中 公布
  2. 我在测试者部分添加了测试人员帐户(gmail) 在测试设备上使用相同的gmail帐户)
  3. 我已经发送了一封电子邮件,其中包含指向测试人员电子邮件的链接“成为一名电子邮件 测试仪“用于应用程序(我也在Play中看到应用程序 如果我搜索它,请存储)
  4. 我创建了订阅,所有订阅都已发布
  5. 该应用程序已由Google审核,似乎一切正常 (状态:已发布)
  6. 应用程序版本名称“1.1.5-alpha-15”,版本代码“15”和程序包名称与Google Play商店中的相同
  7. 代码(活动中):

    private IabHelper mIabHelper;    
    
    // Init setup listener
    private IabHelper.OnIabSetupFinishedListener mIabSetupListener = new IabHelper.OnIabSetupFinishedListener() {
       @Override
       public void onIabSetupFinished(IabResult result) {
          if (result.isSuccess()) {
             // Load success, now query for inventory
             List<String> skus = new ArrayList();
             skus.add("packagename.org.dev.subscription.monthly");
             skus.add("packagename.org.dev.subscription.yearly");
    
             mIabHelper.queryInventoryAsync(true, skus, mQueryInventoryFinishedListener);
          }
       }
    };
    
    // Listener to load the subscriptions
    private IabHelper.QueryInventoryFinishedListener mQueryInventoryFinishedListener = new IabHelper.QueryInventoryFinishedListener() {
       @Override
       public void onQueryInventoryFinished(IabResult result, Inventory inv) {
          if (result.isFailure()) {
             Log.e(TAG, "Failure, check error!");
             return;
          }
       }
    };
    
    @Override
    protected void onCreate(Bundle savedState) {
       super.onCreate(savedState);
    
       mIabHelper = new IabHelper(this, PUBLIC_KEY_BASE_64);
       mIabHelper.enableDebugLogging(true, "BILLING");
       mIabHelper.startSetup(mIabSetupListener);
    }
    
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
       if (mIabHelper == null || !mIabHelper.handleActivityResult(requestCode, resultCode, data))
          super.onActivityResult(requestCode, resultCode, data);
    }
    
    @Override
    protected void onDestroy() {
        super.onDestroy();
    
        if (mIabHelper != null) {
            mIabHelper.dispose();
        }
    }
    

    我在设备上复制了相同的APK(已签名)并安装了它,但我收到了上述错误。我也在调试模式下运行应用程序,同样的错误。我不知道该怎么做。

    我在这里看到(stackoverflow)Google API正在缓存一些数据。我应该重置工厂吗?或者我如何清除缓存的数据?

1 个答案:

答案 0 :(得分:0)

如果您的应用的基本64公钥不正​​确,签名验证将失败。确保使用正确的&#34; PUBLIC_KEY_BASE_64&#34;。