cancellation_date populated after subscription upgrade?

I received the following validated receipt JSON (scrubbed of identifying and unimportant data) which clearly indicates a subscription upgrade. Upon purchasing the upgrade, the active subscription appears to have been cancelled. My sandbox receipts do not behave this way though, so I'm wondering if this a difference between enviornments, or if something else caused this situation and the active subscription cannot be relied upon to acquire a cancellation_date upon upgrade.


The first purchase is a 'basic.monthly' subscription. The second is a renewal of 'basic.monthly', but 9 days into the subscription, a 'premium.monthly' subscription is started, and the second 'basic.monthly' is cancelled (2 seconds after 'premium.monthly' is purchased).


Thoughts?


{

"status": 0,

"environment": "Production",

"receipt": {

"receipt_type": "Production",

"adam_id": 1,

"app_item_id": 1,

"bundle_id": "com.mycompany.myapp",

"application_version": "1.0",

"download_id": 1,

"version_external_identifier": 1,

"receipt_creation_date": "2017-11-16 21:21:00 Etc/GMT",

"request_date": "2018-02-05 23:04:17 Etc/GMT",

"original_purchase_date": "2017-03-09 19:28:19 Etc/GMT",

"original_application_version": "1",

"in_app": [...]

},

"latest_receipt_info": [

{

"quantity": "1",

"product_id": "com.mycompany.myapp.basic.monthly",

"transaction_id": "xxxxxxxxxx4808",

"original_transaction_id": "xxxxxxxxxx4808",

"purchase_date": "2017-03-14 01:48:41 Etc/GMT",

"original_purchase_date": "2017-03-14 01:48:41 Etc/GMT",

"expires_date": "2017-04-14 01:48:41 Etc/GMT",

"web_order_line_item_id": "xxxxxxxxxx9117",

},

{

"quantity": "1",

"product_id": "com.mycompany.myapp.basic.monthly",

"transaction_id": "xxxxxxxxxx4186",

"original_transaction_id": "xxxxxxxxxx4808",

"purchase_date": "2017-04-14 01:48:41 Etc/GMT",

"original_purchase_date": "2017-03-14 01:48:41 Etc/GMT",

"expires_date": "2017-05-14 01:48:41 Etc/GMT",

"web_order_line_item_id": "xxxxxxxxxx9118",

"cancellation_date": "2017-04-23 14:23:42 Etc/GMT",

"cancellation_reason": "0"

},

{

"quantity": "1",

"product_id": "com.mycompany.myapp.premium.monthly",

"transaction_id": "xxxxxxxxxx5089",

"original_transaction_id": "xxxxxxxxxx4808",

"purchase_date": "2017-04-23 14:23:40 Etc/GMT",

"original_purchase_date": "2017-03-14 01:48:41 Etc/GMT",

"expires_date": "2017-05-23 14:23:40 Etc/GMT",

"web_order_line_item_id": "xxxxxxxxxx9235",

},...

]

}

Replies

If you inspect the renewal dated "purchase_date": "2017-04-14 01:48:41 Etc/GMT", you will note that there is also the field "cancellation_date": "2017-04-23 14:23:42 Etc/GMT". The customer contacted Apple Care on 2017-04-23 at 14:23:42 Etc/GMT", requested a refund, which was approved. The customer then appears to have used the app to purchase the com.mycompany.myapp.premium.monthly item at 2017-03-14 01:48:41 Etc/GMT. It may be that this was all handled by Apple Care. I don't know, but you might try contacting iTunesConnect for an explanation.



rich kubota - rkubota@apple.com

developer technical support CoreOS/Hardware/MFI

On its face this indicates that the user's subscription converted from basic.monthly to premium.monthly at a specific time (within 2 seconds). That conversion resulted in a new transaction indicating the purchase of a premium.monthly (with the original_transaction_id and original_purchase_date preserved) and also an entry in the previous basic.monthly transaction to indicate that transaction was cancelled.


I suspect the user contacted Apple custonmer service and told them they wanted to purchase the premium.monthly. Apple customer service agreed to cancel their earlier purchase and charge them for the premium.monthly instead. This user has an active basic subscription from 3/14 to 4/14; no subscription from 4/14 to 4/23; and a premium subscruiption from 4/23 to 5/23.


If the two products were in the same group this would have been a simple 'upgrade' and Apple customer support would have (should have) refused to grant the cancellation. If the two products are in different groups then it is unclear Apple customer support could handle the user's complaint that they meant to purchase the premium not the basic other than agreeing to the cancellation.


(I don't understand how a user gets billed if they upgrade within a group.)