Изменение возобновляемой подписки в iOS При покупке в приложении возникает ошибка «Не удается подключиться к iTunes Store» - PullRequest
0 голосов
/ 23 октября 2019

У меня есть несколько возобновляемых подписок для моего приложения в App Store Connect.

enter image description here

Существует несколько возобновляемых подписок, которые являются частьюиз той же группы подписок, плюс одна, которая является невозобновляемой подпиской.

Я использую 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обработчик при попытке перейти с возобновляемой подписки на другую возобновляемую подписку? "

...