- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我应该为 android 和 iOS 的购买实现通用的撤销政策。
这就是我所说的撤销政策:
用户可以选择在应用程序中购买一些虚拟货币 (VC)。当用户成功完成交易后,用户的余额将随着他购买的 VC 数量而增加。如果稍后他退款/取消交易,则需要扣除用户的余额(恢复押金)。
我还想清除可能出现的任何问题。
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/
我目前正在使用 Oracle Database Express Edition 11g 处理一些 GRANT 选项。考虑以下小代码示例,其中一些用户向其他用户授予一些权限: -- User A GRA
我不明白这两个查询之间的区别, 1.修改用户用户名账户锁定;2.REVOKE CREATE SESSION FROM 用户名; 这些查询将如何影响用户? 如果我使用撤销 session ,那么可以进行
我正在尝试撤销以下 Google token API ("Content-type:application/x-www-form-urlencoded",请求类型 POST,https://accou
我不明白这两个查询之间的区别, 1.改变用户用户名账户锁;2.REVOKE CREATE SESSION FROM用户名; 这些查询将如何影响用户? 如果我使用 revoke session 那么可以
在服务器上使用 python 访问 firestore 管理员: import firebase_admin from firebase_admin import credentials, fires
MariaDB 中是否可以撤销用户的权限并同时撤销他授予的用户的权限?到目前为止我已经尝试过类似的事情 REVOKE SELECT ON mysql.sometable FROM 'user'@'%'
如果我使用普通用户帐户创建表: create table test (a text, b text, c text); 同一用户可以对表执行所有操作... john=# \z test
在 PostgreSQL 中,当 super 用户授予任何权限时(例如 GRANT SELECT ON TABLE table_name),只有 super 用户可以撤销它们。 有没有其他 super
我试过使用文档 here但似乎没有帮助。如果可以请给我一个例子。 revoke select (column1, column2) on table from specific_user 没用。 Ac
有没有一种方法可以撤销用户对目录对象(即 information_schema)和 PostgreSQL 表(即 pg_catalog)的权限?我已经尝试了几件事并搜索了网络。我没有任何运气。我读到的
在我的应用程序中,我使用的是 APNS。我已经制作了证书,但我对使用感到困惑。我收到以下错误。 Warning: stream_socket_client(): SSL operation faile
[我检查过类似的帖子,我的问题与其他人的问题略有不同,因为我们有多个应用程序在一个证书下签名] 我们受委托(delegate)为客户开发现有的 iOS 应用程序,现在需要使用他们的证书将其分发到应用程
我的 APNs 证书即将到期,所以我撤销了 APNs 证书(只是为了确保一切正常)。但是 30 分钟后我仍然收到测试推送通知。是因为苹果的缓存吗?会持续多久? 最佳答案 根据您的问题,您的旧证书尚未过
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 关于您编写的代码问题的问题必须在问题本身中描述具体问题 — 并且包括有效代码 以重现它。参见 SSC
是否可以在 C# 中执行类似的操作? logger != null ? logger.Log(消息) : ;//如果为 null 则什么都不做 或 记录器!?? logger.Log(消息);//只有
我不小心执行了以下命令: git rm -r . 毫不奇怪,它删除了所有内容。有什么办法可以恢复吗? 最佳答案 尝试: git reset HEAD 如果您没有任何您关心的未提交的更改,那么 git
我们有一个已授予某些权限的应用程序。然后用户从设置 -> 应用程序 -> 权限撤销权限。我提到该应用此时处于后台。 有时,应用会在上述流程发生时崩溃。有什么办法可以解决这个问题吗?我们可以知道何时从应
如何使用 AnkhSvn/VS 2010 撤消/恢复我已提交的更改。 (我很清楚您不能“删除”subversion 存储库中的内容)。 问题很简单, 您正在处理 HEAD(例如 rev 100)。你发
我想知道是否可以撤销 ThinkTecture Identity Server 颁发的 OAuth 2.0 token ,因为我想让我的应用程序注销。 最佳答案 这仅适用于实现 RFC 7009 的
我有一个 grails 应用程序,我希望用户授予我访问他/她的 LinkedIn 帐户的权限,以获取信息并以不同的方式显示它。 我能够做到以下几点: 获取授权码 使用该授权码获取访问 token 我将
我是一名优秀的程序员,十分优秀!