Android Google Play应用内计费:测试购买不起作用+;没有可用的产品详细信息
我正在尝试将谷歌的应用内账单添加到我的Android 4+应用中。我已按“”中所述设置了所有内容。现在,我已经将该应用程序上传到开发者控制台中的Alpha测试频道 此外,我还设置了一个测试帐户(),可以在不触发实际付款的情况下购买物品 在我的测试设备上从Play Store安装alpha版本后(当然使用测试帐户),存在两个问题:Android Google Play应用内计费:测试购买不起作用+;没有可用的产品详细信息,android,in-app-billing,google-play,Android,In App Billing,Google Play,我正在尝试将谷歌的应用内账单添加到我的Android 4+应用中。我已按“”中所述设置了所有内容。现在,我已经将该应用程序上传到开发者控制台中的Alpha测试频道 此外,我还设置了一个测试帐户(),可以在不触发实际付款的情况下购买物品 在我的测试设备上从Play Store安装alpha版本后(当然使用测试帐户),存在两个问题: 没有从Play Store获取任何产品信息。因此,我无法显示任何价格信息等 当我开始购买时,绝对没有任何暗示,这将是一个免费的测试购买。一切看起来都像是真正的购买 这是
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
现在获取详细信息的原因可能是什么?
文档说明在执行测试购买时应该有提示。为什么我要进行“真正的”购买呢?我无法找出为什么测试用户的购买不作为测试购买处理。但缺少产品详细信息的问题得到了解决: 我使用以下调用查询库存:
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() { ... });
List productIDs=new ArrayList();
productid.add(IAP_ID_1);
productId.add(IAP_ID_2);
productid.add(IAP_ID_3);
queryInventoryAsync(true,productId,new IabHelper.QueryInventoryFinishedListener(){…});
如果你的Play Store帐户已被激活,你是否已从该帐户检查你的应用内产品列表?是的,所有IAP的状态都是“活动”而“2my.product.id”SKU id存在于你的IAP列表中?是的,这是我检查的第一件事:-)否则我无法使用googlePlayHelper.launchPurchaseFlow(…,“my.product.id”,…)
开始购买。但这没有任何问题,除了没有暗示这将是一个测试购买。。。