2014-12-10 154 views
0

所以,我有一个应用程序,刚刚被苹果拒绝,因为没有实施restorePurchases按钮,用户恢复他们购买的任何非消耗品。我知道背后的逻辑,并且因为错过它而感到不好(或者至少没有理解它的实现的阻塞方面),但是我有一个不寻常的情况(我不确定是否有所不同,但无法找到很多围绕它的最佳实践......)安全问题与恢复在应用程序内购买

我的应用程序是跨平台的,因此用户可以在Android和iOS上购买相同的产品,并且这些购买需要持续跨平台...所以,成功验证后,我更新了后端的值,这两个客户端都具有读写权限。由于这个原因,我认为我坚持跨设备和平台进行购买很好......但购买与我的应用程序用户类中的帐户绑定。现在

,如果我要实现按钮所要求的苹果,什么是从恢复使用Apple ID在我的应用程序数据库相关联给其他用户的购买停止用户...可能导致的收入泄漏'可以这么说 - 例如,以朋友用户的身份登录,恢复购买,这在我的情况下会将购买复制到用户类...然后我有两个用户只有一个相关的收入......

所以......问题:

1)我被天真欺骗系统的能力吗? 2)有没有人有任何有关如何解决/解决此问题的最佳做法?

回答

2

苹果在In-App Purchase Programming Guide

首先解决了这一点,你可以提供你的用户的帐户名与购买信息,以帮助苹果来检测违规行为 -

检测违规行为

App Store使用不规则的活动检测引擎来帮助 实施欺诈行为。有些应用程序可以提供额外的信息来提高引擎检测异常事务的能力。如果您的用户 有您的帐户,那么除了他们的App Store帐户之外, 还会在请求付款时提供此附加信息。

然后,当谈到恢复的购买可以提供这种相同的用户帐户信息restoreCompletedTransactionsWithApplicationUsername:方法 -

恢复完成的交易

您的应用程序通过调用 启动过程SKPaymentQueue的restoreCompletedTransactions方法。这会发送一个 请求到App Store,以恢复所有应用的完成 事务。如果您的应用程序为其支付请求的应用程序用户名 属性设置了值,如检测不规范 活动中所述,请在恢复事务时使用restoreCompletedTransactionsWithApplicationUsername: 方法提供相同的信息。

最后,您可以使用服务器上的收据信息将原始事务与恢复的事务关联到相同的用户标识,并且在不匹配时不恢复功能。

+0

啊哈,从来没有抓到有关用户名的部分......谢谢!如何提供付款? – 2014-12-10 23:26:09

+0

您指的是哪一项付款? – Paulw11 2014-12-10 23:28:30

+0

“如果您的用户在您的账户中,除了他们的App Store账户,请在付款时提供这些额外的信息。” ...任何想法如何包含我的用户名付款? – 2014-12-10 23:30:43