why our server received DID_CHANGE_RENEWAL_STATUS notification long time after use's grace period expired?

I am still using App Store Server Notifications 1.0, i wanna to recognized the situation that user didn't fix while pay issue occur, so he is expired after grace period.

But I notice that there will be a long time after his grace period I received the notification.

Such as:

{
 "auto_renew_product_id": "com.protect.adpatrol.weekly2",
 "auto_renew_status": "false",
 "auto_renew_status_change_date": "2023-01-03 16:50:59 Etc/GMT",
 "auto_renew_status_change_date_ms": "1672764659000",
 "auto_renew_status_change_date_pst": "2023-01-03 08:50:59 America/Los_Angeles",
 "environment": "PROD",
 "notification_type": "DID_CHANGE_RENEWAL_STATUS",
 "original_transaction_id": 150001223579830,
 "unified_receipt": {
  "environment": "Production",
  "latest_receipt_info": [
   {
    "expires_date": "2022-11-01 09:15:38 Etc/GMT",
    "expires_date_ms": "1667294138000",
    "expires_date_pst": "2022-11-01 02:15:38 America/Los_Angeles",
    "in_app_ownership_type": "PURCHASED",
    "is_in_intro_offer_period": "false",
    "is_trial_period": "true",
    "original_purchase_date": "2022-10-29 09:15:42 Etc/GMT",
    "original_purchase_date_ms": "1667034942000",
    "original_purchase_date_pst": "2022-10-29 02:15:42 America/Los_Angeles",
    "original_transaction_id": "150001223579830",
    "product_id": "com.protect.adpatrol.weekly2",
    "purchase_date": "2022-10-29 09:15:38 Etc/GMT",
    "purchase_date_ms": "1667034938000",
    "purchase_date_pst": "2022-10-29 02:15:38 America/Los_Angeles",
    "quantity": "1",
    "subscription_group_identifier": "20900376",
    "transaction_id": "150001223579830",
    "web_order_line_item_id": "150000550680992"
   }
  ],
  "pending_renewal_info": [
   {
    "auto_renew_product_id": "com.protect.adpatrol.weekly2",
    "auto_renew_status": "0",
    "expiration_intent": "2",
    "grace_period_expires_date": "2022-11-07 10:15:38 Etc/GMT",
    "grace_period_expires_date_ms": "1667816138000",
    "grace_period_expires_date_pst": "2022-11-07 02:15:38 America/Los_Angeles",
    "is_in_billing_retry_period": "0",
    "original_transaction_id": "150001223579830",
    "product_id": "com.protect.adpatrol.weekly2"
   }
  ],
  "status": 0
 }
}

Notice that his grace period is expire at '2022-11-07 10:15:38 Etc/GMT', but his renew status change at '2023-01-03 16:50:59 Etc/GMT'. It is almost 60 days.

So this message is sent after billing retry attempts(up to 60 days) fail?

Answered by App Store Commerce Engineer in 750530022

In V1 notifications, DID_CHANGE_RENEWAL_STATUS is sent whenever auto-renewal is toggled on or off. In this case it could have been the user turning off auto renewal, indicating they don't want their payment method to be charged while the billing retry period is active, or it could have been the system disabling auto-renewal at the end of the billing retry period.

Accepted Answer

In V1 notifications, DID_CHANGE_RENEWAL_STATUS is sent whenever auto-renewal is toggled on or off. In this case it could have been the user turning off auto renewal, indicating they don't want their payment method to be charged while the billing retry period is active, or it could have been the system disabling auto-renewal at the end of the billing retry period.

So there are two kind of reason in this case:

  1. the user turning off auto renewal, indicating they don't want their payment method to be charged while the billing retry period is active
  2. system disabling auto-renewal at the end of the billing retry period

And how can I recognized which one? Focus on the expiration_intent field, right?

why our server received DID_CHANGE_RENEWAL_STATUS notification long time after use's grace period expired?
 
 
Q