Google Play应用内购买会返回错误代码-1008:null puchaseData或dataSignature

esi*_*ver 26 android in-app-purchase in-app-billing google-play

在v2中成功实施后,我正尝试实施Google Play应用内购买v3.但是,每次尝试购买我真正的应用内商品时,都会收到以下后续错误:

IAB返回null purchaseData或dataSignature(响应-1008:未知错误)

这来自IabHelper.java类,第452行:

if (purchaseData == null || dataSignature == null) {
    logError("BUG: either purchaseData or dataSignature is null.");
    logDebug("Extras: " + data.getExtras().toString());
    result = new IabResult(IABHELPER_UNKNOWN_ERROR, "IAB returned null purchaseData or dataSignature");
    if (mPurchaseListener != null) mPurchaseListener.onIabPurchaseFinished(result, null);
    return true;
}
Run Code Online (Sandbox Code Playgroud)

我已经确认a)我的应用已签名,b)我的应用版本与Google Play商店中的草稿版本#匹配,以及c)尝试购买的用户已添加为测试用户.我已尝试过3个测试帐户和4个应用内购买订阅类型.

  • 我应该关注这个错误代码吗?
  • 这是一个仅限于非生产版本的问题吗?
  • 如果/当我发布此版本时,这是否会影响我的客户?
  • 您是否真的只能在实际使用IAB版本3进行实际发布后,端到端地测试应用内购买?我意识到我可以使用android.test.purchased项类型,我有(它有效),但我不认为这是一个有效的端到端测试.

tob*_*alr 68

我自己有这个问题.过了一会儿,我发现了我做错了什么.我在IABHelper上调用了错误的方法.

如果您mHelper.launchPurchaseFlow(...)使用在Google Developer Console上注册为订阅的SKU进行呼叫,则会导致错误:IAB返回null purchaseData或dataSignature(响应-1008:未知错误).

如果您有注册为订阅一个SKU,你必须使用方法:mHelper.launchSubscriptionPurchaseFlow(...)代替.

希望这可以帮助.