Shlyahten: Еще если присмотреться.. то параметры для sig сортируются по ключам ksort и после этого создается md5, а сам массив параметров нет, отправляется так как есть... при разном порядке, разные хэши.. попробуйте убрать сортировку в функции arInStr //ksort($array);
Shlyahten: в массиве $params поменяйте местами параметры, поставьте в том же порядке так же как они формируются по ссылке, должно помочь, sig у вас формируется правильно. просто у них в апи есть такой косяк что почему то имеет значение порядок передаваемых данных, не логично но такой косяк у них точно есть, сам мучился и не мог понять в чем дело.
Neonoviiwolf: по горячей линии сказали что не было такого запроса из сервис цента, хотя те говорят что звонили и в аппл им сказали что не гарантийный случай, очень похоже что ваша версия и есть правда.
zlojnaxa: почему не катит IP?) я честно не понимаю.. какие с такой защитой проблемы? IP это фактически единственные достоверные данные которые вы может принять от пользователя и он не может его без проблем изменить.. конечно есть прокси, можно сменить IP если он динамический, но это значительно затруднит подбор пароля путем перебора.. Хранить на стороне клиента любые данные в таком случае это точно не то что надо
ThreegunD: все адекватные хостинги, да) cron это стандартное решение подобных задач, зачем что то еще придумывать, все уже готово, все будет работать как часы, все безопасно, никаких сложностей..