关于在应用购买中恢复的安全问题

时间:2014-12-10 22:49:03

标签: android ios iphone in-app-purchase

所以,我有一个刚被Apple拒绝的应用程序,因为没有为用户实现restorePurchases按钮来恢复他们购买的任何非消耗品。

我理解这背后的逻辑,并且错过它(或者至少不了解其实现的阻塞方面)感觉很糟糕,但我有一个不寻常的情况(我不确定是不是很不寻常,但是找不到很多关于它的最佳实践......)

我的应用程序是跨平台的,因此用户可以在Android和iOS上购买相同的项目,并且这些购买需要跨平台持久...因此,在成功进行身份验证后,我会在后端更新一个值两个客户端都具有./ / p>的读写权限

正因为如此,我认为我坚持购买设备和平台就好......但购买的内容与我的应用用户类帐户有关。

现在,如果我按照Apple的要求实施按钮,那么阻止用户将与Apple ID 关联的购买还原到我的应用程序数据库中的其他用户的原因是什么...可能导致可以说是“收入泄漏” - 例如,以朋友用户身份登录,恢复购买,在我的情况下会将购买复制到用户类...然后我有两个只有一个关联的用户收入......

所以...问题:

1)我是否天真地欺骗系统? 2)有没有人有关于如何解决/解决这个问题的最佳实践?

1 个答案:

答案 0 :(得分:2)

Apple在In-App Purchase Programming Guide

中解决此问题

首先,您可以提供用户的帐户名称和购买信息,以帮助Apple检测不规则活动 -

  

检测不规则活动

     

App Store使用不规则活动检测引擎来提供帮助   打击欺诈。某些应用可以提供其他信息以进行改进   引擎检测异常事务的能力。如果您的用户   除了App Store帐户外,还有一个帐户,   在请求付款时提供此额外信息。

然后,在恢复购买时,您可以向restoreCompletedTransactionsWithApplicationUsername:方法提供相同的用户帐户信息 -

  

恢复已完成的交易

     

您的应用通过调用来启动该过程   SKPaymentQueue的restoreCompletedTransactions方法。这发送一个   请求App Store恢复您已完成的所有应用   交易。如果您的应用为applicationUsername设置了值   其支付请求的属性,如检测不规则   Activity,使用restoreCompletedTransactionsWithApplicationUsername:   恢复事务时提供相同信息的方法。

最后,您可以使用服务器上的收据信息将原始事务与同一用户ID的还原事务相关联,如果不匹配则不恢复功能。