1

我在我的 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. 邮件从 iframe 内的 Web 应用程序发送到执行 cordova 插件的包装器

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

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

  3. 然后我执行 buy();
4

1 回答 1

0

尝试确保您从 UI 线程调用 Buy。如果不调用 Store.CurrentApp.RequestProductPurchaseAsync,它会为我们崩溃。

于 2013-03-23T10:35:36.327 回答