我正在 Android 应用中实现应用内购买。我在 Google Play 开发者控制台中设置了应用程序并设置了几个产品。
根据 Android 文档,我将 IabHelper 和相关的计费文件添加到我的代码库中。我能够成功setup
:
String base64EncodedPublicKey = Configurations.getInstance().getGooglePlayLicenseKey();
googlePlayHelper = new IabHelper(AtavistApplication.getContext(), base64EncodedPublicKey);
googlePlayHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result) {
if (!result.isSuccess()) {
Utilities.log("Unable to setup billing: " + result);
isBillingSetup = false;
} else {
Utilities.log("Billing setup successfully");
isBillingSetup = true;
}
}
});
但是当我向 Google Play 查询产品信息时,如下所示:
IabHelper.QueryInventoryFinishedListener mQueryFinishedListener = new IabHelper.QueryInventoryFinishedListener() {
public void onQueryInventoryFinished(IabResult result, Inventory inventory)
{
if (result.isFailure()) {
Utilities.log("getProducts failed");
callback.failure(null);
} else {
Utilities.log("getProducts succeeded");
callback.success(inventory);
}
}
};
googlePlayHelper.queryInventoryAsync(true, identifiers, mQueryFinishedListener);
identifiers
字符串产品标识符列表在哪里:
ArrayList<String> productIDs = new ArrayList<String>();
productIDs.add("com.first.product");
productIDs.add("com.second.product");
productIDs.add("com.third.product");
我收到了一个成功的响应,其中仅包含一种产品,该产品不是在我的 Google Play 帐户中设置的产品。它的 productID 是我们之前提供的产品的 productID,但不久前它已从 Google Play 的活跃产品列表中删除。
问题:
- 为什么
queryInventoryAsync
不返回正确的列表? - 为什么它会返回当前未在 Google Play 中设置的产品?
- 我是否缺少一些导致这种混乱的基本配置步骤?