我已经在Android应用程序中实现了应用程序计费,虽然它可以正常使用测试常量,但却打破了真正的产品。
我已将该应用程序上传为Google Play上的草稿,创建并发布了产品,在设备上安装了完全相同的应用程序(包括正确的base64EncodedPublicKey)并使用了正确的测试帐户(设备上的主要帐户&我在开发者帐户上设置了一个)
流程是我上Google Play活动,在那里我可以看到产品及其详细信息,我按下购买,介绍测试帐户密码,它退出活动,收到祝贺消息和
产品签名验证失败(回复:-1003:购买 签名验证失败)
该项目实际上已购买(它出现在Google Checkout上,并在第二次购买尝试时显示“项目已拥有”)。此外,我只使用了Google的TriviaDrive示例代码。
任何建议都非常有用。谢谢!
答案 0 :(得分:4)
在In App Billing文档中,有一个名为Initiate your connection to 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档案中的许可证密钥字符串。
答案 1 :(得分:2)
此错误可能出现在IAB的第3版中的另一个原因是,如果您在一台设备上购买产品(例如订阅),并且购买信息无法完全进入Play商店应用的缓存中另一种设备。
我有一个可怕的时期,在Kitkat手机上购买订阅后,另一部手机(姜饼)出现了-1003错误。我追溯到这样一个事实:getpurchases()方法只返回带有(正确)列表购买的INAPP_PURCHASE_ITEM_LIST。 INAPP_PURCHASE_DATA_LIST和INAPP_DATA_SIGNATURE_LIST作为null返回。 (尽管我可以在Play应用程序中看到订阅。)
签名为null,因此当然会出现签名验证错误。在经历了很多令人头疼/恐慌之后,为什么它不起作用,突然它没有我做任何事情。我假设Google Services / Play应用程序最终刷新缓存并自行更新。
考虑到这一点,我认为解决方案可能只是将这个错误沉默,直到完整的购买信息传播到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商店应该等到它知道购买的所有内容,然后再将其传递给应用程序,我想。我不知道这个问题是否在购买流程的其他方面表现出来,但是你可以去。
答案 2 :(得分:1)
我的订阅存在此问题,因为我没有设置“itemType”
mHelper.launchPurchaseFlow(this,
SKU_INFINITE_GAS, IabHelper.ITEM_TYPE_SUBS,
RC_REQUEST, mPurchaseFinishedListener, payload);
答案 3 :(得分:0)
1>产品签名验证失败(响应:-1003:购买签名验证失败)
此错误背后的原因是Base64Encoded不匹配。从发布商帐户获取许可证密钥,将其复制到某个文本编辑器中删除任何空格并粘贴它。
2 - ; “物品已经拥有” 当我们从谷歌获得针对应用内购买的OK响应时,我们需要使用应用内商品 通知已被买入和交付。 但如果不知何故,如果你的崩溃或你忘了消费它谷歌将不允许再次购买它,直到你消费它。 在您的方案应用程序中,签名验证失败错误..出现第二个问题的原因
希望这个帮助
答案 4 :(得分:0)
请务必使用密钥
以UTF8编码文件