6

我最近根据 Apple 的文档设置了一项服务来验证和记录从我的 iOS 购买的内容。经过几次购买后,我查看了我的表格,发现我有 45 次购买返回状态码为 0,根据 Apple 的文档,这意味着它们是有效的。问题是当我登录我的 iTunes 帐户时,它只记录了 22 次有效购买。在仔细检查来自 Apple 的状态为 0 的 JSON 响应后,我发现了两种变化:

{
    "status": 0,
    "environment": "Production",
    "receipt": {
        "receipt_type": "Production",
        "adam_id": 888310447,
        "app_item_id": 888310447,
        "bundle_id": "com.studioName.gameName",
        "application_version": "1.4",
        "download_id": 62010318102259,
        "version_external_identifier": 810789159,
        "request_date": "2014-12-16 15:34:17 Etc/GMT",
        "request_date_ms": "1418744057267",
        "request_date_pst": "2014-12-16 07:34:17 America/Los_Angeles",
        "original_purchase_date": "2014-07-08 18:04:28 Etc/GMT",
        "original_purchase_date_ms": "1404842668000",
        "original_purchase_date_pst": "2014-07-08 11:04:28 America/Los_Angeles",
        "original_application_version": "1.1",
        "in_app": []
    }
}

{
    "status": 0,
    "environment": "Production",
    "receipt": {
        "receipt_type": "Production",
        "adam_id": 888310447,
        "app_item_id": 888310447,
        "bundle_id": "com.studioName.gameName",
        "application_version": "1.4",
        "download_id": 39011903209949,
        "version_external_identifier": 810789159,
        "request_date": "2014-12-16 15:11:10 Etc/GMT",
        "request_date_ms": "1418742670718",
        "request_date_pst": "2014-12-16 07:11:10 America/Los_Angeles",
        "original_purchase_date": "2014-10-15 05:52:28 Etc/GMT",
        "original_purchase_date_ms": "1413352348000",
        "original_purchase_date_pst": "2014-10-14 22:52:28 America/Los_Angeles",
        "original_application_version": "1.2.4",
        "in_app": [
            {
                "quantity": "1",
                "product_id": "com.studioName.gameName.productName",
                "transaction_id": "190000148450370",
                "original_transaction_id": "190000148450370",
                "purchase_date": "2014-11-29 08:22:49 Etc/GMT",
                "purchase_date_ms": "1417249369000",
                "purchase_date_pst": "2014-11-29 00:22:49 America/Los_Angeles",
                "original_purchase_date": "2014-10-17 08:30:26 Etc/GMT",
                "original_purchase_date_ms": "1413534626000",
                "original_purchase_date_pst": "2014-10-17 01:30:26 America/Los_Angeles",
                "is_trial_period": "false"
            }
        ]
    }
}

请注意,应用程序内的第一个对象数组是空的,而第二个似乎实际上有 IAP 的收据。我的假设是我应该查看填充了应用内数组的收据。我现在的问题是,我已经解析了没有应用内数组的收据,我仍然有 25 次有效购买(比 Apple 记录的多 3 次)。

我的下一个想法是,其中一些购买可能是修复。我在收据验证编程指南中找到了这个注释。它在原始交易标识符下声明:

“对于恢复先前交易的交易,原始交易的交易标识符。否则,与交易标识符相同。”

在我检查了我所有的有效收据后,我没有发现 theoriginal_transaction_id和 thetransaction_id不同的实例。为此,我进行了重复购买,提示我该项目已被购买,并询问我是否愿意免费恢复它。当我这样做并检查收据时,我发现即使在这种情况下,两个交易 ID 也是相同的,这不应该是这种情况。

当我进行询问时,我收到了一个预设回复,告诉我 iTunes 的 IAP 部分工作正常。如果有人可以帮助阐明我如何更好地过滤这些以匹配 Apple 的 IAP 最终计数,将不胜感激!

4

0 回答 0