我正尝试在我的应用中添加诺基亚IAP,并遵循诺基亚应用内支付指南中所述的确切代码。
我已经使用测试id进行了测试,我可以获得产品详细信息,也可以购买该项目。但是对于一个实际的产品,其发布状态为Published (revision 7),虽然我可以使用getBuyIntent()
方法购买它,但我无法获得产品详细信息。我在AsyncTask doInBackground()
方法中使用getProductDetails()
方法。我通过
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
。
谁能帮助什么是错的,如何解决这些?我使用的是Nokia X模拟器,我的产品id是数字。谢谢!
是否使用setProductMappings-method?如果没有,你是否为getPurchases提供了productBundle ?其中之一需要能够使用getpurchase。我不知道为什么你的getProductDetails有问题,但是让我们先解决getPurchases问题。
我从内部专家那里得到的另一个原因可能是,如果您正在使用产品ID别名,那么您必须使用它。
因此要检查来自发布者门户的项目,并查看您是否设置了产品ID别名,如果您确实设置了它,那么请查看您正在使用它。
对于getProductDetails()
方法:
- 根据Dr. Jukka的回答,如果为产品创建别名,那么必须在代码中使用而不是默认的数字。
对于getPurchases()
方法:
- 所有获得购买的代码应该在AsyncTask中。诺基亚应用内支付指南只提到
getProductDetails()
方法不应该在主线程中执行,getPurchases()
方法没有指定任何内容。我没有使用AsyncTask,同时恢复总是返回错误代码6。现在它使用AsyncTask工作。
注意: getBuyIntent()
方法不需要AsyncTask,没有它也可以正常工作。