0

我正在尝试在我的应用中添加诺基亚 IAP,并遵循诺基亚应用内支付指南中所述的确切代码。

我已经使用测试 ID 进行了测试,我可以获得产品详细信息,也可以购买该商品。但是对于一个实际的产品,具有Published (revision 7)的发布状态,虽然我可以使用该getBuyIntent()方法购买它,但我无法获取产品详细信息。我在 AsyncTask 方法中使用getProductDetails()方法 doInBackground()。我通过以下方式从返回的包中获得响应:

ArrayList<String> responseList = result.getStringArrayList("DETAILS_LIST");

大小为 1,其中responseList包含 7 位产品 ID,如下所示:

{"isvalid":false,"productId":"*******"}

但它应该包含带有价格的产品详细信息,对吗?

此外,当我尝试使用getPurchases()方法恢复时,它返回错误代码 6。如果我尝试:

ArrayList<String> items = mBundle.getStringArrayList("INAPP_PURCHASE_ITEM_LIST");

items对象始终是null

任何人都可以请帮助什么是错的以及如何解决这些问题?我正在使用诺基亚 X 模拟器,我的产品 ID 是数字。谢谢!

4

3 回答 3

1

你在使用 setProductMappings 方法吗?如果没有,您是否为 getPurchases 提供 productBundle?其中之一是能够使用 getPurchases 所必需的。我不确定您为什么对 getProductDetails 有问题,但让我们先解决 getPurchases 问题。

于 2014-05-06T12:41:59.780 回答
1

我从内部专家那里得到的另一个原因可能是,如果您使用的是产品 ID 别名,那么您必须使用它。

因此,要从 publicer 门户检查项目,并查看您是否设置了Product ID Alias以及是否确实设置了它,然后查看您是否正在使用它。

于 2014-05-07T07:55:49.963 回答
1

对于getProductDetails()方法:

  • 根据Jukka 博士的回答,如果为产品创建了别名,则必须在代码中使用该别名,而不是默认的数字。

对于getPurchases()方法:

  • 所有获取购买的代码都应该在AsyncTask中。诺基亚应用内支付指南仅提及getProductDetails()方法不应在主线程中执行,并且没有为getPurchases()方法指定任何内容。我在恢复时没有使用AsyncTask,它总是返回错误代码 6。现在它使用AsyncTask工作。

注意但是该getBuyIntent()方法不需要AsyncTask,没有它也可以正常工作。

于 2014-05-09T19:53:26.053 回答