使用 PlayFab 和 Apple App Store 设置应用内购买

本教程分步说明了如何创建 Apple App Store 应用内购买 (IAP) 物品、将其添加到 Game Manager 中的目录以及指导玩家完成兑换过程。

先决条件

  1. PlayFab Game Manager 中的游戏。
  2. 现有的 PlayFab 中的所选游戏与 Apple App Store 之间的集成
  3. 访问 App Store Connect
  4. 已在 App Store Connect创建的应用。
  5. App Store Connect应用内创建的应用内购买应用内购买应包括定价本地化
  6. 其相应交易观察程序已成为应用的一部分的付款队列

步骤 1:创建测试用户

为了正确测试购买而又不进行实际付款,请首先为应用创建测试用户。

  1. 导航到 App Store Connect>“用户和访问 ”。

  2. 选择“沙盒”。

    “沙盒”选项卡选项

  3. 选择“测试帐户”旁边的加号 (+) 按钮。

  4. 填写表单并选择“创建”。

    新的测试用户表单

步骤 2:在 Game Manager 中创建捆绑包

注意

Game Manager 中创建捆绑包之前,请确保已创建并发布要添加到目录中的捆绑包的物品。 在本教程中,我们假定你已创建了一把剑,名为 Super Awesome Sword(绝世好剑)。 如果需要有关如何创建物品的指导,请参考此步骤

若要在 Game ManagerApp Store Connect 之间启用商城映射,则需要在 Game Manager 中创建捆绑包。 捆绑包可以包含多种数量不同的物品,PlayFab 将在兑换后将它们添加到玩家的物品栏中。 按照以下步骤在 Game Manager 中创建新的捆绑包

  1. 转到 Game Manager 并导航到“游戏”。

  2. 在左侧导航菜单中,选择“参与>经济”。

  3. 选择“捆绑包”选项卡。

    “捆绑包”选项卡

  4. 选择“新建捆绑包”。

  5. 将任何你想要的信息添加到捆绑包,例如物品和价格。 在本教程中,请使用 Super Awesome Bundle 作为名称。

    捆绑包选项

  6. 向下滚动到页面末尾,如果希望玩家可以立即兑换,请选择“保存并发布”。 如果要在以后发布,请选择“另存为草稿”。

    保存选项

将物品添加到捆绑包

捆绑包本身不会向玩家授予任何项目,我们必须先将项目链接到该玩家,并在兑换后将这些项目授予该特定玩家。

若要将物品添加到捆绑包,请执行以下步骤:

  1. 在编辑模式下转到“物品”部分。
  2. 选择 Add。 此时将显示一个窗口,其中显示了所有目录物品。
  3. 可以按类型筛选或搜索特定物品。
  4. 找到 Super Awesome Sword,然后选择它旁边的“添加”。
  5. 最后,选择底部的“添加”按钮。

此操作会将物品添加到捆绑包中。

将项目添加到捆绑包

步骤 3:启用商城映射

若要确保当玩家从应用购买捆绑包时,该捆绑包在 Game Manager 中正确购买和分配,必须配置商城映射。 在 Game Manager 中创建捆绑包时,或在创建捆绑包后通过在编辑模式下返回捆绑包,可以执行此操作。

  1. 在编辑模式下导航到捆绑包。
  2. 向下滚动到“商城映射”部分。
  3. 从“商城”下拉列表中,选择所需的商城。 (在本教程中,它是 AppleAppStore)。
  4. 对于你的“商城 ID”,请确保在 App Store Connect 中使用与你的产品 ID 相同的 ID。 在本教程中,我们使用了 pf.commerce.ios.sas1
  5. 若要完成,请选择该行右侧的 +,然后选择“保存”以保存所做的更改。

商城映射

步骤 4:进行购买

提示

若要了解有关本主题的详细信息,请参阅应用内购买

若要大致了解如何配置应用内购买,请参阅 Apple 的开发人员文档

现在你已在 App Store Connect 中创建了 IAP,则已在 Game Manager 中向捆绑包配置了物品,并设置了捆绑包商城映射。 让我们继续从应用中购买 IAP。

公开 IAP 物品并将其设置为可从应用中购买后,可以使用我们在步骤 1 中创建的测试用户在应用上购买 IAP。 完成此操作后,Apple 的 API 应返回收据,然后你必须将该收据与 PlayFab 的兑换 API 配合使用以验证购买,并将捆绑包中的物品授予玩家。

步骤 5:兑换应用内购买

从 Apple 的 API 收到收据后,必须使用 PlayFab 的 RedeemAppleAppStoreInventoryItems API 调用成功兑换 IAP。 在本例中,它应向经过身份验证的玩家授予 Super Awesome Sword

检查这两个 ID 是否匹配

在进行兑换调用之前,必须确保 Game Manager 中用于商城映射的这两个备用 ID 都与 App Store Connect 中的产品 ID 匹配。

下面的屏幕截图来自 Game Manager 中的捆绑包,我们称 商城 IDAlternateId,基本上它是另一种识别捆绑包的方法。

商城映射

App Store Connect 中,转到“我的应用”,选择所需的应用,然后从左侧导航菜单导航到“功能”>“应用内购买”,最后选择你的 IAP,从 IAP 元数据中会看到产品 ID

App Store Connect 产品 ID

让玩家进行身份验证

若要兑换物品,请使用 RedeemAppleAppStoreInventoryItems。 但在此之前,我们必须确保希望兑换该物品的玩家在你的应用中正确进行身份验证,为此你会使用 LoginWithApple

成功调用 LoginWithApple 后,PlayFab 的 API 将返回一个 EntityToken,该令牌必须用作 RedeemAppleAppStoreInventoryItems 标头的一部分,其中包含 X-EntityToken 密钥。 如果使用 API 平台进行测试,则会如下所示。

API 平台标头密钥

进行兑换调用

通过对玩家进行身份验证后,你的两个 ID 均已检查并匹配,并且已收到玩家进行应用购买产生的收据。 你已准备好进行兑换调用。 为此,请使用 RedeemAppleAppStoreInventoryItems API 调用。

{
    "Receipt": "{Your receipt}"
}

兑换调用只有一个值,即 Apple 在成功购买 IAP 后返回的收据

成功的响应将包括200 status code 以及时间戳MarketplaceTransactionId 等数据。

成功执行兑换调用后,你应能够在经过身份验证的玩家的物品栏中看到 Super Awesome Sword。 这会在玩家的交易历史记录中触发相应的事件。 可从 Game Manager 中玩家概述页下的“交易历史记录(V2)”选项卡中检索此信息。

除了玩家交易历史记录中的新日志项目外,还会触发和记录 items_redeemedPlayStream 事件。 可以通过转到 Game Manager 左侧导航栏的“分析”部分下的“数据”页来访问游戏的这些日志。 可在此处编辑查询以搜索特定记录,或使用默认设置运行查询以获取所有内容。 items_redeemed 的“事件名称”下应有一条记录。

步骤 6:完成交易

成功兑换已购买的物品后,必须确保正确完成交易,以防止其无限期保留在购买队列中。 请务必注意,无论交易是成功还是失败,都应该完成交易。

若要正确完成交易,必须使用 ApplefinishTransaction(_:) 的方法。

注意

可以通过浏览 Apple文档来查找有关 finishTransaction(_:) 的详细信息。

另请参阅