成功购买时Android应用内购买失败
我正在开发一个应用程序内购买。我已将该应用程序在play store上进行了封闭测试。使用测试人员电子邮件,并在帐户设置中添加测试人员电子邮件。我在play store上有2个托管产品。我在调试模式下测试了android.test.purchased,它运行良好。但在从play store安装的发行版上,当我购买SKU时,它成功完成了购买,但由于某些原因,我得到了失败响应。我正试图弄明白这一点。此外,我在购买后消费这些物品,以便再次使用。这是我的密码成功购买时Android应用内购买失败,android,in-app-purchase,Android,In App Purchase,我正在开发一个应用程序内购买。我已将该应用程序在play store上进行了封闭测试。使用测试人员电子邮件,并在帐户设置中添加测试人员电子邮件。我在play store上有2个托管产品。我在调试模式下测试了android.test.purchased,它运行良好。但在从play store安装的发行版上,当我购买SKU时,它成功完成了购买,但由于某些原因,我得到了失败响应。我正试图弄明白这一点。此外,我在购买后消费这些物品,以便再次使用。这是我的密码 mHelper = new IabHelp
mHelper = new IabHelper(this, Constants.BASE64_ENCODED_PUBLIC_KEY);
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result) {
if (!result.isSuccess()) {
Log.d(TAG, "In-app Billing setup failed due to: " +
result.getMessage());
} else {
//do further steps here.
Log.d(TAG, "In-app Billing is set up OK");
}
}
});
然后点击按钮
mHelper.launchPurchaseFlow(PurchaseActivity.this, ITEM_SKU, 10001,
mPurchaseFinishedListener, "mypurchasetoken");
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
if (result.isFailure()) {
Toast.makeText(PurchaseActivity.this, "mPurchaseFinishedListener: " + result.getMessage(), Toast.LENGTH_SHORT).show();
if (result.getResponse() == 7) {
consumeItem();
} else {
dismissProgressDialog();
Log.d(TAG, "onIabPurchaseFinishedWithError: " + result.getMessage());
AlertHelper.errorAlert(PurchaseActivity.this,
getString(R.string.purchase_unsuccessful_text), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
});
}
} else if (purchase.getSku().equals(ITEM_SKU)) {
Log.d(TAG, "onIabPurchaseFinishedWithSuccess: ");
consumeItem();
}
}
};
public void consumeItem() {
/* if (isTest) {
try {
int response = mHelper.mService.consumePurchase(3, getPackageName(), "inapp:" + getPackageName() + ":android.test.purchased");
if (response == 0) {
//Save purchase status to shared pref.
updateUserAccount(ITEM_SKU);
//Sign up user to our server.
signUpUserToServer("android.test.purchased:9090");
Log.d(TAG, "onConsumeFinishedSuccessfully");
} else {
Log.d(TAG, "onConsumeFinishedWithError: " + response);
}
} catch (RemoteException e) {
e.printStackTrace();
}
} else*/
mHelper.queryInventoryAsync(mReceivedInventoryListener);
}
IabHelper.QueryInventoryFinishedListener mReceivedInventoryListener = new IabHelper.QueryInventoryFinishedListener() {
public void onQueryInventoryFinished(IabResult result,
Inventory inventory) {
if (result.isFailure()) {
dismissProgressDialog();
Log.d(TAG, "onQueryInventoryFinishedWithError: " + result.getMessage());
Toast.makeText(PurchaseActivity.this, "mReceivedInventoryListener: " + result.getMessage(), Toast.LENGTH_SHORT)
.show();
} else {
Log.d(TAG, "onQueryInventoryFinished. asyncConsume fired. ");
mHelper.consumeAsync(inventory.getPurchase(ITEM_SKU),
mConsumeFinishedListener);
}
}
};
IabHelper.OnConsumeFinishedListener mConsumeFinishedListener = new IabHelper.OnConsumeFinishedListener() {
public void onConsumeFinished(Purchase purchase, IabResult result) {
if (result.isSuccess()) {
if (isAlreadyOwned) {
isAlreadyOwned = false;
processPurchaseClick();
} else {
//Save purchase status to shared pref.
updateUserAccount(ITEM_SKU);
//Sign up user to our server.
signUpUserToServer(purchase.getToken());
Log.d(TAG, "onConsumeFinishedSuccessfully");
}
} else {
Toast.makeText(PurchaseActivity.this, "onConsumeFinishedWithError: " + result.getMessage(), Toast.LENGTH_SHORT)
.show();
Log.d(TAG, "onConsumeFinishedWithError: " + result.getMessage());
}
}
};
从测试帐户成功购买后,我将在onPurchasefinishedListener中获得失败结果和R.string.purchase\u unsuccessful\u文本。帮帮我,伙计们,我找到了答案,所以我发布了答案,这样可能会对某人有所帮助。我的Base64公钥是另一个应用程序的。我把钥匙放对了,它成功了。答案帮助了我。result.getMessage()它给出了什么错误you@jaikhambhayta我无法调试从playstore生成的版本,所以我不知道返回的是什么结果。getMessage()返回。您可以登录到那里。Log.d(标记“onQueryInventoryFinishedWithError:”+result.getMessage());使用标准计费客户端