繁体   English   中英

Android应用程式内购买失败

[英]Android in-app purchase failed

我正在尝试在我的应用程序中实现应用内结算系统,但是由于出现以下错误,我无法查询广告资源来检索订阅:

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商店中的相同

代码(活动中):

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正在缓存某些数据。 我应该恢复出厂设置吗? 或者如何清除缓存的数据?

如果您的应用程序的基数为64的公共密钥不正确,则签名验证失败。 确保您使用的是正确的“ PUBLIC_KEY_BASE_64”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM