导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

Windows Phone 8 的应用内购买测试

2013/12/5

适用于:仅限于 Windows Phone 8。

应用内购买是 Windows Phone 8 中的新功能,它允许应用用户从 Windows Phone 8 应用内购买商品。在发布供购买的应用前,您有三个选项来测试应用中的应用内购买功能。

您可以通过以下任一方法测试 Windows Phone 应用中的应用内购买。

一种测试应用的应用内功能的方法是创建 开发人员中心 Beta 应用并添加 Beta 应用内产品。在 Windows Phone 开发人员中心 中,您可以将应用作为 Beta 应用上载到 Windows Phone 商店。然后,将您的 Beta 应用内产品添加到应用。使用 Beta 应用来测试应用内购买过程。

作为通过创建 开发人员中心 Beta 应用来测试应用内购买的替代方法,您可以将模拟应用内购买库添加到您的解决方案。在 Visual Studio 中,将模拟应用内购买库作为其他项目添加到您的解决方案。该库包含模拟应用内购买功能,通过使用模拟器该功能可用于来测试应用的应用内购买功能。当在本地测试应用时,您必须修改应用以调用包含在模拟库中的功能。

该简单的模拟库旨在令应用内购买的使用更方便,而无需设置实际服务。库是围绕应用内购买 API 的瘦包装。基于您如何初始化该库,它将模拟为测试定义的产品的所有响应,或将所有调用传递给活动的应用内购买 API。这使您可以通过使用实际的 API 或基于更改标志值的模拟 API 来面向各种测试方案。

该库旨在模拟应用内购买的工作方式。在“模拟模式”时,该库会维护收据的列表以及每个许可证的状态信息。这使您可以执行整个浏览、搜索、购买和实现的流程。在“模拟模式”时,该库不会激活应用内模拟购买屏幕,但会在模拟器中测试时提供一个简单的消息框以完成应用内购买流程。

下载模拟应用内购买库和示例应用

请从模拟应用内购买库下载模拟应用内购买库和示例应用。

使用模拟应用内购买库

模拟应用内购买库是用 C# 编写的。

在每个使用应用内购买功能的 .cs 文件中,包含了下面的 using 语句代码块:

#if DEBUG
using MockIAPLib;
using Store = MockIAPLib;
#else
using Windows.ApplicationModel.Store;
#endif

该语句使您可以在使用模拟库来测试应用内购买和将其作为已发布的应用并执行实际的应用内购买调用之间切换。当您测试时,必须在调试模式下生成应用。在调试模式下,在 Visual Studio 中的“解决方案配置”下拉列表中,单击“调试”。当您可以为 Windows Phone 商店 部署生成应用时,通过从“解决方案配置”下拉列表中选择“发布”更改到发布模式。

若要初始化模拟库,请将以下代码添加到在 App 函数结尾处的 App.xaml.cs 文件:

            SetupMockIAP();

然后,添加 SetupMockIAP 方法以初始化模拟库并添加虚拟产品。示例 SetupMockIAP 方法如下所示:

        private void SetupMockIAP()
        {
#if DEBUG
            MockIAP.Init();

            MockIAP.RunInMockMode(true);
            MockIAP.SetListingInformation(1, "en-us", "A description", "1", "TestApp");

            // Add some more items manually.
            ProductListing p = new ProductListing
            {
                Name = "img.2",
                ImageUri = new Uri("/Res/Image/2.jpg", UriKind.Relative),
                ProductId = "img.2",
                ProductType = Windows.ApplicationModel.Store.ProductType.Durable,
                Keywords = new string[] { "image" },
                Description = "An image",
                FormattedPrice = "1.0",
                Tag = string.Empty
            };
            MockIAP.AddProductListing("img.2", p);
#endif
        }

请注意,只有在该项目在调试模式下运行时,才会执行方法中包含的代码。

填充“应用内购买”产品的替代方法是使用列出了所有用于测试的提议的 XML 代码段。

该 XML 如下所示:

<?xml version="1.0"?>
<ProductListings>
    <ProductListing Key="test1" Purchased="true" Fulfilled="true">
        <Name>Testproduct</Name>
        <Description>A sample product listing</Description>
        <ProductId>test.durable.1</ProductId>
        <ProductType>Durable</ProductType>
        <FormattedPrice>$1.00</FormattedPrice>
        <ImageUri></ImageUri>
        <Keywords>test;product</Keywords>
        <Tag>Additional text</Tag>
    </ProductListing>
</ProductListings>

若要将该 XML 加载到“模拟储存区”,您可以使用以下方法调用:

MockIAP.PopulateIAPItemsFromXml(Xml);

说明注意:

当使用 XML 格式时,您可以通过将特性设置为 truefalse 来预设一个项是否为 PurchasedFulfilled

以下代码将演示如何加载要测试的产品。

ListingInformation li = await CurrentApp.LoadListingInformationAsync();
说明注意:

在使用模拟库测试时以及在作为已发布的应用运行时,该函数调用相同。库中包含一个可以用于清除模拟缓存(如收据和状态信息数据)的 API。调用 MockIAP.ClearCache 方法以清除模拟缓存。

有关使用模拟库的详细信息,请按照该主题下载模拟应用内购买库和示例应用部分中的描述下载模拟库和示例应用。

作为通过创建一个 开发人员中心 Beta 应用或通过向解决方案添加模拟应用内购买库来测试应用内购买的替代方法,您也可以通过使用 Microsoft Internet 信息服务 (IIS) 来设置应用内购买模拟服务。

通过使用 Visual Studio,您可以使用 Windows Phone 模拟器以测试您的应用的应用内购买行为。Windows Phone 模拟器连接到被部署到本地计算机或模拟器可到达的服务器的模拟服务。

使用模拟服务来测试应用内购买的优点

应用内购买模拟服务具有以下优点:

  • 通过使用 Windows Phone 模拟器来帮助您测试在开发过程中应用内购买的端到端流程。

  • 不需要您提交 开发人员中心 中的任何数据或更改任何代码来获得此解决方案函数。

  • 使您可以快速循环访问产品配置更改和与应用的集成。

  • 使您可以模拟应用和 Windows Phone 平台间的平台交互。

以下关系图阐释了在使用应用内购买模拟服务时相关的操作。

Mock Service

上图中的每个流程都在以下列表中进行描述。

  • A) 部署模拟服务:在 IIS 上下载并设置模拟服务。

  • B) 添加产品列表:添加并配置要测试的应用的模拟产品列表(目录)。

  • C) 列出产品:检索模拟产品的列表。

  • D) 购买产品:选择要购买的模拟产品并从模拟服务进行采购。

  • E) 枚举许可证:枚举所有可用于应用的产品的许可证并确定产品是否已被授权,或是否仍需要实现部分产品。

  • F) 确认实现:确认已成功购买模拟产品。

  • G) 获取收据:检索所有已购买的模拟产品的收据。

  • H) 实现:(可选)从您的服务器下载数字内容。

  • I) 发送许可证收据:(可选)如果实现购买需要数字内容,请通过您所拥有的或管理的服务下载该内容,并将已进行数字签名的购买收据传递给服务器。

先决条件

在开始之前,确保已在您的计算机上安装以下软件:

  • Visual Studio 2010 或更高版本

  • IIS 7 和 ASP.NET 4.5

    关于安装步骤,请参见安装 IIS 和 ASP.NET 模块

  • Web 部署

    若要部署模拟服务部署包,运行部署文件的计算机必须已安装 Web 部署 (msdeploy.exe)。有关如何安装 Web 部署的信息,请参见介绍 Web 部署

您可能还需要为 WCF 服务安装 HTTP 激活,并为对 IIS 的 HTTP 请求创建防火墙例外。有关详细信息,请参见如何从 Windows Phone 8 模拟器连接本地 Web 服务

设置模拟器

需要通过以下步骤来设置模拟器:

  1. 在本地计算机上部署模拟服务。

  2. 配置模拟器以连接到模拟服务。

  3. 配置产品目录以便您的应用使用。

  4. 更新您的应用清单以使用特定 APP ID。

步骤 1 - 在本地计算机上部署模拟服务

以下部署步骤涉及下载和设置模拟目录服务部署包。

下载模拟目录服务部署包

若要将模拟目录服务部署到 IIS,您必须下载模拟目录服务部署包,它以 zip 文件的形式包含在模拟目录服务源代码中。

说明注意:

有关自定义部署方案,请下载并修改模拟目录服务源代码

设置 IIS 上的模拟服务

  1. 打开 IIS 管理器。

  2. “连接”窗格中,右击层次中的“站点”节点,然后单击“添加网站”

  3. “添加网站”对话框中,将“站点名称”设置为:

    IAPCatalogMockService

  4. “物理路径”设置为:

    <path>\IapcatalogMockService\CatalogMockService

  5. 设置已部署站点的文件夹的权限,使 IIS_IUSRS 具有访问的权限。

  6. 根据以下步骤,部署使用名为 IAPCatalogMockService 的站点的 CatalogMock 服务包:

    1. 管理员身份打开命令提示符窗口。

    2. 打开名为 Mock-Project-Deployment Package\Deployment Package 的文件夹。

    3. 通过在命令提示处键入以下内容来部署模拟服务:

      CatalogServiceMockDeploymentPackage.deploy.cmd /Y

有关 IIS 的更多信息,请参见创建网站 (IIS 7)。请注意,与模拟服务相关的部署指令在 CatalogServiceMockDeploymentPackage.deploy-readme.txt 文件中也可获得。

验证模拟服务是否可用并已正确部署

  1. 通过运行以下 GET 请求来支持获得命令列表:

    http://localhost/v8/help

    响应应该包含以下内容:

    URI

    方法

    说明

    /catalog/apps/{appid}

    GET

    在http://localhost/v8/catalog/apps/{APPID}上的服务

    /catalog/apps/{appid}/iaps

    POST

    在http://localhost/v8/catalog/apps/{APPID}上的服务

    /images/{imageid}

    GET

    在http://localhost/v8/images/{IMAGEID}上的服务

  2. 能够看到通过发出以下 GET 请求返回的预配置图像:

    http://[machine IP address]/v8/images/102a19e4-e6f2-495a-acc7-203bb6c742b9?imagetype=icon_iap

    说明注意:

    您可以通过从命令窗口 (cmd.exe) 输入的 ipconfig 来检索计算机 IP 地址。

    窗口 IP 配置将显示在命令窗口中。找到在以太网适配器 vEthernet(内部以太网端口 Windows Phone 模拟器内部开关)部分中的 IPv4 地址旁边的 IP 地址。

    通过检查名为 Testcalls.txt 的文件来验证服务将处理的其他调用。Testcalls.txt 的文件可以在下载包的根处找到。有关更多信息,请参见下载模拟目录服务部署包

步骤 2 - 配置模拟器以连接到模拟目录服务

本节描述如何配置 Windows Phone 模拟器以连接到您在服务器上部署的模拟服务。如果您已经在设置了 Windows Phone 模拟器的同一台计算机上部署了模拟服务,您需要获得与模拟器相关联的 IP 地址。本节描述如何获得与模拟器相关联的 IP 地址。

按照这些步骤将模拟器指向模拟服务:

  1. 安装 Windows Phone SDK 8.0(如果尚未安装)。

  2. 移除 VHD 中的只读标志。

    1. 打开“文件资源管理器”并定位到 C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v8.0\Emulation\Images

    2. 移除每个差异 VHD 的只读特性。例如,右击文件 Flash.480x800.vhd -> “属性”。清除“只读”,然后按“确定”

  3. 打开“磁盘管理”

    • 选择“操作”,然后选择“附加 VHD”以在您的计算机上装入新的虚拟硬盘驱动器(磁盘)。

      对每个要使用的受支持的分辨率重复此步骤。

  4. 使用下列步骤,找到包含 HOSTS 文件的窗口分区:

    1. 使用“文件资源管理器”,并定位到位于 [drive]\Windows\System32\drivers\etcetc 文件夹。

    2. “记事本”作为管理员打开。

    3. “记事本”中,基于从“文件资源管理器”中找到的路径打开 HOST 文件。

    4. 按照此格式在 HOST 文件中添加项:

      #<模拟器模拟服务的 IP 地址> marketplaceedgeservice.windowsphone.com

      重要说明重要说明:

      请务必按照此步骤,以便模拟服务正常工作。

    5. 保存该文件。请确保不要将该文件保存为 .txt 文件。

  5. 通过右击磁盘并选择“分离 VHD”来分离您以前创建的 VHD 磁盘

  6. 根据以下步骤,使用 Hyper V-Manager 移除 VHD 的缓存副本:

    1. 启动 Hyper V-Manager

    2. 连接到您的本地计算机。

      您将看到列出的虚拟机。查找模拟器 WVGA.% 计算机名称 %

    3. 如果模拟器尚未关闭,则右击“关闭”

    4. 右击“删除”

  7. 当从您的 Windows Phone 应用中运行模拟器时,请确保您所运行的 VHD 模拟器与已更新上面的主机文件的 VHD 模拟器相同。

步骤 3 - 配置您的应用要使用的产品目录

通过修改相关联的 XML 来配置您的应用内购买产品目录。您将在已部署模拟服务的文件夹中找到名为 iapcatalog.xml 的 XML 文件。

模拟服务将 XML 用作输入。服务根据应用目录的路径读取此 XML 文件 (iapcatalog.xml)。

该 XML 已设置为如下格式:

<Catalog>
  <Item> 
    <ProductId>Test1</ProductId> <!—The unique Product Identifier -->
    <Title>Test Item 1</Title> 
    <Description>This is a test item</Description>
    <Type>iapconsumable</Type>
    <Tag>
      { Order: 1, Rewards: [ { Name: 'Credits', Quantity: 100 }, { Name: 'Coins', Quantity: 10000 } ] }
    </Tag>
  </Item>
</Catalog>

有关产品目录 XML 文件中元素的详细信息,请参见应用内产品属性

步骤 4 - 更新您的清单以使用特定 APP ID

更新应用的清单文件以使用您用来与模拟服务进行通信的 APP ID。

在 Visual Studio 中,将值更新至如下所示:

ee29a261-80d0-4bdf-89bd-28b1ebbc8bd3

运行您的应用

您现在可以在测试模式中运行应用。应用将调用模拟服务而不会尝试调用 商店 服务。

显示:
© 2014 Microsoft