Подписка на StoreKit с бесплатной пробной версией отсутствует в квитанции после покупки (tx id отключен на 1) - PullRequest
0 голосов
/ 28 февраля 2019

Я предлагаю подписку в своем заявлении, и после покупки я проверяю эту транзакцию по квитанции, чтобы получить дату ее истечения.Я делаю это, загружая квитанцию ​​с диска, отправляя ее в Apple для проверки / дешифрования (я знаю, что это плохая практика), а затем перебирая latest_receipt_info в ответе JSON, ища транзакцию, соответствующую transactionIdentifier запросаSKPaymentTransction object.

Это работает для большинства подписок, но не для тех, которые предлагаются с бесплатной пробной / вводной версией.Пожалуйста, посмотрите на мой пример ниже:

  1. Я покупаю подписку, которая возвращается к моей заявке с transactionIdentifier из 1000000506350685 и originalTransaction.transactionIdentifier из null.
  2. Я получил последнюю квитанцию ​​JSON от Apple, чья последняя запись совпадает с моим идентификатором продукта и отметкой времени, но transaction_id равно 1000000506350686 и original_transaction_id.

Поэтому я не могу подтвердить покупку.

Нет проблем при покупке подписки без бесплатного ознакомительного / ознакомительного предложения.В возвращенной квитанции нет других объектов, соответствующих идентификатору транзакции, возвращенному в мое приложение.

Это в среде песочницы, я не уверен в поведении в рабочей среде.

Есть кто-нибудьБыл ли подобный опыт?Что я могу сделать, чтобы это исправить?

1 Ответ

0 голосов
/ 28 февраля 2019

Я думаю, что это, вероятно, связано с тем, что вы уже купили этот продукт ранее в Песочнице, и в песочнице нет чека на устройство, пока вы не совершите покупку (в отличие от производства).

В любом случае, вы должны посмотреть последние product_id и expiration_date из квитанции, чтобы проверить, активна ли подписка.Идентификаторы транзакций могут быть ключами для ваших транзакций, если вы сохраняете их в базе данных, но их не следует использовать для подтверждения покупки.

Вот действительно хороший пост в блоге, в котором рассказывается о том, что в вашем приложениисервер покупок должен проверять и поддерживать статус подписки в актуальном состоянии: iOS-подписки жесткие

Я делаю это, загружая квитанцию ​​с диска и отправляя ее в Appleдля проверки / расшифровки (я знаю, что это плохая практика).

На самом деле это рекомендуемый подход от Apple.

...