我正在尝试将Googles In-App Billing添加到我的Android 4+应用中。我按照" Preparing Your In-app Billing Application"中所述设置了所有内容。现在我已将应用程序上传到Developer控制台的Alpha测试通道。
此外,我已设置了一个测试帐户(described here),以便能够在不触发真实付款的情况下购买商品。
在我的测试设备上从Play商店安装alpha版本(当然使用测试帐户)有两个问题:
不从Play商店中提取产品信息。因此,我无法显示任何价格信息等。
当我开始购买时,绝对没有任何暗示,这将是免费测试购买。一切看起来都像真正的购买。
这是我使用的代码:
String publicKey = MyApp.getPublicKey(); // de-code and get the public key
final IabHelper googlePlayHelper = new IabHelper(context, publicKey);
Log.d("TAG", "IabHelber Init");
googlePlayHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result) {
if (!result.isSuccess()) {
Log.d("TAG", "IabHelber Init - Non Success: " + result);
} else {
Log.d("TAG", "IabHelber Init - SUCCESS");
try {
googlePlayHelper.queryInventoryAsync(true, new IabHelper.QueryInventoryFinishedListener() {
public void onQueryInventoryFinished(IabResult result, Inventory inventory) {
if (result.isFailure()) {
Log.d("TAG", "query Inventory - Non Success: " + result);
} else {
Log.d("TAG", "query Inventory - SUCCESS");
if (inventory.hasDetails(2my.product.id")) {
Log.d("TAG", "NO DETAILS");
} else {
Log.d("TAG", "Has Details");
}
}
}
}
} catch (Exception e) {
Log.d("TAG", "EXCEPTION: " + e.getMessage());
}
}
}
});
日志显示以下内容:
D/TAG (25995): IabHelber Init
D/TAG (25995): IabHelber Init - SUCCESS
D/TAG (25995): query Inventory - SUCCESS
D/TAG (25995): NO DETAILS
现在提供详细信息的原因是什么? 在执行测试购买时应该有提示的文档。我为什么要跑一个真实的"购买而不是?
答案 0 :(得分:1)
我无法找出为什么测试用户的购买不会作为测试购买处理。但是缺少产品细节的问题已经解决了:
我使用以下调用来查询库存:
googlePlayHelper.queryInventoryAsync(true, new IabHelper.QueryInventoryFinishedListener() { ... });
这是完全有效的代码,并且第一个参数(在此示例中为true)表明查询应该获取产品详细信息。但似乎这个参数在给出另一个参数之前没有任何影响:必须明确指定要获取的产品的ID:
List<String> productIDs = new ArrayList<String>();
productIDs.add(IAP_ID_1);
productIDs.add(IAP_ID_2);
productIDs.add(IAP_ID_3);
googlePlayHelper.queryInventoryAsync(true, productIDs, new IabHelper.QueryInventoryFinishedListener() { ... });