我在解析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

我是第一次处理此问题,我们将不胜感激,如果您需要其他信息,请告诉我,我们很乐意指出。

收据验证后的Apple回应 更新:

请注意有关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,因此我必须确定!

谢谢!

#1楼 票数:0 已采纳

因此,我想回答这个问题,这可能对某人有所帮助,尤其是如果这是第一次处理此问题时。

导致这种响应结构的原因不是PHP方面,而是iPhone代码方面。 我不确定在那里发生了什么,但是我要求开发人员将问题的描述发送给我,所以这里是(引用):

问题出在收据编码中,是Apple文档失败:

在此处输入图片说明

苹果说要使用base64encoding的标准方法-之后,我们用in_app收据数组接收到该奇怪的响应。

我在github上发现了一个进行验证的类,该类进行了许多测试:

1)向Apple发送收据2)检查transactionID是否唯一3)检查收据或交易对象是否有效

而且我看到他们在发送之前没有使用标准的编码方法,但是他们使用了自定义类别NSData + Base64。 我将此类别添加到项目中,并使用该类别中的方法对收据进行编码。 之后,我开始接收具有新结构的响应-我们需要的响应-没有数组中的收据,而是包含所有需要的数据的单一收据。

  ask by Adrian translate from so

未解决问题?本站智能推荐:

1回复

如何通过PHP/Java验证Android的inapp购买收据?

目前,我们在Android上的应用之一很容易受到IAP黑客的攻击。 我们希望避免这种情况,因为这会破坏一些基于网络的系统,并损害我们的收入。 我们想知道在给他物品之前是否有一种方法可以验证购买收据。 非常感谢你。 也为我的英语不好而感到抱歉,他们在某些时候听起来可能很粗鲁(有人告诉我
1回复

iOS应用内购买收据未返回original_purchase_date进行重新下载

我正在尝试使用iOS商店收据来区分购买和重新下载,具体取决于original_purchase_date和/或original_transaction_id 。 无论交易是新购买还是重新下载,商店收据始终返回新的original_purchase_date ,其等于purchase_date值
2回复

iOS8,Swift,IAP的收据验证

我正在拼命地尝试在用 Swift、IOS8.1 编写的未来 IOS 应用程序中验证应用程序内的收据我正在使用 Alamofire 框架来快速补偿 NSURLConnection 中的一个错误,但仍然没有从 Apple 服务器返回。 来自服务器的反馈是: 而不是申请收据... 任何帮助表示赞赏
1回复

故障情况下如何刷新收据以进行验证?

我已经成功验证了沙箱收据,现在我考虑了失败的情况。在这种情况下,用户购买后关闭了手机,然后收据发送到服务器,并且几天都没有在手机上使用,我该如何处理?不知道。有人可以帮我吗? 谢谢Amuthapriya K
1回复

没有/verifyReceipt请求的后端iOSiap收据验证

我想在后端代码中验证iOS应用内购买收据。 Apple使用external / verifyReceipt请求做出此设计的决定显然是愚蠢的:它会导致延迟并增加网络错误处理的复杂性。 更重要的是,收据中的数据看起来可以通过公钥验证。 在对收据的signature字段进行一些分析之后,它似
1回复

需要使用托管内容进行收据验证

简而言之,如果我仅支持iOS 6,并且产品必须从Apple的服务器下载托管内容,是否需要从单独的服务器进行收据验证?
1回复

如果您尝试两次验证相同的iTunesIAP收据,第二次会失败吗?

我对苹果的收据验证服务有疑问(如此处所述): https : //developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html#//apple
1回复

提交到AppStore时应使用哪个recepit验证URL?

我的应用程序使用“自动续订”订阅,并且收据验证是通过设备完成的。 提交到App Store时应该使用沙盒收据验证URL还是生产收据验证URL?