【发布时间】:2015-03-13 02:15:01
【问题描述】:
我在解析 Apple 收据验证响应(沙盒)方面需要帮助。因此,用户使用 iPhone 应用程序进行应用程序内购买,并将收据发送给我,我使用 PHP 的 Apple Services () 对其进行验证。验证没问题,我得到了响应,所以现在我需要提取一个事务 ID,以便将其存储在数据库中,但我不知道应该从 in_app 键中提取哪个收据。那里根本没有一张收据,而是一个包含所有先前收据的数组。此响应是在应用中进行“消耗品”和“非续订订阅”后获得的。
我找到了几篇文章,但每篇文章都直接引用收据,因为它是一个包含所有数据的单一属性,但不是在这里。
例如。 https://github.com/chrismaddern/iOS-Receipt-Validator-PHP 看起来很有前途,但最后他是这样打开收据的:
return $decoded_response->receipt;
不适用于我的回复。我想这是旧的回应或其他什么。
这个也是https://gist.github.com/jamesstout/5073237。
我是第一次处理这个问题,我们将不胜感激,如果您需要更多信息,请告诉我,我很乐意指出。
更新:
注意 in_app 数组中的项目,这些是收据,但没有以任何方式排序,例如 original_purchase_date_pst 是前 4 个项目:
[0] 2015-01-12 10:33:13 Etc/GMT
[1] 2015-01-12 11:35:53 Etc/GMT
[2] 2015-01-12 11:12:36 Etc/GMT
[3] 2015-01-12 11:15:57 Etc/GMT
我的意思是我可以遍历整个数组,但似乎有点奇怪,没有更简单的方法来获取最新的收据。我可以确定清单中会有最新的收据吗?我需要从中获取交易 ID,所以我必须确定!
谢谢!
【问题讨论】:
-
那么
in_app数组中索引 0 处的项目是最近购买的吗?这些项目的日期是否默认排序?如果不是,您需要根据日期对该对象数组进行排序,并从最近的对象中获取 id。 -
更新了问题,如下图。
-
我猜您需要遍历对象数组才能找到最新的对象。我不确定
purchase_date_*和original_purchase_date_*之间可能有什么区别。两者的默认排序有区别吗? -
问题是购买日期总是一样的,总是2015-01-13 19:33:45 Etc/GMT。很奇怪。
-
那可能是最初的应用“购买”日期。
标签: php ios validation receipt