Следуя документам на сайте разработчика, я недавно реализовал InAppBilling v3 в своем приложении. Я использовал классы пакета utils из примера TRIVIAL DRIVE.
Проблема, с которой я сталкиваюсь, заключается в том, что если пользователь приобрел продукт в приложении уже при повторном запуске процесса покупки на другом устройстве, в диалоговом окне магазина воспроизведения отображается ЭЛЕМЕНТ УЖЕ ПРИНАДЛЕЖЕН, но код ответа возвращается IabResult< /strong> не соответствует константе IabHelper.BILLING_RESPONSE_RESULT_ITEM_ALREADY_OWNED . Возвращаемый код ответа на самом деле является одним из кодов ошибок в классе IabHelper (-1005 Пользователь отменен).
Я действительно хотел бы знать, как я могу получить фактический код ответа вместо кода ошибки. Любая помощь будет оценена по достоинству.
Ниже приведен код для обратного вызова
// Callback for when a purchase is finished
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener =
new IabHelper.OnIabPurchaseFinishedListener() {
public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
if (result.isFailure()) {
if (result.getResponse() ==
IabHelper.BILLING_RESPONSE_RESULT_ITEM_ALREADY_OWNED) {
//already owned
boolean isPremium = true;
SharedPrefsUtils.setPremium(BaseActivity.this, isPremium);
EventBus.getDefault().post(new InAppBillingUiUpdateEvent(isPremium));
//setWaitScreen(false);
return;
}
//handle error
complain(result.getResponse() + " " + "Error purchasing: " + result);
//setWaitScreen(false);
return;
}
if (!verifyDeveloperPayload(purchase)) {
//corrupted
complain("Error purchasing. Authenticity verification failed.");
//setWaitScreen(false);
return;
}
//successful
if (purchase.getSku().equals(NO_ADS_PRODUCT_ID)) {
// bought the premium upgrade!
alert("Thank you for upgrading to premium!");
boolean isPremium = true;
SharedPrefsUtils.setPremium(BaseActivity.this, isPremium);
EventBus.getDefault().post(new InAppBillingUiUpdateEvent(isPremium));
//setWaitScreen(false);
}
}
};