我正在使用谷歌的In-App Billing来为我的Android应用程序收费。
我使用了谷歌的"In-App Billing"文档中提供的IabHelper类,因为他们的计费似乎非常复杂。
我的问题是,我想知道购买是否成功。我认为我正在正确地遵循这个过程,但在我的日志中,我看到很多用户得到了升级,但他们的购买从未出现在我的Google Play付款账户中(即他们免费获得了升级)。
我记录GP订单ID,有时它会是像 "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黑客软件?有什么方法可以防止这种情况发生吗?