У меня имеется список с разными количествами монет. Типа этого:
------------------------
10 монет 10руб.
------------------------
20 монет 20руб.
------------------------
30 монет 30руб.
------------------------
И это в диалоговом окне, то есть DialogFragment.
У меня не покупается, и при повторной попытке купить, выскакивает ошибка:
IabResult: Unable to buy item (response: 7:Item Already Owned)
Код:
в onCreateView вызываю setupBilling()
private void setupBilling() {
mHelper = new IabHelper(getActivity(), CheckoutApplication.getPublicKey());
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result) {
if (!result.isSuccess()) {
Log.d(TAG, "In-app Billing setup failed: " +
result);
try {
mHelper.queryInventoryAsync(mReceivedInventoryListener);
} catch (IabHelper.IabAsyncInProgressException e) {
e.printStackTrace();
}
} else {
Log.d(TAG, "In-app Billing is set up OK");
}
}
});
}
При клике на пункт ListView вызываю метод buyCoins(String ProductID), с параметром ID продукта:
private void buyCoins(String name) {
PRODUCT_NAME = name;
try {
mHelper.launchPurchaseFlow(getActivity(), PRODUCT_NAME, RC_REQUEST, mPurchaseFinishedListener);
} catch (IabHelper.IabAsyncInProgressException e) {
e.printStackTrace();
}
}
И остальные методы Хелпера:
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
if (result.isFailure()) {
Log.d(TAG, "error in mPurchaseFinishedListener: " + result);
} else if (purchase.getSku().equals(PRODUCT_NAME)) {
try {
mHelper.consumeAsync(purchase, mConsumeFinishedListener);
} catch (IabHelper.IabAsyncInProgressException e) {
e.printStackTrace();
}
}
}
};
IabHelper.QueryInventoryFinishedListener mReceivedInventoryListener = new IabHelper.QueryInventoryFinishedListener() {
public void onQueryInventoryFinished(IabResult result, Inventory inventory) {
if (result.isFailure()) {
Log.d(TAG, "error in mReceivedInventoryListener: " + result);
} else {
for (CoinsPriceModel coinsPriceModel : coinsPriceModelList){
PRODUCT_NAME = coinsPriceModel.getName();
Purchase purchase = inventory.getPurchase(PRODUCT_NAME);
try {
mHelper.consumeAsync(purchase, mConsumeFinishedListener);
} catch (IabHelper.IabAsyncInProgressException e) {
e.printStackTrace();
}
}
}
}
};
IabHelper.OnConsumeFinishedListener mConsumeFinishedListener = new IabHelper.OnConsumeFinishedListener() {
public void onConsumeFinished(Purchase purchase, IabResult result) {
if (result.isSuccess()) {
ToastUtils.shortToast(getActivity(), "SUCCESS in mConsumeFinishedListener");
} else {
Log.d(TAG, "error in mConsumeFinishedListener: " + result);
}
}
};
Мучаюсь уже 2-й день. Погуглил, ни один вариант мне не помог. ЗЫ: Первый раз сталкиваюсь с IAB
Вопрос: Что я делаю не правильно, как исправить, подскажите???
Продвижение своими сайтами как стратегия роста и независимости