Подписки ios in-app - когда изменяется original_transaction_id?

Когда есть подписка на автообновление, рассмотрите следующую модельную ситуацию:

  • пользователь покупает подписку на 1 месяц, скажем, в январе
  • отменяет обновление
  • затем ждет до марта ( > 1 месяц) и снова покупает ту же подписку

Возвращает ли AppStore (при подтверждении получения) новый original_transaction_id для новой покупки? Или перефразировать, может ли original_transaction_id использоваться для группировки квитанций для определения интервалов, когда у пользователя была активная подписка?

Потому что в песочнице, когда есть подобранная ситуация, она возвращает всегда original_transaction_id из ПЕРВОЙ покупки данной подписки, независимо от того, были ли у некоторых интервалов время, когда у пользователя не было активной подписки. Когда было несколько попыток подписки с интервалами между ними, когда срок ее действия истек, проверка квитанции о песочнице возвращает original_purchase_date первой покупки и expires_date последней покупки.

Моя проблема заключается в том, чтобы протестировать ее в живой среде, мне придется подождать более месяца, чтобы истекать срок подписки, чтобы проверить точное поведение.

Ответ 1

Я поддерживаю производственное приложение с подпиской в течение нескольких лет.

Насколько я вижу, original_transaction_id не меняется в том случае, если вы упомянули.

Кроме того, original_transaction_id относится к группе подписки, а не к каждому product_id.

Так же и в следующих случаях.

  • Пользователь запускает подписку, останавливает автоматическое продление и истекает, затем снова запускает подписку.
  • Пользователь запускает подписку и отменяет ее, но начинает снова.
  • Пользователь запускает подписку и обновляет или понижает до подписки в той же группе.

Но это не гарантированный результат, поэтому вам лучше подготовиться в случае изменения original_transaction_id.

Ответ 2

Original_transaction_id (все квитанции в цепочке продлений для автоматической возобновляемой подписки имеют одинаковое значение для этого поля.)

Expires_date is (Дата истечения срока подписки, выраженная в миллисекундах с 1 января 1970 года, 00:00:00 GMT.)

Ссылка: https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ReceiptFields.html#//apple_ref/doc/uid/TP40010573-CH106-SW12

Почему вы хотите протестировать его в реальном сценарии, когда вы можете протестировать в нем смоделированную среду согласно рекомендациям Apple по адресу https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnectInAppPurchase_Guide/Chapters/TestingInAppPurchases.html?