我正在从以前的iOS移植一个正在运行的应用程序,并且在使用新的应用内购买收据时出现问题。
我们现在的工作方式是从SKPaymentTransaction
对象获取transactionReceipt属性并将其发送到服务器进行验证。
从我可以从其他问题中收集到的信息,似乎收据现在放在一个地方,是:
[[NSBundle mainBundle] appStoreReceiptURL];
这里有一些我不明白的事情:
非常困惑,任何帮助将不胜感激。
答案 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
提出错误报告