In app purchases - тестовая среда и валидация чек по методу Andrew Bancroft (как в курсе)


#1

В курсе про покупки есть библиотека Бенкрофта для валидации чеков.
Раньше всё работало нормально (полгода назад).

Теперь же отправил на ревью новое приложение с этой валидацией и его реджекнули с формулировкой: “Ваш сервер валидации должен обрабатывать приложения, подписанные в производственных целях и уметь отличать квитанции тестовой среды и не выдавать ошибку по ним”!

  1. Риторический вопрос - когда такое появилось? )
  2. Собственно как обработать ошибку тестовой среды, используя валидатор Бенкрофта? У него на сайте все материалы 4х-летней давности по этой теме )) (На Гитхабе тоже послдений коммит 1,5 года назад и тот по макОс)

P.s. Писал уже, что курс неактуален в части валидации, тк OpenSSL библиотека уже давно не поддерживается и надо ставить UniversalOpenSSL. Ну и теперь совсем реджек из-за этой валидации, тк не обрабатываются чеки для тестовой среды… :frowning:


#2

Хотя фигня какая-то:

  1. В валидаторе Бенкрофта не используется же сервер! Всё локально.
  2. С реджектом прислали скрин с симулятора… Но на симуляторе вроде же покупки не работают! У меня на тестовых девайсах всё работает нормально.

Отправил им ответ и видосы, что вcё нормально работает. Может там просто тормознули и покупки проверяли через симулятор? Кто-нибудь подавал апелляция в Комиссию по проверке приложений?


#3

Мдааа. Я тоже таким образом могу работать в ревью…

После реджекта с формулировкой «у вас валидация чека через Удаленный сервер не обрабатывает покупки в тестовой среде» написал, что они вообще в код заглядываю, тк в приложении локальная валидация?! Отправил ТУ же сборку повторно… и “Ready for sale”! Ну вот как так? Тему можно закрыть )))


#4

Так, коллеги и Иван или Алексей в частности, нужна помощь опытных, тк история с валидацией закончилась не так как я хотел :slight_smile: :

  1. Ситуация:
    выпустил приложение со встроенной покупкой. Прикрутил валидацию по файлам Бенкрофта как в курсе. Так уже делал до этого в первом приложении и проблем не было, но теперь что-то не так…

  2. В чём собственно дело:
    В коде при запуске проверял валидность чека при помощи Receipt Validator от Бенкрофта. По результату проверки при .succes записывал в ЮзерДефолтс (UD) bool и потом от неё отталкивался для доступа к платным фичам. Переодически проверял чек для актуализации параметра в UD. - в общем всё как по курсу.

Но теперь (возможно из-за новой iOS или ещё каких-то обновлений) валидатор похоже работает некорректно: при запуске приложения валидатор при проверке чека выдаёт кейс .succes, даже если вы не покупали приложение! При этом в ТЕСТОВОЙ среде он срабатывает корректно! И всё отрабатывало при бета-тесте как надо - первоначально false по нужному ключу в UD, потом покупка, проверка, кейс .succes и true в нужном ключе.
Потом выкладываение в appStore и уже при реальной проверке валидатор при отсутсвии чека(покупки) выдавал .succes… Я проверял по-всякому: удалял апп (ведь при его удалении чиститься UD) и ставил снова - та же фигня. Сначала подумал может из-за бета-теста как-то сохранились данные о покупке (хз как) на этих учётках, а проверял апп на 3х учётках, которые как раз были тестерами. Создал полностью новую учётку, полностью сбросил тестовый девайс, и там было то же самое - валидатор видимо выдал .succes и с первого запуска приложения были доступны все фичи…

  1. Решение:
    Решил пока банально - убрал вообще валидацию и оставил просто запись данных в UD при штатных транзакциях SK: при успешной и восстановлении просто пишу сразу в UD и не проверяю потом - небезопасно да и пофиг. И всё заработало: новый акк не видел покупки, которой не было…

Возможно что-то я намудрил, но дело в том, что код был точно такой же как раньше, когда на первом приложении всё нормально работало! Я ещё раз проверил по курсу. Да и так понятно уже что как.
Мне кажется, что Эппл всё-таки как-то изменили возвращаемые цеки в угоду безопасности, и поэтому валидатор неправильно обрабатывает их и выдаёт всегда .succes на любой запрос.

Просьба опытных коллег проверить, кто пользуется этим валидатором и сообщить результаты. Я для себя решил пока его не использовать. И покурить раздел Validating Purchases в доках по StoreKit, но первоночально понятно, что Эппл настоятельно рекомендуют делать валидацию самому на удалённом сервере :frowning:

От коллег хотелось проверки инфы и редактирования курса, если вдруг это так :slight_smile: