27

在 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;
}

我已验证 a) 我的应用程序已签名,b) 我的应用程序版本与 Google Play 商店中的草稿版本# 相匹配,并且 c) 尝试购买的用户已被添加为测试用户。我已经在 3 个测试帐户和 4 个应用内购买订阅类型中进行了尝试。

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

3 回答 3

71

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

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

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

希望这可以帮助。

于 2013-05-26T14:27:19.323 回答
1

对于 Cordova 和 Hybrid 应用程序,您需要使用this.iap.subscribe(this.productId)订阅方法InAppPurchase

以下是对我来说工作正常的代码:

 getProdutIAP() {
        this.navCtrl.push('subscribeDialogPage');
        this.iap
            .getProducts(['productID1']).then((products: any) => {
                this.buy(products);
                // alert('getProdutIAP' + JSON.stringify(products));
            })
            .catch((err) => {
                console.log(JSON.stringify(err));
                alert('Finished Purchase' + JSON.stringify(err));
                console.log(err);
            });
    }

    buy(products: any) {
        // this.getProdutIAP();
        // alert(products[0].productId);
        this.iap.subscribe(products[0].productId).then((buydata: any) => {
            alert('buy Purchase' + JSON.stringify(buydata));
            // this.sub();
        }).catch((err) => {
            // this.navCtrl.push('subscribeDialogPage');
            alert('buyError' + JSON.stringify(err));
        });
    }

    sub() {
        this.platform.ready().then(() => {
            this.iap
                .subscribe(this.productId)
                .then((data) => {
                    console.log('subscribe Purchase' + JSON.stringify(data));
                    alert('subscribe Purchase' + JSON.stringify(data));
                    this.getReceipt();
                }).catch((err) => {
                    this.getReceipt();
                    alert('subscribeError' + JSON.stringify(err));
                    console.log(err);
                });
        })
    }
于 2019-01-31T10:29:22.367 回答
1

error purchase: iabResult: IAB returned null purchase Data or data Signature (response: -1008 unknown error)

如果您在使用 launchPurchaseFlow() 方法时遇到上述错误并收到此错误,请检查您的产品类型。我创建了订阅,但我需要托管产品,例如非消耗性产品类型。我的意思是要小心购买或订阅

于 2018-01-14T14:09:45.023 回答