Я использую Google In-App Billing для своего приложения для Android.
Я использовал класс IabHelper у Google, как, поскольку их выставление счетов кажется чрезвычайно сложным.
Моя проблема заключается в том, что я хочу знать, успешна покупка или нет. Я думаю, что правильно выполняю этот процесс, но в моих журналах я вижу много пользователей, которые получают обновление, но чья покупка никогда не появляется в моем платежном аккаунте Google Play. (т.е. они получают обновление бесплатно).
Я регистрирую идентификаторы GP-ордера, иногда их число вроде
GPA.1234-5678-9123-1234
Но иногда это похоже,
+1234567891234,1234567891234
Обычно я думаю, что это не GPA-заказы, которые не заряжаются.
Также я думаю, что вы можете отправить заказ, а затем отменить его и все-таки получить обновление?
Как вы гарантируете, что пользователь действительно заплатил?
код:
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
public void onIabPurchaseFinished(IabResult result, final Purchase purchase) {
if (result.isFailure()) {
showMessage("Google Billing Purchase Error");
return;
} else if (purchase.getSku().equals(sku)) {
IabHelper.QueryInventoryFinishedListener mReceivedInventoryListener = new IabHelper.QueryInventoryFinishedListener() {
public void onQueryInventoryFinished(IabResult result, Inventory inventory) {
if (result.isFailure()) {
showMessage("Google Billing Error");
return;
} else {
if (inventory.hasPurchase(sku)) {
showMessage("Thank you for upgrading");
grantUpgrade();
// ** This line gets call, but no payment occurs.
}
}
}
};
mHelper.queryInventoryAsync(mReceivedInventoryListener);
}
}
};
mHelper.launchPurchaseFlow(this, sku, 10001, mPurchaseFinishedListener, "");
*** обновлен, чтобы проверить "inventory.hasPurchase(sku)", но все равно вижу пользователей, которые получают обновление, но не платят.
** Возможно, пользователи используют взлом Freedom? В любом случае, чтобы предотвратить это?