Я думаю, вам не следует полагаться на transaction_id
для проверки отмененных подписок.
В соответствии с документацией Apple (ищите "action_id "), со временем она может измениться:
Для транзакции, которая восстанавливает предыдущую транзакцию, это значение
отличается от идентификатора транзакции первоначальной покупки
сделка. В автоматически возобновляемом чеке подписки новое значение
для идентификатора транзакции генерируется каждый раз, когда
подписка автоматически обновляется или восстанавливается на новом устройстве.
Вместо этого было бы лучше использовать самую последнюю версию expires_date
из массива latest_receipt_info
.
Сравните его с сегодняшней датой, чтобы проверить, истек ли срок действия подписки.
Это поле также может поддерживать ваш вариант использования: auto_renew_status
Как в (из проверочного ответа JSON Apple):
{
"status": 0,
"environment": "Sandbox",
"receipt": {...},
"latest_receipt_info": [{...}],
"latest_receipt": "...",
"pending_renewal_info": [
{
"auto_renew_product_id": "<yourAutoRenewProductID>",
"original_transaction_id": "<transacionID>",
"product_id": "<yourProductID>",
"auto_renew_status": "1" <<=== This one here
}
]
}
«1» - подписка будет возобновлена в конце текущей подписки
период.
"0" - клиент отключил автоматическое продление для своих
подписки.
Имейте в виду:
Этот ключ присутствует только для автоматически обновляемых квитанций подписки, для
активные или просроченные подписки. Значение для этого ключа не должно быть
интерпретируется как статус подписки клиента. Вы можете использовать это
значение для отображения альтернативного продукта подписки в вашем приложении, для
Например, план подписки более низкого уровня, который клиент может
понизить до их текущего плана.
Если вам ДЕЙСТВИТЕЛЬНО нужно знать оригинал transaction_id
, тогда есть поле original_transaction_id
. Снова от Apple:
Это значение одинаково для всех квитанций, сгенерированных для
конкретная подписка. Это значение полезно для взаимосвязи
несколько квитанций в стиле iOS 6 для одного и того же человека
подписка клиента.
Но, исходя из того, что вы написали, это кажется слишком сложным. ¯\_(ツ)_/¯