2

我正在我的应用程序中实现自动更新订阅。

目前,为了检查用户是否有活动订阅,我latest_receipt_info从 Apple/verifyReceipt服务返回的响应 JSON 中检查数组中的所有记录,找到具有最大值的记录expires_date_ms并检查该日期是否在未来。在检查日期之前,我还要检查该status字段是否为 0(收据有效)。

我以为这就够了,但我最近发现还有另一个领域 - cancellation_date_ms. 据我从文档中了解到,如果用户通过 Apple 支持取消了订阅,则存在此文件。

来自(Apple 文档

您可以使用此值来:

确定是否停止提供与购买相关的内容。

检查任何最新的续订交易,这可能表明用户重新开始或升级了他们的订阅,以进行自动续订订阅购买。

所以我想知道,如果用户通过Apple支持取消订阅,这会影响expires_date_ms当前订阅期吗?所以下次我检查expires_date_ms时,我知道订阅没有激活。

还是expires_date_ms和用户取消订阅前一样,所以我也需要检查一下cancellation_date_ms

4

1 回答 1

6

你也应该检查一下cancellation_date_msExpires_date当客户通过 Apple 支持取消订阅时,该字段不会更改。

这是带有退款的生产 JSON 示例:

"latest_receipt_info": [
    {
        "quantity": "1",
        "product_id": "XXX",
        "transaction_id": "150000567873035",
        "original_transaction_id": "150000567873035",
        "purchase_date": "2019-11-10 17:37:05 Etc/GMT",
        "purchase_date_ms": "1573407425000",
        "purchase_date_pst": "2019-11-10 09:37:05 America/Los_Angeles",
        "original_purchase_date": "2019-11-10 17:37:06 Etc/GMT",
        "original_purchase_date_ms": "1573407426000",
        "original_purchase_date_pst": "2019-11-10 09:37:06 America/Los_Angeles",
        "expires_date": "2019-12-10 17:37:05 Etc/GMT",
        "expires_date_ms": "1575999425000",
        "expires_date_pst": "2019-12-10 09:37:05 America/Los_Angeles",
        "cancellation_date": "2019-12-05 19:14:48 Etc/GMT",
        "cancellation_date_ms": "1575573288000",
        "cancellation_date_pst": "2019-12-05 11:14:48 America/Los_Angeles",
        "web_order_line_item_id": "150000194283402",
        "is_trial_period": "false",
        "is_in_intro_offer_period": "false",
        "cancellation_reason": "0",
        "subscription_group_identifier": "20502261"
    }
],
"pending_renewal_info": [
    {
        "auto_renew_product_id": "XXX",
        "original_transaction_id": "150000567873035",
        "product_id": "XXX",
        "auto_renew_status": "0"
    }
]}
于 2019-12-10T03:30:43.580 回答