gpt4 book ai didi

android - 适用于 Android 和 iOS 的应用内购买撤销机制

转载 作者:行者123 更新时间:2023-12-01 21:59:31 25 4
gpt4 key购买 nike

我应该为 android 和 iOS 的购买实现通用的撤销政策。

这就是我所说的撤销政策:
用户可以选择在应用程序中购买一些虚拟货币 (VC)。当用户成功完成交易后,用户的余额将随着他购买的 VC 数量而增加。如果稍后他退款/取消交易,则需要扣除用户的余额(恢复押金)。

我还想清除可能出现的任何问题。
Android 和 iOS 应用程序都有一个共同的后端,将用于以下用途:

  • 存储用户余额
  • 存入一定数量的VC或返还
  • 对应用程序发出的购买进行验证

  • 我能想到的一种可能的流程是:

    用户打开应用程序(iOS 或 Android 无关紧要)并开始购买流程。输入他的付款详情并点击提交。这会在相应的 App Store 中创建一个事务。然后应用程序将交易详细信息发送到服务器。服务器负责验证交易,并在成功验证后将 VC 存入用户余额。

    可能的问题:
  • 几天后,用户退还了他的交易。服务器将如何得到通知?

    1.1。根据 Google 的文档,他们提供了 Void APIServer PushNotifications但仅适用于订阅和一次性购买
    定期购买。这同样适用于也有 Server Push Notifications 的 Apple 服务器 API。仅用于订阅和Receipt Validation .这些 API 似乎不适合实现购买的撤销机制。还要记住,每天有数十万次购买,API 需要适合这样的数量。
  • 如果由于某种原因服务器成功执行了购买验证但由于某些业务规则而无法授予 VC 怎么办?在这种情况下,用户的钱将被 App Store 拿走,他不会收到他支付的元素。

    2.1。我了解在后端验证购买后,应用程序需要完成/确认到 App Store 的交易。但是在这种情况下,交易不应该被确认,因为它不能基于某些业务规则来执行。在这种情况下,用户不应被收费。 iOS 和 Android 的文档都不清楚如何实现这一点。

  • 非常感谢您提供以下帮助:
  • 实现适用于两个移动平台(或分别适用于每个平台)的这种机制
  • 揭示 Android 和 iOS 的支付交易边缘案例
  • 最佳答案

    TL;博士
    后端服务器可以轮询 Google 专用 API 以了解购买状态的变化并采取相应的行动。然而,Apple 没有用于批量状态检索的专用 API。
    问题 1 - 处理退款
    在实现任何解决方案之前,重要的是要了解 Google 和 Apple 都尽最大努力减少退款数量并检测欺诈 Activity 。但是,仍然有可能出现退款已经发生并且应用程序所有者想要撤销授予的商品的情况。
    此外,Google (Android) 退款金额与 Apple (iOS) 退款金额不同。 Android 平台的平均退款率往往高于 iOS 平台。在决定分别为每个系统实现撤销策略时,这可能很重要,因为似乎没有通用的解决方案。
    可能的解决方案
    中央后端服务器需要知道何时发生退款。这将允许它撤销 cargo (在这种情况下恢复虚拟货币交易)。服务器不能依赖从移动设备获取这些知识,因为它们不是受控的事实来源。出于这个原因,后端必须利用谷歌和苹果公开的 API 来分别处理 Android 退款和 iOS 退款。
    谷歌(安卓)
    Google 提供了 Voided Purchases API .此 API 可用于检索批量信息,例如购买是否已退款甚至退款。可以从后端定期轮询 API,并使用返回的购买 token 将其与用户进行的购买链接并执行所需的撤销策略。
    苹果 (iOS)
    与 Google 不同,Apple 不提供专门的批量 API 来检索购买信息。但是它提供了 AppStore Receipt Verification API可用于检索每个单独购买的状态。该 API 旨在用于在实际发生购买时对购买进行服务器端验证。它似乎不适合定期检查购买状态。这并不意味着它不能被轮询,但如果达到某个请求配额并且请求被限制(只是在这里猜测),我不会感到惊讶。
    苹果还提供AppStore Server Notifications .当订阅状态发生变化时,它可以用作回调来通知您的后端。不幸的是,根据文档,这个 API 是 仅用于订阅 而不是一次性购买。因此,AppStore 收据验证 API 是唯一可能的解决方案。
    问题 2 - 未完成/未消费的交易
    我找不到任何官方文档来解释如果在 Android/iOS 中未消费/完成购买会发生什么。所有文档都声明必须消费/完成购买。
    安卓
    在尝试了 Android 之后,我注意到当未消费购买时,Google Play 会自动退款。对于测试购买,发出退款所需的时间小于 30 分钟,但对于实际交易,可能需要一天时间。
    因此,如果服务器在向用户收费后未能向用户发放商品,则可以依靠一两天后发出的退款。但是请注意,这在任何官方来源中都没有记录。
    iOS
    我还没有测试过 iOS 购买。文档指出,购买后需要在 AppStore 上完成。在完成之前,它将保留在 iOS 购买 Q 中。目前尚不清楚这笔未完成的交易将在 Q 中保留多长时间。也不清楚是否会以与未消费的 Google 购买类似的方式进行退款。

    关于android - 适用于 Android 和 iOS 的应用内购买撤销机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60412243/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com