Я пытаюсь протестировать транзакцию Store Kit с помощью iPhone 3.0 SDK. Я основываю свой код на примере кода в Руководстве по программированию Store Kit, но я продолжаю получать неудавшиеся транзакции (статус: SKPaymentTransactionStateFailed). Однако свойство error транзакции равно нулю, так что это не проливает света на ситуацию.
Когда я пытаюсь приобрести продукт, я могу войти в систему с тестовой учетной записью и принять покупку, но затем я получаю диалоговое окно, в котором говорится:
"Вы уже приобрели это, но оно еще не было загружено. Нажмите" ОК ", чтобы загрузить его сейчас".
Когда я нажимаю "ОК", ничего не происходит. Мой transactionObserver больше не получает сообщений, отправленных ему.
Ответ 1 · рейтинг 4 · LGY
У меня была точно такая же проблема с расходными материалами. Оказывается, ответ был правильным. Мой товарищ по команде случайно удалил мою тестовую учетную запись. Все нормально работает после того, как создал новую.
Ответ 2 · Community
Как оказалось, моя тестовая учетная запись была удалена из iTunes Connect (хотя она позволяла мне войти в систему). Я создал новую тестовую учетную запись, и она начала работать. Я считаю, что сообщение "Нажмите ОК, чтобы загрузить сейчас" на самом деле было попыткой повторно инициировать транзакцию, которая затем снова завершилась ошибкой.
Ответ 3 · Jonathan Zhan
У меня была именно эта проблема, оказалось, что я использовал недопустимую тестовую учетную запись (тестовая учетная запись была привязана к другой учетной записи разработчика Apple, отличной от той, к которой было привязано приложение). Проверил учетные данные тестовой учетной записи, и все было в порядке.
@wdlindmeier: Я вижу, у вас тоже было такое же решение: я бы посоветовал вам принять этот или свой собственный ответ на случай, если это кому-то поможет. :)
Ответ 4 · user268743
Я столкнулся с той же проблемой в среде песочницы и обнаружил, что она может быть связана с SKPaymentTransactionObserver.
Когда я впервые это реализовал, я выделил SKPaymentTransactionObserver и добавил его только тогда, когда начал делать покупки. Также я удалил SKPaymentTransactionObserver, как только транзакция завершилась успешно или не удалось. Я обнаружил, что в этом случае транзакция всегда остается незавершенной, даже если я завершил транзакцию до удаления SKPaymentTransactionObserver.
Итак, мое решение состоит в том, чтобы выделить SKPaymentTransactionObserver при запуске приложения, а затем НЕ удалять его до завершения работы приложения. Тогда "незавершенная" транзакция еще должна быть правильно завершена.
Надеюсь, это сработает для вас.