

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

# 手机 In-App 购买验证已开启 AWS
<a name="mobile-in-app-purchase-validation"></a>

发布日期：2021 年 1 ** 月 1 日 ([图表历史](#iap-history)) **

该架构为验证来自和的应用内购买Google Play Store以及Apple App Store管理退款提供了无服务器解决方案。该架构使用[亚马逊 API 网关](https://docs.aws.amazon.com/apigateway/latest/developerguide/)和[亚马逊 DynamoDB ](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/) 来安全地大规模处理交易。[AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/)

## 手机 In-App 购买验证已开启 AWS 图表
<a name="iap-diagram"></a>

![参考架构图显示了如何 AWS 使用无服务器后端验证应用内购买和管理退款。](https://docs.aws.amazon.com/zh_cn/reference-architecture-diagrams/latest/mobile-in-app-purchase-validation/images/mobile-in-app-purchase-validation.png)


以下步骤描述了购买验证流程：

1. 手游客户端使用 OS-specific SDK 进行购买并将收据存储在本地。

1. 游戏客户端向 API 网关发出 API 请求，以验证收据并接收购买的物品。

1. Lambda 函数检查 DynamoDB 中的**交易**表，以验证收据之前是否未使用过。

1. Lambda 函数通过Google Play Store或 Apple App Store API 验证收据。

1. 验证后，Lambda 函数将项目添加到 DynamoDB 中的**PlayerData**表中，并将收据与任何其他元数据一起添加到**交易**表中。

1. 客户端收到成功消息，在本地同步购买的物品数据，并删除本地收据副本。

以下步骤描述了退款流程：

1. API Gateway 会在 iOS 上接收有关退款交易的通知。计划的 Lambda 函数在安卓系统上查询退款的交易。

1. 退款的交易由 Lambda 函数推送到[亚马逊简单](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/)队列服务队列。

1. Lambda 函数处理退款，包括关闭玩家账户等任何其他操作。

1. Lambda 函数更新 DynamoDB 表以删除项目并将交易标记为已退款。

## 延伸阅读
<a name="iap-further-reading"></a>

有关更多信息，请参阅以下资源：
+  [AWS 架构图标 ](https://aws.amazon.com/architecture/icons) 
+  [AWS 建筑中心 ](https://aws.amazon.com/architecture/) 
+  [AWS Well-Architected](https://aws.amazon.com/architecture/well-architected) 

## 图表历史
<a name="iap-history"></a>

要获得有关此参考架构图更新的通知，请订阅 RSS 提要。

| 变更 | 说明 | 日期 | 
| --- |--- |--- |
| [初次发布](#iap-history) | 参考架构图首次发布。 | 2021 年 1 月 1 日 | 

**注意**  
要订阅 RSS 更新，必须为正在使用的浏览器启用 RSS 插件。