IAP在真正的WP8商店中不起作用

时间:2013-03-21 07:43:59

标签: c# in-app-purchase windows-phone-8

我的Windows Phone 8项目中有此代码,用于测试是否有带有产品ID密钥的产品。当我使用MockIAP时,一切都在开发中,但在我的应用程序发布后,我无法在网上商店购买。游戏崩溃了。

我的应用正在使用phonegap 2.3.0并通过iframe加载。它使用cordova插件执行buy()。

这是其他人如何为他们的WP8应用程序实现IAP(即首先下载所有列表信息)?

    private async void buy()
        {
            ListingInformation li = await Store.CurrentApp.LoadListingInformationAsync();

            if (li.ProductListings.ContainsKey(package_id))
            {
                string pID = li.ProductListings[package_id].ProductId;
                var receipt = await Store.CurrentApp.RequestProductPurchaseAsync(pID, true);
                parseXML(receipt);
                prepData();
                httpPostData();
                Store.CurrentApp.ReportProductFulfillment(pID);
            }
        }

这是在应用程序商店中输入的内容:

  • 应用内商品ID:pack1
  • 类型:消耗品
  • 应用内商品别名:1000学分
  • 基本价格:0.99美元
  • 国家:已发布
  • 标记:没有可用信息或没有提供任何内容
  • 关键字:没有可用信息或没有提供任何信息
  • 默认语言:英语
  • 标题:100学分
  • 应用内商品说明:无可用信息或未提供任何内容

更多细节:

这是执行buy()的步骤

  1. postmessage从iframe内的web应用程序发送到执行cordova插件的包装器

    pm.bind('purchase',function(e){             cordova.exec(app.purchase_success,app.purchase_failure,“InAppPurchase”,“buy”,[e.package_id,e.user_id])         },rooturl);

  2. 然后我将json对象反序列化为package_id和user_id变量

  3. 然后执行buy();

1 个答案:

答案 0 :(得分:0)

尝试确保从UI线程调用“购买”。如果没有从中调用,Store.CurrentApp.RequestProductPurchaseAsync用于崩溃。