iOS7中不可消耗产品的服务器端收据验证和transactionReceipt弃用

时间:2013-10-03 12:09:18

标签: validation in-app-purchase ios7 receipt

我正在从以前的iOS移植一个正在运行的应用程序,并且在使用新的应用内购买收据时出现问题。

我们现在的工作方式是从SKPaymentTransaction对象获取transactionReceipt属性并将其发送到服务器进行验证。

从我可以从其他问题中收集到的信息,似乎收据现在放在一个地方,是:

[[NSBundle mainBundle] appStoreReceiptURL];

这里有一些我不明白的事情:

  1. 现在所有购买的产品都有一张收据吗?
  2. 如果是这样,这个文件是否会成长并增长?
  3. 如果我想将单个产品的单张收据发送到服务器,我该怎么办?
  4. 是始终将完整文件发送到服务器的唯一方法吗?
  5. 非常困惑,任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:18)

从我通过Apple的文档收集的内容。

1)所有购买的产品都有一张收据。为了执行服务器端验证,您将整个收据发送到您的服务器,然后将其转发给Apple进行验证。请参阅Apple开发者论坛上的这篇文章(从评论13开始)https://devforums.apple.com/thread/193893?tstart=0

2)非消耗品将永久保留在收据中,所以是的,它会增长和增长。通过调用finishTransaction完成后,耗材将从收据中懒散地移除。见https://devforums.apple.com/message/876265#876265

3)iOS6循环使用updatedTransactions并将单个收据发送到服务器进行验证的方式似乎与新的iOS7设计不一致。 Apple开发者论坛上的这篇文章建议您“使用收据将整个交易列表发送到您的服务器。验证收据后,交付所有产品,并完成所有交易。https://devforums.apple.com/message/897870#897870

4)看起来确实如此。

如果您认为缺少iOS7文档,则可以使用Apple

提出错误报告