已发布产品的Nokia X IAP getProductDetails()和getPurchases()错误

时间:2014-05-05 13:32:10

标签: android in-app-purchase in-app-billing nokia nokiax

我正在尝试在我的应用中添加诺基亚IAP,并遵循Nokia In-App Payment Guide中所述的确切代码。

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

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

responseList大小为1,它包含7位数的产品ID,如下所示:

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

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

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

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

items对象始终为null

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

因此,要检查来自公共门户网站的项目,看看您是否设置了产品ID别名,确实如果已经设置了它,那么就会看到您正在使用它。

答案 2 :(得分:1)

对于getProductDetails()方法:

  • 根据Dr. Jukka的答案,如果为产品创建了别名,则必须才能在代码中使用,而不是默认的数字。

对于getPurchases()方法:

  • 购买的所有代码都应在 AsyncTask 中。 Nokia In-App Payment Guide仅表示不应在主线程中执行getProductDetails()方法,并且没有为getPurchases()方法指定任何内容。我没有使用 AsyncTask ,同时还原总是返回错误代码6.现在它可以使用 AsyncTask

N.B。 getBuyIntent()方法不需要 AsyncTask ,没有它就可以正常工作。