管理加载项提交

Microsoft Store应用商店的提交 API 提供了用于管理应用加载项(也称为应用内产品或 IAP)提交的方法。 有关 Microsoft 应用商店提交 API 的简介,包括使用 API 的先决条件,请参阅 使用 Microsoft 应用商店服务创建和管理提交。

重要

如果使用 Microsoft 应用商店提交 API 为加载项创建提交,请确保仅使用 API 对提交进行进一步更改,而不是在合作伙伴中心进行更改。 如果使用合作伙伴中心更改最初使用 API 创建的提交,将无法再使用 API 更改或提交该提交。 在某些情况下,提交可能处于错误状态,无法继续提交过程。 如果发生这种情况,则必须删除提交并创建新提交。

管理插件提交的方法

使用以下方法获取、创建、更新、提交更改或删除附加组件提交。 在使用这些方法之前,加载项必须已存在于合作伙伴中心帐户中。 可以在合作伙伴中心内创建加载项,方法是 定义其产品类型和产品 ID ,或使用 管理加载项中所述的Microsoft应用商店提交 API 方法。

方法 URI DESCRIPTION
获取 https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{id}/submissions/{submissionId} 获取现有加载项提交
获取 https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{id}/submissions/{submissionId}/status 获取现有插件提交的状态
帖子 https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{id}/submissions 创建新的扩展组件提交
放置 https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{id}/submissions/{submissionId} 更新已提交的插件
帖子 https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{id}/submissions/{submissionId}/commit 提交新的或更新的加载项
删除 https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{id}/submissions/{submissionId} 删除插件提交

创建插件提交

若要为加载项创建提交,请遵循以下步骤。

  1. 如果尚未这样做,请完成 使用 Microsoft 应用商店服务创建和管理提交中所述的先决条件,包括将 Azure AD 应用程序与合作伙伴中心帐户关联并获取客户端 ID 和密钥。 只需执行一次;获取客户端 ID 和密钥后,可以随时重复使用它们,以创建新的 Azure AD 访问令牌。

  2. 获取 Azure AD 访问令牌。 在 Microsoft Store 提交 API 中,必须将此访问令牌传递给相关方法。 获取访问令牌后,在它到期前,你有 60 分钟的使用时间。 令牌过期后,可以获取一个新令牌。

  3. 在 Microsoft 应用商店提交 API 中执行以下方法。 此方法创建一个新的未完成的提交,它是您上次已发布提交的副本。 有关详细信息,请参阅 创建加载项提交

    POST https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{id}/submissions
    

    响应正文包含一个 加载项提交 资源,其中包括新提交的 ID、用于上传任何加载项图标到 Azure Blob 存储的共享访问签名(SAS)URI,以及新提交的所有数据(例如列表和定价信息)。

    注释

    SAS URI 提供对 Azure 存储中安全资源的访问权限,而无需帐户密钥。 有关 SAS URI 及其与 Azure Blob 存储配合使用的背景信息,请参阅 共享访问签名,第 1 部分:了解 SAS 模型共享访问签名,第 2 部分:创建 SAS 并将其与 Blob 存储配合使用

  4. 如果要为提交添加新 图标,请准备这些图标 并将其添加到 ZIP 存档。

  5. 根据新提交的要求对 加载项提交 数据进行必要的更改,并执行下述方法来更新提交。 有关更多信息,请参阅 更新插件提交

    PUT https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{id}/submissions/{submissionId}
    

    注释

    如果要为提交添加新图标,请确保更新提交数据以引用 ZIP 存档中这些文件的名称和相对路径。

  6. 如果要为提交添加新图标,请使用前面调用的 POST 方法响应正文中提供的 SAS URI 将 ZIP 存档上传到 Azure Blob 存储 。 可以使用不同的 Azure 库在各种平台上执行此操作,包括:

    以下 C# 代码示例演示如何使用适用于 .NET 的 Azure 存储客户端库中的 CloudBlockBlob 类将 ZIP 存档上传到 Azure Blob 存储。 此示例假定 ZIP 存档已写入流对象。

    string sasUrl = "https://productingestionbin1.blob.core.windows.net/ingestion/26920f66-b592-4439-9a9d-fb0f014902ec?sv=2014-02-14&sr=b&sig=usAN0kNFNnYE2tGQBI%2BARQWejX1Guiz7hdFtRhyK%2Bog%3D&se=2016-06-17T20:45:51Z&sp=rwl";
    Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob blockBob =
      new Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob(new System.Uri(sasUrl));
    await blockBob.UploadFromStreamAsync(stream);
    
  7. 通过执行以下方法提交。 这将提醒合作伙伴中心你已完成提交,并且你的更新现在应应用于你的帐户。 有关详细信息,请参阅 加载项提交

    POST https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{id}/submissions/{submissionId}/commit
    
  8. 通过执行以下方法检查提交状态。 有关详细信息,请参阅 查看加载项提交的状态

    GET https://manage.devcenter.microsoft.com/v1.0/my/inappproducts/{id}/submissions/{submissionId}/status
    

    若要确认提交状态,请查看响应正文中的 状态 值。 如果请求成功,此值应从 CommitStarted 更改为 PreProcessing;如果请求中存在错误,则此值应更改为 CommitFailed。 如果存在错误,statusDetails 字段包含有关错误的更多详细信息。

  9. 提交成功完成后,提交将发送到应用商店进行引入。 可以使用以前的方法或访问合作伙伴中心,继续监视提交进度。

代码示例

以下文章提供了详细的代码示例,演示如何使用多种不同的编程语言创建加载项提交:

StoreBroker PowerShell 模块

作为直接调用 Microsoft 应用商店提交 API 的替代方法,我们还提供一个开源 PowerShell 模块,该模块在 API 顶部实现命令行接口。 此模块名为 StoreBroker。 可以使用此模块从命令行管理应用程序、航班和加载项的提交,而不是直接调用 Microsoft Store 提交 API。您也可以查看源代码以了解如何调用此 API 的更多示例。 StoreBroker 模块在 Microsoft 中被主动用作许多第一方应用程序提交到应用商店的主要方式。

有关详细信息,请参阅 GitHub上的 StoreBroker 页。

数据资源

用于管理加载项提交的 Microsoft Store 提交 API 方法使用以下 JSON 数据资源。

插件提交资源

此资源描述加载项提交。

{
  "id": "1152921504621243680",
  "contentType": "EMagazine",
  "keywords": [
    "books"
  ],
  "lifetime": "FiveDays",
  "listings": {
    "en": {
      "description": "English add-on description",
      "icon": {
        "fileName": "add-on-en-us-listing2.png",
        "fileStatus": "Uploaded"
      },
      "title": "Add-on Title (English)"
    },
    "ru": {
      "description": "Russian add-on description",
      "icon": {
        "fileName": "add-on-ru-listing.png",
        "fileStatus": "Uploaded"
      },
      "title": "Add-on Title (Russian)"
    }
  },
  "pricing": {
    "marketSpecificPricings": {
      "RU": "Tier3",
      "US": "Tier4",
    },
    "sales": [],
    "priceId": "Free",
    "isAdvancedPricingModel": true
  },
  "targetPublishDate": "2016-03-15T05:10:58.047Z",
  "targetPublishMode": "Immediate",
  "tag": "SampleTag",
  "visibility": "Public",
  "status": "PendingCommit",
  "statusDetails": {
    "errors": [
      {
        "code": "None",
        "details": "string"
      }
    ],
    "warnings": [
      {
        "code": "ListingOptOutWarning",
        "details": "You have removed listing language(s): []"
      }
    ],
    "certificationReports": [
      {
      }
    ]
  },
  "fileUploadUrl": "https://productingestionbin1.blob.core.windows.net/ingestion/26920f66-b592-4439-9a9d-fb0f014902ec?sv=2014-02-14&sr=b&sig=usAN0kNFNnYE2tGQBI%2BARQWejX1Guiz7hdFtRhyK%2Bog%3D&se=2016-06-17T20:45:51Z&sp=rwl",
  "friendlyName": "Submission 2"
}

此资源具有以下值。

价值 类型 DESCRIPTION
id 字符串 提交的ID。 可在响应数据中使用此 ID,用于请求 创建加载项提交获取所有加载项,以及 获取单个加载项。 对于在合作伙伴中心创建的提交,此 ID 也可以在合作伙伴中心的提交页面的 URL 中提供。
内容类型 字符串 加载项中提供的 内容类型。 这可以是以下值之一:
  • 未设置
  • 图书下载
  • EMagazine
  • 电子报纸
  • 音乐下载
  • MusicStream
  • OnlineDataStorage
  • 视频下载
  • VideoStream
  • Asp
  • 在线下载
关键字 数组 包含最多 10 个 附加组件关键字 的一个字符串数组。 您的应用程序可以使用这些关键字查询加载项。
一生 字符串 加载项的生命周期。 这可以是以下值之一:
  • 永远
  • OneDay
  • ThreeDays
  • FiveDays
  • OneWeek
  • TwoWeeks
  • 一个月
  • TwoMonths
  • 三个月
  • 六个月
  • 一年
清单 物体 键值对字典,其中每个键都是双字母 ISO 3166-1 alpha-2 国家/地区代码,每个值都是一个 清单资源,其中包含插件的列表信息。
定价 物体 定价资源,其中包含加载项的定价信息。
目标发布模式 字符串 提交时的发布模式。 这可以是以下值之一:
  • 立刻
  • 手动
  • 具体日期
目标发布日期 字符串 如果 targetPublishMode 设置为 SpecificDate,则提交的发布日期应采用 ISO 8601 格式。
标签 字符串 加载项的 自定义开发人员数据(此信息以前称为 标记)。
能见度 字符串 加载项的可见性。 这可以是以下值之一:
  • 隐藏
  • 公众
  • 私人
  • 未设置
地位 字符串 提交的当前状态。 这可以是以下值之一:
  • 没有
  • 已取消
  • 待提交
  • 提交已开始
  • 提交失败
  • 待发表
  • 出版
  • 已发布
  • 发布失败
  • 预处理
  • 预处理失败
  • 认证
  • 认证失败
  • 释放
  • 发布失败
状态详情 物体 包含有关提交状态的附加详细信息的状态详细信息资源,其中包括任何错误的相关信息。
文件上传网址 字符串 用于上传提交任意包的共享访问签名 URI (SAS)。 如果要为提交添加新包,请将包含包的 ZIP 存档上传到此 URI。 有关详细信息,请参阅 创建加载项提交
友好名称 字符串 提交的友好名称,如合作伙伴中心所示。 创建提交时会为你生成此值。

列出资源

此资源包含加载项的 列表信息。 此资源具有以下值。

价值 类型 DESCRIPTION
描述 字符串 加载项列表的说明。
图标 物体 包含加载项列表图标数据的 图标资源
标题 字符串 加载项列表的标题。

图标资源

此资源包含加载项列表的图标数据。 此资源具有以下值。

价值 类型 DESCRIPTION
文件名 字符串 为提交上传的 ZIP 存档中的图标文件的名称。 该图标必须是一个 .png 文件,尺寸正好为 300 x 300 像素。
文件状态 字符串 图标文件的状态。 这可以是以下值之一:
  • 没有
  • 待上传
  • 已上传
  • 待删除

定价资源

此资源包含加载项的定价信息。 此资源具有以下值。

价值 类型 DESCRIPTION
市场特定定价 物体 键和值对字典,其中每个键是双字母 ISO 3166-1 alpha-2 国家/地区代码,每个值都是 价格层。 这些项目代表附加组件在特定市场中的 自定义价格。 此字典中的任何项替代 priceId 值针对特定市场所指定的基价。
销售额 数组 已弃用。 包含加载项销售信息的一组销售资源
priceId 字符串 价格层,指定加载项的 基准价格
isAdvancedPricingModel 布尔 如果 true,则开发人员帐户有权访问从 .99 美元到 1999.99 美元的扩展价格层集。 如果 false,则开发人员帐户有权访问从 0.99 美元到 999.99 美元的原始价格层集。 有关不同层的详细信息,请参阅 价格层

注意 此字段为只读。

销售资源

该资源包含加载项的销售信息。

重要

不再支持 销售 资源,目前无法使用 Microsoft 应用商店提交 API 获取或修改加载项提交的销售数据。 将来,我们将更新 Microsoft 应用商店提交 API,以引入以编程方式访问加载项提交的销售信息的新方法。

此资源具有以下值。

价值 类型 DESCRIPTION
姓名 字符串 销售的名称。
basePriceId 字符串 要用于销售基价的价格段
开始日期 字符串 销售开始日期,以 ISO 8601 格式表示。
结束日期 字符串 以 ISO 8601 格式表示的销售结束日期。
市场特定定价 物体 键和值对字典,其中每个键是双字母 ISO 3166-1 alpha-2 国家/地区代码,每个值都是 价格层。 这些项目代表附加组件在特定市场中的 自定义价格。 此字典中的任何项都替代指定市场 basePriceId 值指定的基价。

状态详情资源

此资源包含有关提交状态的其他详细信息。 此资源具有以下值。

价值 类型 DESCRIPTION
错误 物体 一个由包含提交错误详细信息的 状态详细信息资源组成的数组
警告 物体 状态详细信息资源数组,包含与提交相关的警告详细信息。
认证报告 物体 一系列 认证报告资源, 提供对提交的认证报告数据的访问权限。 如果认证失败,可以检查这些报告以了解详细信息。

状态详细信息资源

此资源包含有关提交时出现的相关错误或警告的更多信息。 此资源具有以下值。

价值 类型 DESCRIPTION
代码 字符串 描述错误或警告类型的 提交状态代码
详情 字符串 一条消息,其中包含有关该问题的更多详细信息。

认证报告资源

此资源提供对提交的认证报告数据的访问权限。 此资源具有以下值。

价值 类型 DESCRIPTION
日期 字符串 以 ISO 8601 格式生成报表的日期和时间。
报告网址 字符串 可访问报表的 URL。

枚举

这些方法使用以下枚举。

价格层级

以下值表示在 定价资源和 资源中可用于加载项提交的价格层级。

价值 DESCRIPTION
基础 价格等级未设置,因此使用加载项的基本价格。
不可用 加载项在指定区域中不可用。
免费 加载项是免费的。
xxxx 一个字符串,指定加载项的价格层,格式为 Tierxxxx。 目前,支持以下价格层范围:

  • 如果 isAdvancedPricingModel定价资源 的值为 true,则您的帐户可用的价格层级值为 层级1012 - 层级1424
  • 如果定价资源isAdvancedPricingModel 值为 false,则你的帐户的可用价格段值为 Tier2 - Tier96
若要查看开发人员帐户可用的价格层的完整表(包括与每个层关联的市场特定价格),请转到合作伙伴中心中任何应用提交的 定价和可用性 页面,然后单击 市场和自定义价格 部分中的 视图表 链接(对于某些开发人员帐户, 此链接位于 定价 部分)。

提交状态代码

以下值表示提交的状态代码。

价值 DESCRIPTION
没有 未指定任何代码。
无效的存档 包含包的 ZIP 存档无效或存档格式无法识别。
MissingFiles ZIP 存档不包含提交数据中列出的所有文件,或者它们位于存档中的错误位置。
包验证失败 提交中的一个或多个包未能验证。
无效的参数值 请求正文中的一个参数无效。
无效操作 您尝试的操作是无效的。
无效状态 您尝试的操作在软件包飞行的当前状态下无效。
资源未找到 找不到指定的软件包飞行。
服务错误 内部服务错误阻止请求成功。 再次尝试请求。
列表退出警告 开发人员从以前的提交中删除了一个列表,或者不包含程序包支持的列表信息。
列表选择加入警告 开发人员添加了一个列表。
UpdateOnlyWarning 开发人员正在尝试插入仅具有更新支持的内容。
其他 提交处于未被识别或未分类的状态。
软件包验证警告 包验证过程导致出现警告。