Не скажу про вайбер, но знаю про телеграм, вы или локально сами имитируете запросы на свой вэбхук, или сами проверяете обновления (т.е. вы дергаете их апи чтоб узнать пришли ли новые сообщения)
$stmt->bind_param("s", $email)
Почему "s" если у вас там вопросительный знак и должен быть "0"? Включите вывод ошибок и посмотрите что у вас в реальности получается в sql, у вас в запросе ошибка, и я подозреваю что из-за неправильного бинда.
Нет у курла такого ограничения. Смотрите ошибки после того как получаете ответ, может сервер обрывает соединение. "CURLOPT_READFUNCTION" это у вас лишнее, минимум тут callback должен быть, а не 999
Скорее всего вам нужно будет прописать свои типы в настройках "classmap" соапа или даже в "typemap" расписать как превращать xml в объекты и наоборот в ключах "to_xml"/ "from_xml" https://www.php.net/manual/ro/soapclient.soapclient.php
Не работал с Red Bean, но подозреваю что проблема в условии, у вас проверяется только флаг dev, но нет условия по логину/айди юзера. Поэтому он находит первую запись подходящюю под условие dev=1