У меня есть несколько возобновляемых подписок для моего приложения в App Store Connect.
Существует несколько возобновляемых подписок, которые являются частьюиз той же группы подписок, плюс одна, которая является невозобновляемой подпиской.
Я использую react-native-iap
, который использует StoreKit под капотом.
Я использую учетную запись пользователя sandox каксозданный в разделе «Пользователи и доступ»> «Песочница»> «Тестеры», вошедший в систему как пользователь песочницы на iPhone. Я вошел в систему как этот пользователь на iPhone в «iTunes & App Store»> «SANDBOX ACCOUNT».
Я могу успешно получать подписки с помощью «RNIap.getSubscription ()» и отображать их в пользовательском интерфейсе. Затем я могу успешно инициировать покупку подписки, используя RNIap.requestSubscription(productId, false)
, после чего мой зарегистрированный обработчик RNIap.purchaseUpdatedListener
корректно срабатывает, и я завершаю транзакцию, используя RNIap.finishTransactionIOS(purchase.transactionId)
. Пока все хорошо.
Проблема возникает, когда я пытаюсь внести последующие изменения в возобновляемую подписку, следуя тому же процессу с одной из других подписок. Я получаю всплывающее окно с вопросом, хочу ли я подтвердить изменение новой подписки, как и ожидалось, а затем «Все готово, ваша покупка прошла успешно». Но когда это происходит, он на самом деле вызывает обработчик событий RNIap.purchaseErrorListener
, а не RNIap.purchaseUpdatedListener
, как ожидалось.
Сообщение об ошибке, которое я получаю от обработчика:
{
responseCode: "0",
code: "E_UNKNOWN",
debugMessage: "Cannot connect to iTunes Store",
message: "Cannot connect to iTunes Store"
}
, котороепроисходит от самого StoreKit
API, когда transaction.transactionState
равен SKPaymentTransactionStateFailed
.
Если я тогда попытаюсь купить подписку с возможностью продления (1 неделя в приведенном выше примере), покупка прошла успешно, вызываяRNIap.purchaseUpdatedListener
как и ожидалось. Но всякий раз, когда я пытаюсь изменить подписку на другую возобновляемую подписку, снова запускается обработчик RNIap.purchaseErrorListener
.
Поэтому я предполагаю, что мой вопрос таков: "Почему обработчик RNIap.purchaseErrorListener
вызывает вместо RNIap.purchaseUpdatedListener
обработчик при попытке перейти с возобновляемой подписки на другую возобновляемую подписку? "