检测和交付应用内商品

本主题介绍当玩家在 Google Play 应用中使用 Play 积分购买应用内商品后,您应如何在游戏内检测和交付相应的应用内商品。

当用户在 Google Play 应用中使用 Play 积分兑换应用内商品后,您就应该立即在游戏中交付相应的商品。下方的屏幕截图显示了用户如何使用 Play 积分购买商品。

1. 点击 Play Points 1. 点击使用标签页以查看商品。 2. 选择一件商品,然后点击使用积分完成购买交易。 3. 接收相应商品。
待定的屏幕截图 待定的屏幕截图 待定的屏幕截图 待定的屏幕截图

在此示例中,当用户购买商品时游戏并未运行。用户还可以在设备上并未安装相应游戏的情况下用 Play 积分兑换商品。因此,您必须将游戏设计为在游戏内商店之外处理应用内商品交付。

准备工作

您必须先创建商品和 Play Points 促销活动,才能检测和交付应用内商品。

交付要求

当您通过 Play Points 促销活动在游戏中交付应用内商品时,必须遵守本部分所述的要求。

交付时间

当玩家使用 Play 积分兑换应用内商品时,请使用 Google Play 结算库及时交付商品。

交付消息

如果用户在游戏外购买了应用内商品,当用户返回游戏中时,游戏必须显示确认消息,表明商品已成功在游戏中交付。该消息应该会以弹出式对话框或游戏内消息的形式出现。用户应无需执行任何额外的步骤即可收到其商品。

以下是要求使用的消息格式:

  • 一条明确的消息,表示用户已收到相应商品

  • 明确指明商品的名称,并提及“Play 积分”,以确保用户能够将该商品与收到的其他内容区分开来。

  • 商品的名称还必须包含该商品的正确面额(如果存在有多个面额的类似商品)。

  • 弹出式对话框、消息或游戏内通知应该一直显示,直到用户点击继续确定等按钮进行确认为止。 此类消息不应包含“取消”按钮,因为它仅用于通知用户在游戏中收到的商品。如果没有确认按钮,则该消息应至少显示 3 秒后才会消失,以确保用户知道他们已收到相应商品。

下面是一个消息示例:

“已收到商品!您刚刚使用 Play 积分兑换了 100 颗宝石。继续。”

用户应该会看到一个动画或一些视觉确认信息,显示他们的游戏代币余额有所增加。如果相应商品是耐用型或消耗型应用内商品,系统应将用户定向至商品解锁位置或可在游戏中找到该商品的位置。

检测在游戏外收到的商品

如果您的游戏使用 Google Play 的结算系统,请参阅检测和处理购买交易,以检测在游戏外获得的应用内商品。

显示交付确认消息

当用户兑换 Play 积分并获得兑换的商品时,他们希望游戏显示游戏内消息,或通过某种通知告知自己游戏已正确接收并处理该商品。请参阅通知用户以确认购买交易成功。

适用于特定游戏引擎的更新

以下是一些针对特定游戏引擎的注意事项:

  • 如果您的游戏是使用 Unity 构建的,我们建议您验证您所使用的 IAP 实现是否已支持 Play Points 促销活动。

  • 如果您的游戏是使用 Cocos2d-x 或 Unreal Engine (C/C++) 构建的,那么您很可能需要编写 JNI 代码来调用您 C/C++ 代码中的 Java API。

服务器端最佳做法

本部分包含适用于 Play Points 促销活动的服务器端最佳做法:

  • 如果您在服务器上调用 Purchases.products: get,请确认您是否需要根据 productId 值将 Play 奖励兑换商品与其他应用内商品分开处理。

  • 如果您在服务器上使用 Inappproducts: list,请确认您是否需要通过 productId 值将 Play 奖励兑换商品与其他应用内商品区分开。

  • 查看以下最佳做法,确认您是否需要进行其他更改:

问题排查

本部分包含针对可导致客户咨询问题的情形给出的建议。

多个用户账号

如果用户的设备上有多个 Google 账号,而用户在错误的账号中兑换了 Play 积分,那么 Google 无法将相关商品转移到其他账号。同样,您的应用也无法通过调用 getPurchases() 方法转移相关商品。在这种情况下,不妨考虑通过客户服务人员的人工操作向用户提供应用内商品。

商品交付延迟或丢失

如果玩家遇到奖励商品交付延迟或丢失的情况,请参阅 Google Play 帮助文档中的应用内购买问题排查指南