IOS7验证iap收据,in_app文件是啥意思?
Posted
技术标签:
【中文标题】IOS7验证iap收据,in_app文件是啥意思?【英文标题】:IOS7 verify iap receipt, What's the in_app filed mean?IOS7验证iap收据,in_app文件是什么意思? 【发布时间】:2014-10-28 03:12:11 【问题描述】:app做一个iap,并将收据发送到我的服务器,我的服务器将它发送到苹果的服务器以验证收据。
ios7改变了返回数据。
现在,返回数据如下:
u'environment': u'Sandbox',
u'receipt': u'adam_id': 0,
u'app_item_id': 0,
u'application_version': u'1.0',
u'bundle_id': u'com.mztimes.sanguo.international',
u'download_id': 0,
u'in_app': [u'is_trial_period': u'false',
u'original_purchase_date': u'2014-10-24 06:54:20 Etc/GMT',
u'original_purchase_date_ms': u'1414133660000',
u'original_purchase_date_pst': u'2014-10-23 23:54:20 America/Los_Angeles',
u'original_transaction_id': u'1000000128944402',
u'product_id': u'com.mztimes.sanguo.international.60gold',
u'purchase_date': u'2014-10-28 01:56:45 Etc/GMT',
u'purchase_date_ms': u'1414461405000',
u'purchase_date_pst': u'2014-10-27 18:56:45 America/Los_Angeles',
u'quantity': u'1',
u'transaction_id': u'1000000128944402',
u'is_trial_period': u'false',
u'original_purchase_date': u'2014-10-24 06:52:30 Etc/GMT',
u'original_purchase_date_ms': u'1414133550000',
u'original_purchase_date_pst': u'2014-10-23 23:52:30 America/Los_Angeles',
u'original_transaction_id': u'1000000128944196',
u'product_id': u'com.mztimes.sanguo.international.300gold',
u'purchase_date': u'2014-10-28 01:56:45 Etc/GMT',
u'purchase_date_ms': u'1414461405000',
u'purchase_date_pst': u'2014-10-27 18:56:45 America/Los_Angeles',
u'quantity': u'1',
u'transaction_id': u'1000000128944196',
u'is_trial_period': u'false',
u'original_purchase_date': u'2014-10-28 01:56:45 Etc/GMT',
u'original_purchase_date_ms': u'1414461405000',
u'original_purchase_date_pst': u'2014-10-27 18:56:45 America/Los_Angeles',
u'original_transaction_id': u'1000000129320617',
u'product_id': u'com.mztimes.sanguo.international.980gold',
u'purchase_date': u'2014-10-28 01:56:45 Etc/GMT',
u'purchase_date_ms': u'1414461405000',
u'purchase_date_pst': u'2014-10-27 18:56:45 America/Los_Angeles',
u'quantity': u'1',
u'transaction_id': u'1000000129320617'],
u'original_application_version': u'1.0',
u'original_purchase_date': u'2013-08-01 07:00:00 Etc/GMT',
u'original_purchase_date_ms': u'1375340400000',
u'original_purchase_date_pst': u'2013-08-01 00:00:00 America/Los_Angeles',
u'receipt_type': u'ProductionSandbox',
u'request_date': u'2014-10-28 02:50:09 Etc/GMT',
u'request_date_ms': u'1414464609873',
u'request_date_pst': u'2014-10-27 19:50:09 America/Los_Angeles',
u'version_external_identifier': 0,
u'status': 0
查看 in_app 字段:文档说:
在 JSON 文件中,该键的值是一个包含所有应用内购买收据的数组。在 ASN.1 文件中,有多个字段的类型均为 17,每个字段都包含一个应用内购买收据。
在我的许多测试中,in_app 列表的最后一个元素是我发送到苹果服务器的收据信息。 但是其他两个元素是什么?
我发送不同的收据进行验证,其他两个元素始终相同。
为什么会这样?帮帮我!
【问题讨论】:
【参考方案1】:正如doc 所说,包含基于输入 base-64 收据数据中存在的应用内购买交易的所有应用内购买收据。另请参阅iOS IAP in_app field in receipt 和Removing in app purchases from a new version of the application(iOS)
应用内购买收据
应用内购买的收据。
ASN.1 字段类型 17
应用内购买收据属性的ASN.1 Field Value SET
JSON 字段名 in_app
应用内购买收据的 JSON 字段值数组
在JSON文件中,这个key的值是一个数组,包含所有 基于应用内购买交易的应用内购买收据 存在于输入的 base-64 收据数据中。对于包含 自动更新订阅,检查 latest_receipt_info 键获取最近续订的状态。
在 ASN.1 文件中,有多个字段的类型均为 17, 每个都包含一个应用内购买收据。
注意:空数组是有效收据。
消耗品的应用内购买收据被添加到 购买时的收据。它保存在收据中,直到 您的应用程序完成了该交易。在那之后,它被删除 下次更新收据时从收据开始 - 例如, 当用户进行另一次购买或您的应用明确时 刷新收据。
非消耗品的应用内购买收据, 自动续订订阅、非续订订阅或免费 订阅无限期地保留在收据中。
【讨论】:
When to refresh a receipt vs restore purchases in iOS?以上是关于IOS7验证iap收据,in_app文件是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章
刷新 iOS IAP 收据以恢复购买始终会返回收据,即使未进行任何购买也是如此