{"value":"### **第一章 概述**\n\n为了给企业提供更加易用的应用层软件,越来越多的软件提供商推出了 SaaS 产品。亚马逊云科技 Marketplace(以下简称 Marketplace)是一个提供甄选的数字化产品的平台,能够帮助 SaaS 厂商降低销售成本,触达更多的客户,是很多 SaaS 厂商的首选。Marketplace 分海外区和中国区,很多中国的 SaaS 厂商,为了能够拓展海外业务,计划在 Marketplace 海外区上线 SaaS 产品。本文将介绍 Marketplace 海外区中的 SaaS 产品及其计价模式,以及如何上线 SaaS 产品。\n\n### **第二章 Marketplace SaaS 产品介绍**\n\n#### **2.1 SaaS 产品计价模式**\n\nMarketplace 上 SaaS 产品共有三种计价模式:\n\n- SaaS Subscription: 按使用量收费。厂商给出计价维度,以及相应维度上的收费标准。最终根据用户在相应维度上的使用量来收费。计价维度包括:Bandwidth/Data/Hosts/Request/Users/Unit。对于用户而言,是先使用产品,然后按月根据用量支付费用。\n- SaaS Contract:按合约收费。厂商给出1月/1年/2年/3年的合约价格。用户需要先付费,然后才能使用产品。合约到期后,用户需要续合约才能继续使用产品。\n- SaaS Contract with Subscription: 相当于以上两种模式的结合。厂商给出1月/1年/2年/3年的合约价格,以及超出合约期后,按量收费的标准。用户先付合约费,然后开始使用产品,假如合约到期,则转成按量收费,用户接着按月根据用量支付费用。\n\n#### **2.2 Marketplace SaaS 产品用户体验**\n\n1. 用户在 Marketplace 上搜索到相应的 SaaS 产品后,点开产品页面,可以看到 SaaS 产品介绍和价格信息。\n2. 点击订阅后,会跳转到确认页面。\n3. 如果是 SaaS Subscription 产品,确认页面需要确认用户许可协议。如果是 SaaS Contract 或者 SaaS Contract with Subscription 产品,用户需要在确认页面选择所选购的合约,同时确认用户许可协议。\n4. 确认用户许可协议后,点击设置新账户,即可跳转到 SaaS 产品的注册登录页面,注册登录后即可使用 SaaS 产品。\n5. SaaS 产品的账单和 Amazon Web Service 的基础服务账单是集成的,用户可以统一支付。\n\n#### **2.3 相关要求**\n\n对于上架的 SaaS 产品,有以下主要要求\n\n- 您的 SaaS 应用必须至少有一部分部署在 Amazon Web Services 中 (至少一部分软件组件托管在 Amazon Web Services 中) 。\n- 不能售卖免费的 SaaS 产品。\n- 不能收集客户付款信息,包括信用卡和银行账户信息。\n- 用户在 Marketplace 订阅您的 SaaS 产品后,应该能够在您的 SaaS 应用程序中创建帐户,且在两个工作日内访问您的 SaaS 系统。\n\n### **第三章 Marketplace 海外区 SaaS 上线流程**\n\n#### **3.1 注册成为 Marketplace 海外区的卖家**\n\n您需要首先拥有一个AWS的账号,然后通过一下网址注册成为卖家:\n\n[https://aws.amazon.com/marketplace/management/seller-settings/register](https://aws.amazon.com/marketplace/management/seller-settings/register)\n\n如果您上线的是完全免费的产品,Marketplace 对于公司法律实体所在地没有要求。假如您售卖的是 Paid 或者 BYOL(Bring Your Own License 自带软件许可)产品,Marketplace 要求您公司的法律实体必须属于以下国家和地区之一:\n\n- Australia\n- Bahrain\n- European Union (EU) member state\n- Hong Kong SAR\n- Japan\n- New Zealand\n- Norway\n- Qatar\n- Switzerland\n- United Arab Emirates (UAE)\n- United Kingdom (UK)\n- United States (US)\n\n同时需要您拥有美国银行账户。如果您没有实体的美国银行账户,注册过程中会引导您通过 HyperWallet 开通虚拟美国银行账户。详情请参加[注册卖家指南](https://docs.aws.amazon.com/marketplace/latest/userguide/user-guide-for-sellers.html)。\n\n##### **请注意:因为 SaaS 属于付费产品(Paid Product),所以您公司的法律实体必须满足以上要求,且拥有美国银行账户,才能上线 SaaS 产品。**\n\n#### **3.2在 Amazon Web Services Marketplace Management Portal 中提交产品信息**\n\n登录 Amazon Web Services Marketplace Management Portal(AMMP), 点击 Products->SaaS,根据您的 SaaS 产品的计价模式选择新建产品类型。如果是 SaaS Subscription,选择”New SaaS Subscription”,如果是 SaaS Contract 或者 SaaS Contract with Subscription,选”New SaaS Contract”。\n\n![image.png](https://dev-media.amazoncloud.cn/2dc31beeb379498f865aecfe3ca55d75_image.png)\n\n继续填写相应的产品信息,其中比较重要的几项信息:\n\n- General 页面下的”SaaS URL”: 这个是用户在 Marketplace 上订阅您的产品后,将会跳转到的您的 SaaS 产品登录页面。\n- Pricing 页面:填写您的产品价格信息。\n- 如果是 SaaS Contract 类型产品,需要根据套餐的时长(1月/1年/2年/3年)来设定相应的价格。\n- 如果是 SaaS Subscription 类型产品,需要设置相应的计价维度和每个维度上的计价标准。其中 Dimension API Name 是用于 API 集成时维度的名字,对最终用户不可见。Dimension Description 为计价维度描述,会展示在产品页面。Dimension Rate 为该维度的收费标准,以美金为单位,为税前价格。\n\n您填写完相关产品信息后,可以提交产品。后台人员收到您的产品信息后,会给您生成产品测试页面,并给您回复邮件。邮件内容会包括:\n\n- Product Page for Limited Test: 产品页面,您需要登录您的卖家 Amazon Web Service 账号后,才能查看。\n- Product Code: 产品唯一标识码,用于 API 集成。\n- SNS Topic: 需要您在 API 集成过程中,订阅的 SNS 主题。当用户订阅的状态发生改变时,会向您发 SNS 消息。\n\n#### **3.3 API 集成**\n\n##### 3.3.1 SaaS Subscription API 集成\n\n对于 Subscription 类型的 SaaS 产品上线而言,一共有三个 API 需要集成,集成工作发生在 Product Limited Test 这一步,在该步骤,您获得了用于测试和模拟买家行为的的产品页面,用于 API 交互的参数 Product Code 以及用于接收订阅变化的 SNS Topic。\n\n您也可以根据自身情况提前进行集成代码的逻辑性开发,并在 Product Limited Test 这一步快速进行测试以加速您的上线流程。\n\n- 接收新用户 API:**ResolveCustomer**\n\n当一个用户从 Amazon Web Services Marketplace 订阅并跳转到您的 SaaS 应用程序后,您将会面临您的应用程序与 Amazon Web Services 进行用户对接的过程,该用户在第一次到达您的 SaaS 应用程序时,他具备 Amazon Web Service 的账户身份,同时该用户在您的 SaaS 应用程序中载入后,他也具备您的 SaaS 租户属性,为了日后您与 Amazon Web Services Marketplace 进行交互,您需要在这一步骤中进行 API 集成,完成该用户2个身份的绑定。\n\nResolveCustomer API 是整个 SaaS API 集成的第一步,也是客户通过 Amazon Web Services Marketplace 进入到您的 SaaS 应用的第一步,在这一步骤中,我们需要通过该 API 完成两部分工作:\n\n- 验证新客户\n\n在客户订阅您的产品后,他们将被重定向到执行的 URL。该重定向是一个 POST 请求,包括一个临时令牌。然后,您的应用程序需要通过调用 Amazon Web Services Marketplace 计量服务 API 中的ResolveCustomer,将令牌换成客户 ID。在获得客户 ID 后,将其保存在您的应用程序中,以便将来调用。\n\n- 载入您的新客户\n\n在成功地验证了一个客户后,让他们加入您的应用程序。例如,让他们填写一个表格来创建一个新的用户账户。或者,为他们提供进入应用程序的后续步骤。您的应用程序可以根据客户的信息来自动化的装载该客户所需要的后续资源与服务。\n\n![image.png](https://dev-media.amazoncloud.cn/16cfea431bef44d9b31958112eec3330_image.png)\n\n如上图所示,在使用 ResolveCustomer API 的过程中,首先需要从 Http Request 中获取 token,当客户从 Amazon Web Services Marketplace 跳转到您的应用程序过程中,Amazon Web Services Marketplace 会给您上线过程中提交的 URL 发送 POST 请求,您需要从该请求中通过获取 x-amzn-marketplace-token 获取该用户的身份token,然后调用 ResolveCustomer API 获得 CustomerIdetifier 和 ProductCode,其中 CustomerIdetifier 为该客户在 Amazon Web Services 上身份的标示,ProductCode 是产品的唯一标识码。\n\n您需要将 CustomerIdetifier 与 ProductCode 基于您应用程序逻辑进行业务处理,并用于后续该用户与 Amazon Web Services Marketplace API 交互。\n\n- 发送计量记录 API:**BatchMeterUsage**\n\n基于 Subscription 的 SaaS 应用程序与 Amazon Web Services Marketplace API 集成,需要以小时为间隔调用 BatchMeterUsage API 向 Amazon Web Services Marketplace 传送客户在 SaaS 应用程序中的用量。\n\n您使用 Amazon Web Services Marketplace 计量服务中的 BatchMeterUsage 操作,代表您的客户向 Amazon Web Services 交付计量记录。我们建议使用 CloudTrail 来监控活动,以确保计费信息被发送到 Amazon Web Services Marketplace。在发送计量记录时请记住:\n\n- Marketplace 按小时对计量请求进行去重复化处理\n- 每小时发送的记录是累积的\n- 最佳做法是每小时发送记录,即使数量为0\n\n![image.png](https://dev-media.amazoncloud.cn/22b79c178c234d1886e056ae69fe9716_image.png)\n\n如上图所示,您可以将多个产品与多个用户的用量在同一个 API 中传送给 Amazon Web Services Marketplace。BatchMeterUsage API 中,维度名字需要与您上线过程中,在 AMMP 中所填写的 Dimension API Name 相同。\n\n- 监控订阅状态的变化\n\n通过订阅和监控 SNS Topic,如果用户的订阅状态发生了变化,您会收到 Marketplace 发出的 SNS 消息。您需要对这些消息进行处理,相关工作包括:\n\n设置一个 SQS 队列并订阅您产品的 SNS Topic。该主题提供关于客户订阅变化的通知。这使您能够知道何时为特定的客户提供和撤销访问。消息类型包括:subscribe-success, subscribe-fail, unsubscribe-pending, unsubscribe-success。\n\n在你收到 subscribe-success 的消息后,客户账户就可以进行计量了。你在这个通知之前发送的记录不会被统计。此外,我们建议您在收到这一消息后,再给用户分配 SaaS 资源。\n\n#### **3.3.2 SaaS Contract API集成**\n\n对于 Contract 类型的 SaaS 产品上线而言,一共有三个 API 需要集成,集成工作发生在 Product Limited Test这一步的过程中,在该步骤,您获得了用于测试和模拟买家行为的的产品页面,用于 API 交互的参数 Product Code 以及用于接收订阅变化的 SNS Topic。\n\n您也可以根据自身情况提前进行集成代码的逻辑性开发,并于 Product Limited Test 这一步快速进行测试以加速您的上线流程。\n\n- 接收新用户 API:**ResolveCustomer**\n\n当一个用户从 Marketplace 订阅并跳转到您的 SaaS 应用程序后,您将会面临您的应用程序与 Marketplace 进行用户对接的过程,该用户在第一次到达您的 SaaS 应用程序时,他具备 Amazon Web Service 的账户身份,同时该用户在您的 SaaS 应用程序中载入后,他也具备您的 SaaS 租户属性,为了日后您与 Amazon Web Services Marketplace进行交互,您需要在这一步骤中进行 API 集成,完成该用户2个身份的绑定。\n\nResolveCustomer API 是整个 SaaS API 集成的第一步,也是客户通过 Amazon Web Services Marketplace 进入到您的 SaaS 应用的第一步,在这一步骤中,我们需要通过该API完成两类工作:\n\n- 验证新客户\n\n在客户订阅您的产品后,他们将被重定向到执行的 URL。该重定向是一个 POST 请求,包括一个临时令牌。然后,您的应用程序需要通过调用Amazon Web Services Marketplace 计量服务 API 中的 ResolveCustomer,将令牌换成客户 ID。在获得客户 ID 后,将其保存在您的应用程序中,以便将来调用。\n\n- 载入您的新客户\n\n在成功地验证了一个客户后,让他们加入您的应用程序。例如,让他们填写一个表格来创建一个新的用户账户。或者,为他们提供进入应用程序的后续步骤。您的应用程序可以根据客户的信息来自动化地装载该客户所需要的后续资源与服务。\n\n![image.png](https://dev-media.amazoncloud.cn/317b93307b7840e6ad423c48ded9e47d_image.png)\n\n如上图所示,在使用 ResolveCustomer API 的过程中,首先需要从 Http Request 中获取 token,当客户从 Marketplace 跳转到您的应用程序过程中,Marketplace 会给您上线过程中提交的 URL 发送 POST 请求,您需要从该请求中通过获取 x-amzn-marketplace-token 获取该用户的身份 token,然后调用 ResolveCustomer API 获得 CustomerIdetifier 和 ProductCode,其 CustomerIdetifier\n\n为该客户在 Amazon Web Services 上身份的标示,ProductCode 是产品的唯一标识符。\n\n您需要将 CustomerIdetifier 与 ProductCode 基于您应用程序逻辑进行业务处理,并用于后续该用户与 Marketplace API 交互。\n\n- 查看合约信息 API:**GetEntitlements**\n\n基于 Contract 的 SaaS 应用程序与 Marketplace API 集成,您可以调用 GetEntitlements API 来获得客户在 Amazon Web Services Marketplace 购买的 Contract 具体信息,您的应用程序可以根据相关业务逻辑使用这些 Contract 信息。\n\n基于 Contract 的 SaaS 应用程序在上线过程中,您定义了产品的合约类型,包括合约包含的服务以及持续时间。用户在订阅产品的过程中,会选择相应的 Contract。您在 GetEntitlements API 的返回中会得用户所选择的 Contract 信息,您可以保存这些信息,也可以在相关的用户行为中持续调用该 API 检查客户选择的合约,以便给客户提供相应的服务。\n\n- 监控订阅状态的变化\n\n通过订阅和监控 SNS Topic,当用户的订阅状态以及合约状态的发生变化时,您会收到相关消息,您需要对其进行处理:\n\n设置一个 SQS 队列并订阅您产品的SNS主题。该主题提供关于客户订阅和权利状态变化的通知,这使您能够知道何时为特定客户提供和撤销访问权。消息类型包括:subscribe-success, subscribe-fail, unsubscribe-pending, unsubscribe-success, entitlement-updated.\n\n#### **3.4端到端集成测试**\n\n当您完成 API 集成,并且已经测试过之后,可以邮件通知 Marketplace 海外区运营团队。我们会有相关人员和您预约会议,进行端到端测试。测试内容主要包括\n\n- 产品页面内容显示正常,价格信息正确,最终用户许可协议能正常打开。\n- 用户能正常完成 SaaS 产品注册流程。\n- Marketplace 后台查到您 API 调用的成功记录。\n\n#### **3.5正式发布**\n\n当您通过端到端集成测试后,Marketplace 后台会给您发信,让您确认所有信息都无误。您回复邮件确认后,即可正式上线。\n\n### **参考资料**\n\nAmazon Web Services Marketplace 海外区卖家指南\n[https://docs.aws.amazon.com/marketplace/latest/userguide/what-is-marketplace.html](https://docs.aws.amazon.com/marketplace/latest/userguide/what-is-marketplace.html)\n\nAmazon Web Services Marketplace 海外区上线 SaaS 产品指南\n[http://awsmpcnsaasguideline.s3-website.cn-northwest-1.amazonaws.com.cn/en/](http://awsmpcnsaasguideline.s3-website.cn-northwest-1.amazonaws.com.cn/en/)\n\nSaaS API 集成介绍\n[https://awsmp-loadforms.s3.amazonaws.com/AWS+Marketplace+-+SaaS+Integration+Guide.pdf](https://awsmp-loadforms.s3.amazonaws.com/AWS+Marketplace+-+SaaS+Integration+Guide.pdf)\n\nSaaS API 接口文档\n[https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/marketplace-entitlement.html](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/marketplace-entitlement.html)\n\n[https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/meteringmarketplace.html](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/meteringmarketplace.html)\n\n使用 [Amazon SQS](https://aws.amazon.com/cn/sqs/?trk=cndc-detail)\n[http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-create-queue.html](http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-create-queue.html)\n\n使用 IAM 角色委托解决卖家账号不是 SaaS 生产账号的问题\n[https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html)\n\n### **本篇作者**\n\n![image.png](https://dev-media.amazoncloud.cn/767d50b0e91c4e0e8ed8a99fcc5d1733_image.png)\n\n#### **张明月**\n\n合作伙伴解决方案架构师\n\n![image.png](https://dev-media.amazoncloud.cn/45268aeaf2cd4a35bdf9c80f3104dbf5_image.png)\n\n#### **韩亮**\n\nAmazon Web Services Marketplace 技术客户经理","render":"<h3><a id=\\"__0\\"></a><strong>第一章 概述</strong></h3>\\n<p>为了给企业提供更加易用的应用层软件,越来越多的软件提供商推出了 SaaS 产品。亚马逊云科技 Marketplace(以下简称 Marketplace)是一个提供甄选的数字化产品的平台,能够帮助 SaaS 厂商降低销售成本,触达更多的客户,是很多 SaaS 厂商的首选。Marketplace 分海外区和中国区,很多中国的 SaaS 厂商,为了能够拓展海外业务,计划在 Marketplace 海外区上线 SaaS 产品。本文将介绍 Marketplace 海外区中的 SaaS 产品及其计价模式,以及如何上线 SaaS 产品。</p>\n<h3><a id=\\"__Marketplace_SaaS__4\\"></a><strong>第二章 Marketplace SaaS 产品介绍</strong></h3>\\n<h4><a id=\\"21_SaaS__6\\"></a><strong>2.1 SaaS 产品计价模式</strong></h4>\\n<p>Marketplace 上 SaaS 产品共有三种计价模式:</p>\n<ul>\\n<li>SaaS Subscription: 按使用量收费。厂商给出计价维度,以及相应维度上的收费标准。最终根据用户在相应维度上的使用量来收费。计价维度包括:Bandwidth/Data/Hosts/Request/Users/Unit。对于用户而言,是先使用产品,然后按月根据用量支付费用。</li>\n<li>SaaS Contract:按合约收费。厂商给出1月/1年/2年/3年的合约价格。用户需要先付费,然后才能使用产品。合约到期后,用户需要续合约才能继续使用产品。</li>\n<li>SaaS Contract with Subscription: 相当于以上两种模式的结合。厂商给出1月/1年/2年/3年的合约价格,以及超出合约期后,按量收费的标准。用户先付合约费,然后开始使用产品,假如合约到期,则转成按量收费,用户接着按月根据用量支付费用。</li>\n</ul>\\n<h4><a id=\\"22_Marketplace_SaaS__14\\"></a><strong>2.2 Marketplace SaaS 产品用户体验</strong></h4>\\n<ol>\\n<li>用户在 Marketplace 上搜索到相应的 SaaS 产品后,点开产品页面,可以看到 SaaS 产品介绍和价格信息。</li>\n<li>点击订阅后,会跳转到确认页面。</li>\n<li>如果是 SaaS Subscription 产品,确认页面需要确认用户许可协议。如果是 SaaS Contract 或者 SaaS Contract with Subscription 产品,用户需要在确认页面选择所选购的合约,同时确认用户许可协议。</li>\n<li>确认用户许可协议后,点击设置新账户,即可跳转到 SaaS 产品的注册登录页面,注册登录后即可使用 SaaS 产品。</li>\n<li>SaaS 产品的账单和 Amazon Web Service 的基础服务账单是集成的,用户可以统一支付。</li>\n</ol>\\n<h4><a id=\\"23__22\\"></a><strong>2.3 相关要求</strong></h4>\\n<p>对于上架的 SaaS 产品,有以下主要要求</p>\n<ul>\\n<li>您的 SaaS 应用必须至少有一部分部署在 Amazon Web Services 中 (至少一部分软件组件托管在 Amazon Web Services 中) 。</li>\n<li>不能售卖免费的 SaaS 产品。</li>\n<li>不能收集客户付款信息,包括信用卡和银行账户信息。</li>\n<li>用户在 Marketplace 订阅您的 SaaS 产品后,应该能够在您的 SaaS 应用程序中创建帐户,且在两个工作日内访问您的 SaaS 系统。</li>\n</ul>\\n<h3><a id=\\"_Marketplace__SaaS__31\\"></a><strong>第三章 Marketplace 海外区 SaaS 上线流程</strong></h3>\\n<h4><a id=\\"31__Marketplace__33\\"></a><strong>3.1 注册成为 Marketplace 海外区的卖家</strong></h4>\\n<p>您需要首先拥有一个AWS的账号,然后通过一下网址注册成为卖家:</p>\n<p><a href=\\"https://aws.amazon.com/marketplace/management/seller-settings/register\\" target=\\"_blank\\">https://aws.amazon.com/marketplace/management/seller-settings/register</a></p>\\n<p>如果您上线的是完全免费的产品,Marketplace 对于公司法律实体所在地没有要求。假如您售卖的是 Paid 或者 BYOL(Bring Your Own License 自带软件许可)产品,Marketplace 要求您公司的法律实体必须属于以下国家和地区之一:</p>\n<ul>\\n<li>Australia</li>\n<li>Bahrain</li>\n<li>European Union (EU) member state</li>\n<li>Hong Kong SAR</li>\n<li>Japan</li>\n<li>New Zealand</li>\n<li>Norway</li>\n<li>Qatar</li>\n<li>Switzerland</li>\n<li>United Arab Emirates (UAE)</li>\n<li>United Kingdom (UK)</li>\n<li>United States (US)</li>\n</ul>\\n<p>同时需要您拥有美国银行账户。如果您没有实体的美国银行账户,注册过程中会引导您通过 HyperWallet 开通虚拟美国银行账户。详情请参加<a href=\\"https://docs.aws.amazon.com/marketplace/latest/userguide/user-guide-for-sellers.html\\" target=\\"_blank\\">注册卖家指南</a>。</p>\\n<h5><a id=\\"_SaaS_Paid_Product_SaaS__56\\"></a><strong>请注意:因为 SaaS 属于付费产品(Paid Product),所以您公司的法律实体必须满足以上要求,且拥有美国银行账户,才能上线 SaaS 产品。</strong></h5>\\n<h4><a id=\\"32_Amazon_Web_Services_Marketplace_Management_Portal__58\\"></a><strong>3.2在 Amazon Web Services Marketplace Management Portal 中提交产品信息</strong></h4>\\n<p>登录 Amazon Web Services Marketplace Management Portal(AMMP), 点击 Products->SaaS,根据您的 SaaS 产品的计价模式选择新建产品类型。如果是 SaaS Subscription,选择”New SaaS Subscription”,如果是 SaaS Contract 或者 SaaS Contract with Subscription,选”New SaaS Contract”。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/2dc31beeb379498f865aecfe3ca55d75_image.png\\" alt=\\"image.png\\" /></p>\n<p>继续填写相应的产品信息,其中比较重要的几项信息:</p>\n<ul>\\n<li>General 页面下的”SaaS URL”: 这个是用户在 Marketplace 上订阅您的产品后,将会跳转到的您的 SaaS 产品登录页面。</li>\n<li>Pricing 页面:填写您的产品价格信息。</li>\n<li>如果是 SaaS Contract 类型产品,需要根据套餐的时长(1月/1年/2年/3年)来设定相应的价格。</li>\n<li>如果是 SaaS Subscription 类型产品,需要设置相应的计价维度和每个维度上的计价标准。其中 Dimension API Name 是用于 API 集成时维度的名字,对最终用户不可见。Dimension Description 为计价维度描述,会展示在产品页面。Dimension Rate 为该维度的收费标准,以美金为单位,为税前价格。</li>\n</ul>\\n<p>您填写完相关产品信息后,可以提交产品。后台人员收到您的产品信息后,会给您生成产品测试页面,并给您回复邮件。邮件内容会包括:</p>\n<ul>\\n<li>Product Page for Limited Test: 产品页面,您需要登录您的卖家 Amazon Web Service 账号后,才能查看。</li>\n<li>Product Code: 产品唯一标识码,用于 API 集成。</li>\n<li>SNS Topic: 需要您在 API 集成过程中,订阅的 SNS 主题。当用户订阅的状态发生改变时,会向您发 SNS 消息。</li>\n</ul>\\n<h4><a id=\\"33_API__77\\"></a><strong>3.3 API 集成</strong></h4>\\n<h5><a id=\\"331_SaaS_Subscription_API__79\\"></a>3.3.1 SaaS Subscription API 集成</h5>\\n<p>对于 Subscription 类型的 SaaS 产品上线而言,一共有三个 API 需要集成,集成工作发生在 Product Limited Test 这一步,在该步骤,您获得了用于测试和模拟买家行为的的产品页面,用于 API 交互的参数 Product Code 以及用于接收订阅变化的 SNS Topic。</p>\n<p>您也可以根据自身情况提前进行集成代码的逻辑性开发,并在 Product Limited Test 这一步快速进行测试以加速您的上线流程。</p>\n<ul>\\n<li>接收新用户 API:<strong>ResolveCustomer</strong></li>\\n</ul>\n<p>当一个用户从 Amazon Web Services Marketplace 订阅并跳转到您的 SaaS 应用程序后,您将会面临您的应用程序与 Amazon Web Services 进行用户对接的过程,该用户在第一次到达您的 SaaS 应用程序时,他具备 Amazon Web Service 的账户身份,同时该用户在您的 SaaS 应用程序中载入后,他也具备您的 SaaS 租户属性,为了日后您与 Amazon Web Services Marketplace 进行交互,您需要在这一步骤中进行 API 集成,完成该用户2个身份的绑定。</p>\n<p>ResolveCustomer API 是整个 SaaS API 集成的第一步,也是客户通过 Amazon Web Services Marketplace 进入到您的 SaaS 应用的第一步,在这一步骤中,我们需要通过该 API 完成两部分工作:</p>\n<ul>\\n<li>验证新客户</li>\n</ul>\\n<p>在客户订阅您的产品后,他们将被重定向到执行的 URL。该重定向是一个 POST 请求,包括一个临时令牌。然后,您的应用程序需要通过调用 Amazon Web Services Marketplace 计量服务 API 中的ResolveCustomer,将令牌换成客户 ID。在获得客户 ID 后,将其保存在您的应用程序中,以便将来调用。</p>\n<ul>\\n<li>载入您的新客户</li>\n</ul>\\n<p>在成功地验证了一个客户后,让他们加入您的应用程序。例如,让他们填写一个表格来创建一个新的用户账户。或者,为他们提供进入应用程序的后续步骤。您的应用程序可以根据客户的信息来自动化的装载该客户所需要的后续资源与服务。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/16cfea431bef44d9b31958112eec3330_image.png\\" alt=\\"image.png\\" /></p>\n<p>如上图所示,在使用 ResolveCustomer API 的过程中,首先需要从 Http Request 中获取 token,当客户从 Amazon Web Services Marketplace 跳转到您的应用程序过程中,Amazon Web Services Marketplace 会给您上线过程中提交的 URL 发送 POST 请求,您需要从该请求中通过获取 x-amzn-marketplace-token 获取该用户的身份token,然后调用 ResolveCustomer API 获得 CustomerIdetifier 和 ProductCode,其中 CustomerIdetifier 为该客户在 Amazon Web Services 上身份的标示,ProductCode 是产品的唯一标识码。</p>\n<p>您需要将 CustomerIdetifier 与 ProductCode 基于您应用程序逻辑进行业务处理,并用于后续该用户与 Amazon Web Services Marketplace API 交互。</p>\n<ul>\\n<li>发送计量记录 API:<strong>BatchMeterUsage</strong></li>\\n</ul>\n<p>基于 Subscription 的 SaaS 应用程序与 Amazon Web Services Marketplace API 集成,需要以小时为间隔调用 BatchMeterUsage API 向 Amazon Web Services Marketplace 传送客户在 SaaS 应用程序中的用量。</p>\n<p>您使用 Amazon Web Services Marketplace 计量服务中的 BatchMeterUsage 操作,代表您的客户向 Amazon Web Services 交付计量记录。我们建议使用 CloudTrail 来监控活动,以确保计费信息被发送到 Amazon Web Services Marketplace。在发送计量记录时请记住:</p>\n<ul>\\n<li>Marketplace 按小时对计量请求进行去重复化处理</li>\n<li>每小时发送的记录是累积的</li>\n<li>最佳做法是每小时发送记录,即使数量为0</li>\n</ul>\\n<p><img src=\\"https://dev-media.amazoncloud.cn/22b79c178c234d1886e056ae69fe9716_image.png\\" alt=\\"image.png\\" /></p>\n<p>如上图所示,您可以将多个产品与多个用户的用量在同一个 API 中传送给 Amazon Web Services Marketplace。BatchMeterUsage API 中,维度名字需要与您上线过程中,在 AMMP 中所填写的 Dimension API Name 相同。</p>\n<ul>\\n<li>监控订阅状态的变化</li>\n</ul>\\n<p>通过订阅和监控 SNS Topic,如果用户的订阅状态发生了变化,您会收到 Marketplace 发出的 SNS 消息。您需要对这些消息进行处理,相关工作包括:</p>\n<p>设置一个 SQS 队列并订阅您产品的 SNS Topic。该主题提供关于客户订阅变化的通知。这使您能够知道何时为特定的客户提供和撤销访问。消息类型包括:subscribe-success, subscribe-fail, unsubscribe-pending, unsubscribe-success。</p>\n<p>在你收到 subscribe-success 的消息后,客户账户就可以进行计量了。你在这个通知之前发送的记录不会被统计。此外,我们建议您在收到这一消息后,再给用户分配 SaaS 资源。</p>\n<h4><a id=\\"332_SaaS_Contract_API_127\\"></a><strong>3.3.2 SaaS Contract API集成</strong></h4>\\n<p>对于 Contract 类型的 SaaS 产品上线而言,一共有三个 API 需要集成,集成工作发生在 Product Limited Test这一步的过程中,在该步骤,您获得了用于测试和模拟买家行为的的产品页面,用于 API 交互的参数 Product Code 以及用于接收订阅变化的 SNS Topic。</p>\n<p>您也可以根据自身情况提前进行集成代码的逻辑性开发,并于 Product Limited Test 这一步快速进行测试以加速您的上线流程。</p>\n<ul>\\n<li>接收新用户 API:<strong>ResolveCustomer</strong></li>\\n</ul>\n<p>当一个用户从 Marketplace 订阅并跳转到您的 SaaS 应用程序后,您将会面临您的应用程序与 Marketplace 进行用户对接的过程,该用户在第一次到达您的 SaaS 应用程序时,他具备 Amazon Web Service 的账户身份,同时该用户在您的 SaaS 应用程序中载入后,他也具备您的 SaaS 租户属性,为了日后您与 Amazon Web Services Marketplace进行交互,您需要在这一步骤中进行 API 集成,完成该用户2个身份的绑定。</p>\n<p>ResolveCustomer API 是整个 SaaS API 集成的第一步,也是客户通过 Amazon Web Services Marketplace 进入到您的 SaaS 应用的第一步,在这一步骤中,我们需要通过该API完成两类工作:</p>\n<ul>\\n<li>验证新客户</li>\n</ul>\\n<p>在客户订阅您的产品后,他们将被重定向到执行的 URL。该重定向是一个 POST 请求,包括一个临时令牌。然后,您的应用程序需要通过调用Amazon Web Services Marketplace 计量服务 API 中的 ResolveCustomer,将令牌换成客户 ID。在获得客户 ID 后,将其保存在您的应用程序中,以便将来调用。</p>\n<ul>\\n<li>载入您的新客户</li>\n</ul>\\n<p>在成功地验证了一个客户后,让他们加入您的应用程序。例如,让他们填写一个表格来创建一个新的用户账户。或者,为他们提供进入应用程序的后续步骤。您的应用程序可以根据客户的信息来自动化地装载该客户所需要的后续资源与服务。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/317b93307b7840e6ad423c48ded9e47d_image.png\\" alt=\\"image.png\\" /></p>\n<p>如上图所示,在使用 ResolveCustomer API 的过程中,首先需要从 Http Request 中获取 token,当客户从 Marketplace 跳转到您的应用程序过程中,Marketplace 会给您上线过程中提交的 URL 发送 POST 请求,您需要从该请求中通过获取 x-amzn-marketplace-token 获取该用户的身份 token,然后调用 ResolveCustomer API 获得 CustomerIdetifier 和 ProductCode,其 CustomerIdetifier</p>\n<p>为该客户在 Amazon Web Services 上身份的标示,ProductCode 是产品的唯一标识符。</p>\n<p>您需要将 CustomerIdetifier 与 ProductCode 基于您应用程序逻辑进行业务处理,并用于后续该用户与 Marketplace API 交互。</p>\n<ul>\\n<li>查看合约信息 API:<strong>GetEntitlements</strong></li>\\n</ul>\n<p>基于 Contract 的 SaaS 应用程序与 Marketplace API 集成,您可以调用 GetEntitlements API 来获得客户在 Amazon Web Services Marketplace 购买的 Contract 具体信息,您的应用程序可以根据相关业务逻辑使用这些 Contract 信息。</p>\n<p>基于 Contract 的 SaaS 应用程序在上线过程中,您定义了产品的合约类型,包括合约包含的服务以及持续时间。用户在订阅产品的过程中,会选择相应的 Contract。您在 GetEntitlements API 的返回中会得用户所选择的 Contract 信息,您可以保存这些信息,也可以在相关的用户行为中持续调用该 API 检查客户选择的合约,以便给客户提供相应的服务。</p>\n<ul>\\n<li>监控订阅状态的变化</li>\n</ul>\\n<p>通过订阅和监控 SNS Topic,当用户的订阅状态以及合约状态的发生变化时,您会收到相关消息,您需要对其进行处理:</p>\n<p>设置一个 SQS 队列并订阅您产品的SNS主题。该主题提供关于客户订阅和权利状态变化的通知,这使您能够知道何时为特定客户提供和撤销访问权。消息类型包括:subscribe-success, subscribe-fail, unsubscribe-pending, unsubscribe-success, entitlement-updated.</p>\n<h4><a id=\\"34_167\\"></a><strong>3.4端到端集成测试</strong></h4>\\n<p>当您完成 API 集成,并且已经测试过之后,可以邮件通知 Marketplace 海外区运营团队。我们会有相关人员和您预约会议,进行端到端测试。测试内容主要包括</p>\n<ul>\\n<li>产品页面内容显示正常,价格信息正确,最终用户许可协议能正常打开。</li>\n<li>用户能正常完成 SaaS 产品注册流程。</li>\n<li>Marketplace 后台查到您 API 调用的成功记录。</li>\n</ul>\\n<h4><a id=\\"35_175\\"></a><strong>3.5正式发布</strong></h4>\\n<p>当您通过端到端集成测试后,Marketplace 后台会给您发信,让您确认所有信息都无误。您回复邮件确认后,即可正式上线。</p>\n<h3><a id=\\"_179\\"></a><strong>参考资料</strong></h3>\\n<p>Amazon Web Services Marketplace 海外区卖家指南<br />\\n<a href=\\"https://docs.aws.amazon.com/marketplace/latest/userguide/what-is-marketplace.html\\" target=\\"_blank\\">https://docs.aws.amazon.com/marketplace/latest/userguide/what-is-marketplace.html</a></p>\\n<p>Amazon Web Services Marketplace 海外区上线 SaaS 产品指南<br />\\n<a href=\\"http://awsmpcnsaasguideline.s3-website.cn-northwest-1.amazonaws.com.cn/en/\\" target=\\"_blank\\">http://awsmpcnsaasguideline.s3-website.cn-northwest-1.amazonaws.com.cn/en/</a></p>\\n<p>SaaS API 集成介绍<br />\\n<a href=\\"https://awsmp-loadforms.s3.amazonaws.com/AWS+Marketplace+-+SaaS+Integration+Guide.pdf\\" target=\\"_blank\\">https://awsmp-loadforms.s3.amazonaws.com/AWS+Marketplace±+SaaS+Integration+Guide.pdf</a></p>\\n<p>SaaS API 接口文档<br />\\n<a href=\\"https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/marketplace-entitlement.html\\" target=\\"_blank\\">https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/marketplace-entitlement.html</a></p>\\n<p><a href=\\"https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/meteringmarketplace.html\\" target=\\"_blank\\">https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/meteringmarketplace.html</a></p>\\n<p>使用 Amazon SQS<br />\\n<a href=\\"http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-create-queue.html\\" target=\\"_blank\\">http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-create-queue.html</a></p>\\n<p>使用 IAM 角色委托解决卖家账号不是 SaaS 生产账号的问题<br />\\n<a href=\\"https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html\\" target=\\"_blank\\">https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html</a></p>\\n<h3><a id=\\"_201\\"></a><strong>本篇作者</strong></h3>\\n<p><img src=\\"https://dev-media.amazoncloud.cn/767d50b0e91c4e0e8ed8a99fcc5d1733_image.png\\" alt=\\"image.png\\" /></p>\n<h4><a id=\\"_205\\"></a><strong>张明月</strong></h4>\\n<p>合作伙伴解决方案架构师</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/45268aeaf2cd4a35bdf9c80f3104dbf5_image.png\\" alt=\\"image.png\\" /></p>\n<h4><a id=\\"_211\\"></a><strong>韩亮</strong></h4>\\n<p>Amazon Web Services Marketplace 技术客户经理</p>\n"}