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つのアプリ内購入サブスクリプションタイプでこれを試しました。
私自身もこの問題を抱えていました。しばらくして、私は自分が間違ったことを見つけました。 IABHelperで間違ったメソッドを呼び出していました。
Google DeveloperConsoleでサブスクリプションとして登録されているSKUを使用してmHelper.launchPurchaseFlow(...)
を呼び出すと、エラーが発生します。IABはnullのpurchaseDataまたはdataSignatureを返しました(応答-1008:不明なエラー)。
サブスクリプションとして登録されているSKUがある場合は、代わりにmHelper.launchSubscriptionPurchaseFlow(...)
メソッドを使用する必要があります。
お役に立てれば。
購入エラー:iabResult:IABがnull購入データまたはデータ署名を返しました(応答:-1008不明なエラー)
launchPurchaseFlow()メソッドを使用したときに上記のエラーが発生し、このエラーが発生した場合は、製品タイプを確認してください。サブスクリプションを作成しましたが、非消耗品タイプなどの管理対象製品が必要でした。購入やサブスクリプションに注意することを意味します
CordovaおよびHybridアプリの場合、サブスクリプションInAppPurchase
にthis.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);
});
})
}