web-dev-qa-db-ja.com

Google Playアプリ内購入はエラーコード-1008を返します:nullpuchaseDataまたはdataSignature

V2で正常に実装した後、 Google Playアプリ内購入v を実装しようとしています。ただし、実際のアプリ内製品の1つを購入しようとするたびに、次のフォローアップエラーが発生します。

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アイテムタイプを使用できることを認識し、(機能します)持っていますが、それが有効なエンドツーエンドのテストであるとは考えていません。
26
esilver

私自身もこの問題を抱えていました。しばらくして、私は自分が間違ったことを見つけました。 IABHelperで間違ったメソッドを呼び出していました。

Google DeveloperConsoleでサブスクリプションとして登録されているSKUを使用してmHelper.launchPurchaseFlow(...)を呼び出すと、エラーが発生します。IABはnullのpurchaseDataまたはdataSignatureを返しました(応答-1008:不明なエラー)。

サブスクリプションとして登録されているSKUがある場合は、代わりにmHelper.launchSubscriptionPurchaseFlow(...)メソッドを使用する必要があります。

お役に立てれば。

68
tobalr

購入エラー:iabResult:IABがnull購入データまたはデータ署名を返しました(応答:-1008不明なエラー)

launchPurchaseFlow()メソッドを使用したときに上記のエラーが発生し、このエラーが発生した場合は、製品タイプを確認してください。サブスクリプションを作成しましたが、非消耗品タイプなどの管理対象製品が必要でした。購入やサブスクリプションに注意することを意味します

1
ethemsulan

CordovaおよびHybridアプリの場合、サブスクリプションInAppPurchasethis.iap.subscribe(this.productId)メソッドを使用する必要があります。

以下は私にとってうまく機能するコードです:

 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);
                });
        })
    }
1
Yogesh Desai