成功验证后获取当前 in-app 购买的收据?
Getting receipt from current in-app purchase after successful validation?
我需要有关解析 Apple 收据验证响应(沙盒)的帮助。因此,用户使用 iPhone 应用进行了 in-app 购买,并将收据发送给我,我通过 PHP 使用 Apple 服务 () 对其进行了验证。验证没问题,我得到了回复,所以现在我需要提取一个交易 ID,以便将其存储在数据库中,但我不知道应该从 in_app 键中提取哪个收据。那里根本没有一张收据,而是一个包含所有以前收据的数组。此响应是在应用程序中 "Consumable" 和 "Non-Renewing Subscription" 之后获得的。
我找到了几篇介绍此内容的文章,但每篇文章都直接引用收据,因为它是一张 属性,其中包含所有数据,但此处不包含。
例如。 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,所以我必须确定!
谢谢!
所以我想回答这个问题,因为它可能会对外面的人有所帮助,特别是如果这个人是第一次处理这个问题。
导致这种响应结构的不是 PHP 端,而是 iPhone 代码端。我不确定那里发生了什么,但我要求开发人员将他对问题的描述发给我,所以这里是(引用):
问题出在收据编码上,是 Apple 文档失败:
Apple 说要使用 base64 编码的标准方法 - 之后我们会收到带有 in_app 收据数组的奇怪响应。
我在 github 上发现了一个 class,它进行了很多测试的验证:
1) 将收据发送给 Apple
2) 检查 transactionID 是否唯一
3) 检查收据或交易对象是否有效
而且我看到他们发送前没有使用标准的编码方式,而是使用自定义类NSData+Base64。我将此类别添加到项目并使用此类别的方法对收据进行编码。在那之后,我开始收到具有新结构的响应——我们需要的——数组中没有收据,而是包含所有需要数据的单张收据。
我需要有关解析 Apple 收据验证响应(沙盒)的帮助。因此,用户使用 iPhone 应用进行了 in-app 购买,并将收据发送给我,我通过 PHP 使用 Apple 服务 () 对其进行了验证。验证没问题,我得到了回复,所以现在我需要提取一个交易 ID,以便将其存储在数据库中,但我不知道应该从 in_app 键中提取哪个收据。那里根本没有一张收据,而是一个包含所有以前收据的数组。此响应是在应用程序中 "Consumable" 和 "Non-Renewing Subscription" 之后获得的。
我找到了几篇介绍此内容的文章,但每篇文章都直接引用收据,因为它是一张 属性,其中包含所有数据,但此处不包含。
例如。 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,所以我必须确定!
谢谢!
所以我想回答这个问题,因为它可能会对外面的人有所帮助,特别是如果这个人是第一次处理这个问题。
导致这种响应结构的不是 PHP 端,而是 iPhone 代码端。我不确定那里发生了什么,但我要求开发人员将他对问题的描述发给我,所以这里是(引用):
问题出在收据编码上,是 Apple 文档失败:
Apple 说要使用 base64 编码的标准方法 - 之后我们会收到带有 in_app 收据数组的奇怪响应。
我在 github 上发现了一个 class,它进行了很多测试的验证:
1) 将收据发送给 Apple 2) 检查 transactionID 是否唯一 3) 检查收据或交易对象是否有效
而且我看到他们发送前没有使用标准的编码方式,而是使用自定义类NSData+Base64。我将此类别添加到项目并使用此类别的方法对收据进行编码。在那之后,我开始收到具有新结构的响应——我们需要的——数组中没有收据,而是包含所有需要数据的单张收据。