【问题标题】:Nokia X IAP getProductDetails() and getPurchases() error for published product已发布产品的诺基亚 X IAP getProductDetails() 和 getPurchases() 错误
【发布时间】:2014-05-05 13:32:10
【问题描述】:

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

我已经使用测试 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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 不,我没有使用setProductMappings()。是的,我提供 productBundle,因为它是方法 getPurchases() 所需的参数。我正在按照 IAP 指南中的说明创建产品包。代码为:mBundle = mBillingService.getPurchases(NOKIA_IAP_API_VERSION, mContext.getPackageName(), ITEM_TYPE_INAPP, generateProductBundle(), null);generateProductBundle() 方法返回一个包含产品列表的捆绑包。
    【解决方案2】:

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

    因此从 publicer 门户中检查项目,查看您是否设置了 产品 ID 别名,如果您确实设置了它,那么请查看您正在使用它。

    【讨论】:

    • 谢谢,当我使用别名获取产品详细信息时,它现在对我有用。但修复仍然不起作用。恢复时返回的bundle不再为null,大小为1,但错误码仍为6。
    • 好的,您现在设法让我们的内部专家感到困惑。但是有一个问题,您是否将模拟器的 IMEI 更改为可用于真实设备(RDA 或其他)的某个值?
    • 一般来说,Real-ID的购买不应该起作用,所以你应该不能用真实ID在那里购买任何东西,但是如果具有设置IMEI的设备已经购买了该物品,它可能会显示其他结果。
    • 专家的另一个建议是尝试可恢复的测试 ID 1023623 来验证逻辑功能。
    • 不,我根本没有更改 IMEI 或模拟器内的任何内容。我也试过测试ID 1023623,它也没有恢复。相同的结果,大小为 1 和错误代码 6 的捆绑包。但我现在已经修复它,在下面发布答案。
    【解决方案3】:

    对于getProductDetails() 方法:

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

    对于getPurchases() 方法:

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

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

    【讨论】:

    • 感谢调查和澄清。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多