

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

# SaaS 产品的 Amazon SNS 通知
<a name="saas-notification"></a>

**重要**  
S AWS Marketplace aaS 产品的 SNS 通知已被亚马逊 EventBridge 通知所取代。如果您已将现有的 SaaS 产品与 SNS 集成，它们将继续运行。新上架商品最终将改用亚马逊 EventBridge 代替 SNS。有关更多信息，请参阅 [通过亚马逊管理 SaaS 订阅事件 EventBridge](saas-eventbridge-integration.md)。

要接收通知，您需要订阅商品创建期间向您提供的亚马逊简单通知服务 (Amazon SNS) Simple Notification Service 主题 AWS Marketplace 。这些主题提供有关客户产品订阅和合同权利发生更改的通知。这可以让您知道什么时候为特定客户提供和撤销访问权限。

**注意**  
在产品创建过程中，您将收到 SNS 主题的实际 Amazon 资源名称 (ARN)。例如：`arn:aws:sns:us-east-1:123456789012:aws-mp-subscription-notification-PRODUCTCODE`

以下 Amazon SNS 主题适用于软件即服务 (SaaS) 产品：
+ [Amazon SNS 主题：`aws-mp-entitlement-notification`](#saas-sns-message-body) – 当买家创建新合同、升级、续订或合同到期时，本主题会通知您。这仅适用于定价模式中包含合同（也称为 **SaaS 合同**和**带消费的 SaaS 合同（超额）**）的产品。
+ [Amazon SNS 主题：`aws-mp-subscription-notification`](#saas-sns-subscription-message-body) – 当买家订阅或取消订阅产品时，本主题会通知您，其中包括专属优惠的 `offer-identifier` 和 SaaS 免费试用的免费试用标志。这适用于所有定价模式，包括合同和订阅（也称为 **SaaS 订阅**、**SaaS 合同**和**带消费的 SaaS 合同（超额）**）。

要详细了解您响应这些通知的场景，请参阅以下主题：
+ [将您的 SaaS 订阅或 Pay-As-You-Go产品与 AWS Marketplace](saas-integrate-subscription.md)
+ [将你的 SaaS 合同产品与 AWS Marketplace](saas-integrate-contract.md)
+ [将基于合同的 SaaS 产品与 AWS Marketplace](saas-integrate-contract-with-pay.md)

## Amazon SNS 主题：`aws-mp-entitlement-notification`
<a name="saas-sns-message-body"></a>

`aws-mp-entitlement-notification` 主题中的每条消息都采用以下格式。

```
{
    "action": "{{<action-name>}}",
    "customer-identifier": " {{X01EXAMPLEX}}",
    "product-code": "{{n0123EXAMPLEXXXXXXXXXXXX}}",
}
```

{{<action-name>}}永远如此` entitlement-updated`。

**注意**  
对于权利消息，无论采取何种操作（新建、升级、续订或已过期），消息都是一样的。需要随后调用 `GetEntitlement` 才能发现更新的内容。
对于**含消费的 SaaS 合同（超额）**，为卖家提供 [`aws-mp-subscription-notification` SNS 主题](#saas-sns-subscription-message-body)。这是卖家在增加超额定价时会收到的额外通知。当卖家获得新客户时，卖家会收到一条订阅消息，表明这是新客户，而不仅仅是获得 `entitlement-updated`（这可能是指任何类型的操作）。
对于 future 日期的协议 (FDAs)，此主题在协议开始日期（而不是协议签署日期）启动。此外，当授权后续发生变更时，例如协议取消、更换、续订或到期，该主题也会启动。

具有合同定价的产品（包括与之签订的合同 pay-as-you-go）必须回复这些消息。有关如何响应的更多信息，请参阅[场景：监控用户订阅的更改](saas-integrate-contract.md#saas-contract-monitor-changes)。

## Amazon SNS 主题：`aws-mp-subscription-notification`
<a name="saas-sns-subscription-message-body"></a>

`aws-mp-subscription-notification` 主题中的每条消息都采用以下格式。

```
{
    "action": "{{<action-name>}}",
    "customer-identifier": " {{X01EXAMPLEX}}",
    "product-code": "{{n0123EXAMPLEXXXXXXXXXXXX}}",
    "offer-identifier": "{{offer-abcexample123}}",
    "isFreeTrialTermPresent":"true"
}
```

仅当操作为 `subscribe-success` 或 `subscribe-fail` 时，通知中才会包含 `offer-identifier`。当操作为 `unsubscribe-pending` 或 `unsubscribe-success` 时，则通知中不包含此标识符。对于 2024 年 1 月之前创建的优惠，只有关于专属优惠的通知中才会包含此标识符。对于 2024 年 1 月及之后创建的优惠，此标识符将包含在所有优惠的通知中，包括专属优惠和公开优惠。

有关报价类型的信息，请参阅 [DescribeEntity API](https://docs.aws.amazon.com//marketplace/latest/APIReference/work-with-private-offers.html#describe-entity) 的回复或协议[续订控制面板中协议的报价可见性。](https://docs.aws.amazon.com//marketplace/latest/userguide/agreements-renewals-dashboard.html)

**注意**  
 对于 [DescribeEntity API](https://docs.aws.amazon.com//marketplace/latest/APIReference/work-with-private-offers.html#describe-entity)，如果您 AWS 账户 在针对该优惠的定位规则中发现了账户定位方面，则该优惠就是私有优惠。如果账户定位规则 AWS 账户 中没有针对该优惠的定向规则，则为公开报价。

`isFreeTrialTermPresent` 属性会指示买家的订阅是否为免费试用。此属性的 JSON 值不是*布尔*数据类型。而是将该值转换为*字符串*数据类型。有关更多信息，请参阅 [SaaS 免费试用。](https://docs.aws.amazon.com/marketplace/latest/userguide/saas-free-trials.html)

{{<action-name>}}将根据通知而有所不同。可能的操作包括：
+ `subscribe-success` – `subscribe-success` 消息表示卖家何时可以开始发送计量记录。如果买家接受了[基于协议的报价](https://docs.aws.amazon.com/marketplace/latest/userguide/private-offers-upgrades-and-renewals.html#private-offers-upgrades-and-renewals-process)，这条消息将连同新的 `offer-identifier` 再次发送。
+ `subscribe-fail`— 如果生成`subscribe-fail`消息，即使买家已经从卖家的 SaaS 登录页面过渡到卖家的 SaaS 登录页面，付款也可能失败。 AWS Marketplace 卖家应等待 `subscribe-success` 消息后再允许消费产品。
+ `unsubscribe-pending` – 当买家取消订阅时，会先发送一条 `unsubscribe-pending` 消息。这表明在买家完全取消之前，卖家只有有限的时间（大约一小时）来发送计量记录。
+ `unsubscribe-success` – `unsubscribe-success` 消息表示取消已完成，之后将不再接受任何计量记录。

**注意**  
如果买家取消订阅，然后在发送最终 `unsubscribe-success` 消息之前立即成功重新订阅，则不会发送最终 `unsubscribe-success` 消息，而是发送 `subscribe-success` 消息。
对于 future 日期的协议 (FDAs)，`subscribe-success`操作将在协议开始日期（而不是协议签署日期）启动。

采用订阅定价（包括与之签订的合同 pay-as-you-go）的产品必须回复这些消息。有关如何响应的更多信息，请参阅以下主题。
+ [将您的 SaaS 订阅或 Pay-As-You-Go产品与 AWS Marketplace](saas-integrate-subscription.md)
+ [将基于合同的 SaaS 产品与 AWS Marketplace](saas-integrate-contract-with-pay.md)

## 为 SQS 队列订阅 SNS 主题
<a name="subscribing-an-sqs-queue-to-the-sns-topic"></a>

 我们建议为 Amazon SQS 队列订阅提供的 SNS 主题。有关创建SQS队列并将队列订阅主题的详细说明，请参阅《Amazon Simple Notification Service 开发人员指南》**中的[为 Amazon SQS 队列订阅 Amazon SNS 主题](https://docs.aws.amazon.com/sns/latest/dg/subscribe-sqs-queue-to-sns-topic.html)。

**注意**  
您只能订阅 AWS 账户 用于销售产品的用户的 AWS Marketplace SNS 主题。但是，您可以将消息转发到其他帐户。有关更多信息，请参阅《Amazon Simple Notification Service 开发人员指南》**中的[将 Amazon SNS 消息发送到不同账户的 Amazon SQS 队列](https://docs.aws.amazon.com/sns/latest/dg/sns-send-message-to-sqs-cross-account.html)。

### 轮询 SQS 队列以获取通知
<a name="polling-the-sqs-for-notifications"></a>

在您的 SQS 队列订阅 SNS 主题后，消息将存储在 SQS 中。您需要定义一项服务，以不断轮询该队列，查找消息并相应地处理它们。