Казалось бы, Apple — компания, которая возвела пользовательский опыт в культ. Но ровно до того момента, пока вы не решите стать частью их экосистемы как разработчик. Если вы думали, что самое сложное в iOS-деве — это разобраться с делегатами или SwiftData, то спешу вас расстроить: настоящий босс ждёт на этапе энроллмента.

Ситуация абсурдна до боли: ты стоишь с карточкой в руках, готовый отдать заветные $99, но официальное приложение Apple Developer превращается в глухую стену. На этапе «I agree» вместо приветственного письма ты получаешь в лицо типичный корпоративный «от ворот поворот»: Unknown Error. Please try again.

Unknown Error. Please try again

Ни кода ошибки, ни “в вашем регионе это недоступно”, ни “проверьте данные”. Просто что-то в духе: “ошибочка вышла, попробуйте ещё раз”.

Сначала, как все нормальные люди, мы решили, что сами идиоты. Перепроверили всё: аккаунты, устройства, свежие iPhone, iPad, Mac, разные Apple ID. Полный ритуал самобичевания: перелогин, переустановка, ещё одна попытка, ещё одна, потом ещё одна уже просто из спортивного интереса.

Результат? Всё тот же Unknown Error.

И вот тут начинается самое весёлое. По официальной справке Apple enrollment в Apple Developer Program вообще доступен и через приложение, и через веб, а для app-flow Apple отдельно перечисляет базовые требования: двухфакторка, актуальные данные Apple Account и прохождение процесса на устройстве через Apple Developer app. Мы это всё проверяли и гоняли по кругу не один раз.

Самый сок в том, что через веб заявку формально подать можно, но для нас в России это не решает проблему до конца.
Потому что оплатить membership через веб нормально не получается: привычные Visa и Mastercard тут уже давно не помощники. По факту рабочим остаётся именно сценарий через мобильное устройство, то есть через Apple Developer app.

И вот здесь начинается настоящий абсурд. Поддержка предлагает идти через приложение — в тот самый сценарий, где тебя уже встречает Unknown Error.

Получается очень красивая ловушка:

через веб до конца не оплатить → идите через приложение → в приложении Unknown Error → пришлите запись экрана, логи, SEID, модель устройства и ещё немного вашей жизненной энергии

Мы реально долго переписывались и созванивались с саппортом. В какой-то момент было ощущение, что нас там уже начали узнавать.
Письма были вежливые, всё очень культурно, но по сути нас кормили одной и той же мантрой про Engineering Team. Это у них, видимо, такая мифическая инстанция, где мудрецы на горе годами размышляют над логами, пока обычные разработчики продолжают получать Unknown Error и присылать очередной screen recording. Apple действительно направляет пользователей по enrollment в поддержку и документацию, но ясного публичного объяснения именно этого сценария там нет.

письмо от поддерки Apple

В какой-то момент стало понятно, что переписка с поддержкой новой информации уже не даст, и мы пошли техническим путём. Проблема в том, что Apple защищает этот трафик SSL pinning’ом, поэтому обычный прокси в таком сценарии бесполезен: приложение просто не доверяет подменённому сертификату и не раскрывает содержимое обмена. Чтобы увидеть реальный ответ backend, пришлось работать в исследовательской среде и временно обойти pinning с помощью Frida. Уже после этого удалось перехватить запрос к smp-device.apple.com и увидеть не абстрактный Unknown Error, а конкретный ответ сервера с restricted region и Apple Cash Unavailable:

{
  "debugDescription": "Call from restricted region",
  "errorCode": "40399",
  "localizedDescription": "Apple Cash is not available in this region",
  "localizedTitle": "Apple Cash Unavailable"
}
перехват ответа / JSON / 40399 / restricted region

Здесь возникает простой вопрос: при чём вообще Apple Cash, если речь идёт об оплате Apple Developer Program.

В ответе сервера фигурирует Apple Cash Unavailable, а Apple официально пишет, что Apple Cash доступен только в США, округе Колумбия и Пуэрто-Рико. На этом фоне Unknown Error выглядит скорее как замаскированное региональное ограничение, чем как случайный сбой.

И что особенно показательно: это не история одного человека, который не туда нажал. На Apple Developer Forums есть свежий тред от разработчика из Индии с очень похожей картиной: тот же enrollment через Apple Developer app, тот же Unknown Error, те же круги с поддержкой и отсутствие внятного ответа. Этот тред реально существует и до сих пор висит в разделе Apple Developer Program.

На 4PDA есть отдельный тред именно про эту проблему“Apple Developer выдает Unknown Error, когда начинаешь Enroll”. Судя по тому, что тема уже разрослась на несколько страниц, случай явно не единичный. Это тоже косвенно указывает на то, что проблема не сводится к одной неудачной попытке или одной неверной настройке аккаунта.

Самое абсурдное в этой ситуации то, что “неизвестной” ошибка остаётся только для пользователя. Сервер, похоже, всё понимает достаточно хорошо. Но вместо нормального объяснения человек получает Unknown Error и обязан потратить часи и дни на переписку с поддержкой, чтобы добраться до причины, которая уже есть на стороне Apple.

TL;DR

Если Apple Developer app показывает Unknown Error на этапе enrollment, есть шанс, что проблема совсем не “unknown”. В нашем случае backend вернул прямой ответ: Call from restricted region, 40399, Apple Cash is not available in this region. А поскольку Apple Cash официально работает только в США, это выглядит как региональная проверка, которая на уровне интерфейса замаскирована под универсальную ошибку. В обсуждениях пользователи дополнительно указывают, что результат иногда зависит и от того, из какого региона выглядит само соединение, хотя Apple публично этого не объясняет.

Если у вас был похожий кейс с Apple Developer enrollment, напишите мне в личку на Habr или в Telegram — интересно собрать больше наблюдений.