2014-02-19 38 views
1

提供我非易耗品内容不购买之后,但在需求,每当用户想下载的内容立即发生。服务器也有收据验证程序,所以我需要保存收据以便稍后向服务器显示验证和内容下载。坚持交易​​收据

我知道,适用于iOS 7.0我没有购买发票,因为我的IAP购买收据位于应用程序收据本身,这是不难分析和获取信息。

但是对于iOS 6.1或更早版本,我可以在NSUserDefaults中保存事务的收据,以便稍后当我需要从自托管服务器下载某些内容时,我可以使用该收据验证服务器上的特定下载那么服务器会发送给苹果)?存储收据是否合法,安全和普遍?

回答

2

我敢肯定你已经通过下面的链接去

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/Restoring.html#//apple_ref/doc/uid/TP40008267-CH8-SW9

除此之外,我相信这是在节约的交易数据没有问题。至于其保存在NSUserDefaults的,有一个问题与我能想到的:如果用户删除并重新安装应用程序,或者买了新手机,数据不会被存储在设备上。因此,以自己托管的服务器以某种方式保存收据会更好。对于预iOS7设备,链路提到了这种技术:

“如果你需要提前支持的iOS版本的iOS比7,在应用程序收据不可用,恢复完成的交易,而不是”。

+0

因此,如果有人将'NSUserDefaults'偷收据,他可以将它发送到我的服务器,并下载我试图保护内容。或者我错过了什么?此外,我不明白在我的服务器中保存收据背后的逻辑。那么我应该保持什么设备?从设备到服务器发送什么信息以确保提供的内容得到认证?我会很感激你的想法。 – Pablo

+0

我不认为任何人都可以真正窃取收据,因为毕竟他们连接到特定用户的苹果ID。除此之外,因为您的非消费品是按需交付的,所以我假设您也将每个用户的购买数据保存在您的服务器上。当您将收据保存在服务器中时,无论用户什么时候尝试实际下载内容,都可以检查与该内容相关的收据,作为您的附加安全层。这是我建议将它保存在服务器上的唯一原因。 –

+0

即使收到连接到苹果ID,只有收据数据(使用IFUNBOX被盗,即使设备没有越狱)会给坏人的机会将其发送到我的服务器进行身份验证。不,我根本不保留购买信息。我的服务器仅用作设备和Apple验证服务器之间的代理服务器。我明白你的意思,只需通过验证购买日期和其他字段来检查收据是否有效。但是,当收据本身被盗时,我们仍然会首先提出问题。可下载的内容甚至可以从iDevice下载,但可以从PC下载,使用HTTP(S)请求。 – Pablo