【问题标题】:Server side receipt validation for non-consumable products in iOS7 and transactionReceipt deprecationiOS7中非消耗品的服务器端收据验证和transactionReceipt弃用
【发布时间】:2013-10-10 03:09:39
【问题描述】:

我正在从以前的 iOS 移植一个正常工作的应用程序,但在使用新的应用内购买收据时遇到了问题。

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

从我从其他问题中收集到的信息来看,收据现在似乎保存在一个地方,即:

[[NSBundle mainBundle] appStoreReceiptURL];

这里有几件事我不明白:

  1. 现在是否所有购买的产品都有一张收据?
  2. 如果是这样,这个文件会不断增长吗?
  3. 如果我想将单个产品的单个收据发送到服务器,我该怎么做?
  4. 是始终将完整文件发送到服务器的唯一方法吗?

对此非常困惑,任何帮助将不胜感激。

【问题讨论】:

  • 我有同样的问题,收据文件随着购买次数的增加而增长。你找到任何替代解决方案了吗??

标签: validation in-app-purchase ios7 receipt


【解决方案1】:

根据我通过 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 提出错误报告

【讨论】:

  • 感谢您的回答!
猜你喜欢
  • 2018-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-13
  • 2014-05-22
相关资源
最近更新 更多