

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 将基于合同的 SaaS 产品与 AWS Marketplace
<a name="saas-integrate-contract-with-pay"></a>

**2026 年 6 月 1 日，新 SaaS 产品的集成要求发生变化**  
AWS Marketplace 正在推出对并发协议的支持，允许在同一协议期限内使用单个 AWS 账户多次购买同一产品。从 2026 年 6 月 1 日起，所有新的 SaaS 产品都必须支持更新的集成要求。[查看并发协议的新集成](https://catalog.workshops.aws/mpseller/en-US/saas/integration-for-concurrent-agreements)。

将您的产品与集成 AWS Marketplace 仅一步之遥[在中创建 SaaS 产品 AWS Marketplace](saas-create-product.md)。要将您的软件即服务 (SaaS) 合同产品与集成 AWS Marketplace，您必须编写代码并证明它可以成功响应多种客户场景。以下各部分描述了这些场景，讲解了如何应对这些场景，并概述了测试集成的情况。

**注意**  
本指南仅适用于*基于合同*的 SaaS 产品。如果您正在实施 *Pay-As-You-Go （即收现付）S* aaS 产品，请[将您的 SaaS 订阅或 Pay-As-You-Go产品与 AWS Marketplace](saas-integrate-subscription.md)改用。PAYG 产品不使用授权 SNS 主题或 API。 GetEntitlements   
在开始之前，请确保您已为 AWS Marketplace中的软件即服务 (SaaS) 产品选择正确的定价模式。有关更多信息，请参阅 [规划您的 SaaS 产品](saas-prepare.md)。

**Topics**
+ [场景：您的服务验证新客户](#saas-contract-with-pay-validate-customer)
+ [场景：您的服务处理客户请求](#saas-contract-with-pay-customer-requests)
+ [场景：计量用量](#saas-contract-with-pay-meter-usage)
+ [场景：监控用户权利的变化](#saas-contract-with-pay-monitor-changes)
+ [通过集成测试你的 SaaS pay-as-you-go 合同](#saas-contract-consumption-integration-testing)

## 场景：您的服务验证新客户
<a name="saas-contract-with-pay-validate-customer"></a>

当客户订阅您的产品时，他们会被重定向到您的注册 URL，这是一个带有临时 `x-amzn-marketplace-token` 令牌的 HTTP POST 请求。通过下列方式来响应此请求：

1. `ProductCode`通过调用中的 `[ ResolveCustomer](https://docs.aws.amazon.com/marketplacemetering/latest/APIReference/API_ResolveCustomer.html)` API 操作将令牌兑换`CustomerAWSAccountId``LicenseArn`、、和 AWS Marketplace Metering Service。`CustomerIdentifier`

1. 通过调用 AWS Marketplace Entitlement Service中的 `[ GetEntitlements](https://docs.aws.amazon.com/marketplaceentitlement/latest/APIReference/API_GetEntitlements.html)` 操作来验证客户可以访问的订阅和数量（如适用）。

1. 在系统中保留`CustomerIdentifier``CustomerAWSAccountId``LicenseArn`、、和`ProductCode`，以备将来调用。存储客户是否拥有有效的订阅，以及您需要的有关该客户的任何信息。

1. 作为对请求的响应，您必须展示用户的首次使用体验（如果适用于您的服务）。

## 场景：您的服务处理客户请求
<a name="saas-contract-with-pay-customer-requests"></a>

当客户向您的服务提出请求时，您必须通过适当的操作或消息来响应以下情形：
+ 他们在系统中没有客户 ID。这表明他们尚未订阅。您应该给他们发送消息，描述如何订阅。
+ 他们有客户 ID，且 `GetEntitlements` API 操作返回了相应的权利。在这种情况下，您应该满足请求。
+ 他们确实有客户 ID，但是 `GetEntitlements` API 操作未返回任何权利，或者返回的数量不足以满足请求。在这种情况下，您必须确定如何处理访问权限和管理他们的体验。

## 场景：计量用量
<a name="saas-contract-with-pay-meter-usage"></a>

当客户开始使用您的服务时，您必须每小时发送一次计量记录。有关如何计量的详细信息，请参阅[配置 SaaS 订阅用量的计量](metering-for-usage.md)。

我们建议您使用 AWS CloudTrail 监控活动，以确保账单信息已发送至 AWS。在发送计量记录时，请记住以下几点：
+ 将按小时去除重复的计量请求。
+ 每小时发送的记录是累积的。
+ 即使过去一小时内没有记录，我们也强烈建议实施最佳实操，即每小时发送一次计量记录（用量为 0）。

## 场景：监控用户权利的变化
<a name="saas-contract-with-pay-monitor-changes"></a>

设置 Amazon Simple Queue Service (Amazon SQS) 队列，并订阅您产品的 Amazon SNS 主题，有两个 SNS 主题，一个用于权利变更，另一个用于订阅变更。您的主题信息包含在您创建商品时从 AWS Marketplace 卖家运营团队收到的电子邮件中。有关更多信息，请参阅 [在中创建 SaaS 产品 AWS Marketplace](saas-create-product.md)。订阅 SNS 主题后，您将收到有关客户订阅变更的通知，包括为特定客户提供或撤消访问权限。

**注意**  
订阅变更的 SNS 主题 Amazon 资源名称 (ARN) 与 `arn:aws:sns:us-east-1:<account id>:aws-mp-subscription-notification-<product code>` 类似。权利变更的 SNS 主题 ARN 与 `arn:aws:sns:us-east-1:<account id>:aws-mp-entitlement-notification-<product code>` 类似。

您必须响应的通知如下：
+ `entitlement-updated`（在权利 SNS 主题中）– 客户权利已更改，您必须调用 `GetEntitlements` API 操作才能查看新状态。更新您的客户商店，如果适用（例如，客户的合同已失效），请执行关闭客户资源的实操，遵守您的保留策略。
+ `subscribe-success`（在订阅 SNS 主题中）– 客户已订阅，您可以成功地根据他们的客户 ID 进行计量。
+ `unsubscribe-pending`（在订阅 SNS 主题中）– 客户正在取消订阅。您应该发送所有最后的计量记录。
+ `unsubscribe-success`（在订阅 SNS 主题中）– 客户已取消订阅。将不再接受客户的计量记录。执行您关闭客户资源的实操，遵守您的保留策略。
+ `subscribe-fail`（在订阅 SNS 主题中）– 客户订阅失败。您不应根据他们的客户 ID 进行计量或代表客户启用资源。

**注意**  
有关更多信息，请参阅 [使用检查权利 AWS Marketplace Entitlement Service](checking-entitlements.md)。

## 通过集成测试你的 SaaS pay-as-you-go 合同
<a name="saas-contract-consumption-integration-testing"></a>

将合同与 pay-as-you-go产品整合后 AWS Marketplace，必须进行深入测试，以确保集成成功。以下过程概述了验证产品集成的步骤。

**注意**  
使用您自己的账户订阅您的产品并测试集成是否成功。可以暂时降低价格，以便您能够测试购买流程，而不会在这些账户中产生较高的费用。有关暂时降低价格或允许其他测试账户访问您的产品的更多信息，请联系 [AWS Marketplace 卖家运营](https://aws.amazon.com/marketplace/management/contact-us/)团队。  
产品推出后，该服务必须继续对新客户的这些情形做出响应。

1. 使用允许的账户通过获取产品合同来测试客户体验。

1. 在该账户获得合同后，请确保它被重定向到注册 URL，并且重定向是一个包含临时令牌的 POST 请求。确保您的应用程序保留客户 ID 以备将来调用之用，并正确处理客户拥有的权利。这测试了[场景：您的服务验证新客户](#saas-contract-with-pay-validate-customer)中的一部分。

1. 在上一步中验证测试账户后，将该账户注册到应用程序中。例如，您可以让测试客户填写表单来创建新的用户。或者，向这些客户提供其他后续步骤以获取对 SaaS 应用程序的访问权限。这测试了[场景：您的服务验证新客户](#saas-contract-with-pay-validate-customer)中的一部分。

1. 如果 `GetEntitlements` API 操作未返回任何权利，无论是在载入期间还是验证通过期间，您的应用程序都必须正确管理未授权用户的访问权限和体验。这测试了[场景：您的服务处理客户请求](#saas-contract-with-pay-customer-requests)。

1. 测试客户入职后，使用中的 `BatchMeterUsage` API 操作提出请求，将计量记录发送到以 AWS 用于计费。 AWS Marketplace Metering Service这测试了[场景：计量用量](#saas-contract-with-pay-meter-usage)。

1. 测试订阅变更。验证您的应用程序是否正确处理取消订阅、成功订阅和订阅失败的情况。这测试了[场景：监控用户权利的变化](#saas-contract-with-pay-monitor-changes)。

1. 完成所有集成要求并测试解决方案后，请通知 AWS Marketplace 卖家运营团队。然后，他们将通过验证您是否已成功调用 `GetEntitlements` API 操作并充分载入新客户来测试解决方案。他们还将验证您是否已通过 `BatchMeterUsage` API 操作成功发送计量记录。

集成和测试完成后，您可以进行最终审核并将您的产品公之于众 AWS Marketplace。有关更多信息，请参阅 [在中创建 SaaS 产品 AWS Marketplace](saas-create-product.md)。