提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我在解析Apple收据验证响应(沙箱)时需要帮助。 因此,用户使用iPhone应用程序进行了应用程序内购买,并向我发送了收据,我已使用PHP的Apple Services()对其进行了验证。 验证是可以的,我得到了响应,所以现在我需要提取一个事务ID,以便将其存储在数据库中,但是我不知道应该从in_app密钥中提取哪个收据。 那里根本没有单个收据,但是还包含所有先前收据的数组。 该响应是在应用中进行“耗材”和“不可续订”后获得的。
我找到了几篇有关此问题的文章,但是EACH直接引用了收据,因为它是一个单独的属性,其中包含所有数据,但这里没有。
例如。 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文档失败:
苹果说要使用base64encoding的标准方法-之后,我们用in_app收据数组接收到该奇怪的响应。
我在github上发现了一个进行验证的类,该类进行了许多测试:
1)向Apple发送收据2)检查transactionID是否唯一3)检查收据或交易对象是否有效
而且我看到他们在发送之前没有使用标准的编码方法,但是他们使用了自定义类别NSData + Base64。 我将此类别添加到项目中,并使用该类别中的方法对收据进行编码。 之后,我开始接收具有新结构的响应-我们需要的响应-没有数组中的收据,而是包含所有需要的数据的单一收据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.