繁体   English   中英

签名验证失败 - Android应用内购买

[英]Signature verification failed - Android in-app purchase

我已经在Android应用程序上实现了应用程序计费,虽然它可以正常使用测试常量,但却打破了真正的产品。

我已将该应用程序上传为Google Play上的草稿,创建并发布了产品,在设备上安装了完全相同的应用程序(包括正确的base64EncodedPublicKey)并使用了正确的测试帐户(设备上的主要帐户和我设置的帐户)在我的开发者帐户上)

流程是我上Google Play活动,在那里我可以看到产品及其详细信息,我按下购买,介绍测试帐户密码,它退出活动,收到祝贺消息和

产品签名验证失败(响应:-1003:购买签名验证失败)

该项目实际上是购买的(它出现在Google Checkout上,并在第二次购买尝试时显示“项目已经拥有”)。 此外,我只使用了谷歌的TriviaDrive示例代码。

任何建议都非常有帮助。 谢谢!

在In App Billing文档中,有一个部分称为启动您与Google Play的连接

它告诉您,您需要一个base64编码的公钥来实例化您的IabHelper。 您可以从Google Play开发者控制台获取此代码。 登录控制台,单击应用程序,然后转到“服务和API”选项卡。

IabHelper mHelper;

@Override
public void onCreate(Bundle savedInstanceState) {
   // ...
   String base64EncodedPublicKey;

   // compute your public key and store it in base64EncodedPublicKey
   mHelper = new IabHelper(this, base64EncodedPublicKey);
}

请考虑文档中建议的安全建议:

安全建议:强烈建议您不要对Google Play提供的确切公共许可证密钥字符串值进行硬编码。 相反,您可以在运行时从子字符串构造整个公共许可证密钥字符串,或者在将其传递给构造函数之前从加密存储中检索它。 这种方法使恶意第三方更难以修改APK文件中的公共许可证密钥字符串。

此错误可能出现在IAB v3中的另一个原因是,如果您在一台设备上购买产品(例如订阅),并且购买信息无法完全进入另一台设备上Play商店应用的缓存中。

我有一个可怕的时期,在购买Kitkat手机订阅后,另一部手机(姜饼)得到这个-1003错误。 我追溯到这样一个事实:getpurchases()方法只返回带有(正确)列表购买的INAPP_PURCHASE_ITEM_LIST。 INAPP_PURCHASE_DATA_LIST和INAPP_DATA_SIGNATURE_LIST作为null返回。 (即使我可以在Play应用程序中看到订阅。)

签名为null,因此当然会出现签名验证错误。 在经历了很多令人头疼/恐慌之后,为什么它不起作用,突然它没有我做任何事情。 我认为Google Services / Play应用程序最终刷新缓存并自行更新。

考虑到这一点,我认为解决方案可能只是将整个购买信息传播到播放服务,然后将该错误静音.... w / iabhelper它是这样的:

if (result.getResponse() != IabHelper.IABHELPER_VERIFICATION_FAILED)
                    complain("Failed to query inventory: " + result);
Log.d(TAG, "Query inventory was NOT successful.");

这似乎是一个相当大的错误 - Play商店应该等到它知道购买的所有内容,然后再将其传递给应用程序,我想。 我不知道这个问题是否在购买流程的其他方面表现出来,但是你可以去。

我的订阅存在此问题,因为我没有设置“itemType”

 mHelper.launchPurchaseFlow(this,
            SKU_INFINITE_GAS, IabHelper.ITEM_TYPE_SUBS,
            RC_REQUEST, mPurchaseFinishedListener, payload);

1>产品签名验证失败(响应:-1003:购买签名验证失败)

此错误背后的原因是Base64Encoded不匹配。 从发布者帐户获取许可证密钥,将其复制到某个文本编辑器中删除任何空格并粘贴它。

2>“项目已拥有”当我们从谷歌获得应用内购买的OK响应时,我们需要使用应用内商品来通知其已购买和交付。 但如果不知何故,如果你的崩溃或你忘了消费它谷歌将不允许再次购买它,直到你消费它。 在您的方案应用程序中抛出签名验证失败错误..这是第二个问题的原因

希望这有帮助

务必使用密钥以UTF8编码文件

暂无
暂无

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

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