крч Санечек, я вернулся, смотри
такое чувство что ты код писал под разным настроением, взять во внимание то, что выше в коде не контроллер, но ты смело туда прокидываешь весь реквест, включая валидацию, хотя невалидные данные в логику попадать априори не должны
ты сначала в конструкторе
делаешь вот так
self::$guzzle = new Client(['verify' => false]);
а потом ниже раз 5 инстанцируешь новый клиент руками, причем постоянно проделывая 3 операции
каст стрима к строке
json_decode его
и collect ради того что бы у коллекции взять потом ->first
у тебя везде у гузлей один и тот же урл только разные экшены, вынеси его в константу или env параметр и передавай как base_uri в газл и неплохо бы что бы сам клиент который прилетает в этот сервис тоже собирался отдельно
больше половины твоих вспомогательных функций являются бизнес логикой какого-то объекта и не должны раскрывать свой стейт наружу
банальные штуки типо for vs str_pad и тд я не говорю
OauthM24Session
откуда я полагаю ты берешь все self::$session->get
так тоже нельзя делать, передавай все что тебе надо таким образом что бы после конструктора у тебя был валидный объект
вынеси все манипуляции с гузлями в условный IntegrationNameWrapper и возвращай оттуда данные
ретрив данных из сторонней системы мало чего имеет с их последующей обработкой и может пригодится потом переиспользовать
попробуй свести все к тому что у тебя есть
Client (знает про урл интеграции и специфические настройки хеддеры и тд)
ClientProvider инкапсулирует в себя работу с интеграцией предоставляет наружу удобный апи для взаимодействия
ClientResponseParser если надо, суть и так понятна
ClientRequestBuilder если требуется какие-то манипуляции сделать перед клиентом собирай реквест для системы там