FlameStorm / fptest

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

README

Решение тестовое задания для компании funpay

Постановка задачи

Условия

https://funpay.ru/job.html

Задание рассчитано на 3 часа. Вы можете потратить и больше времени, это не так важно, как результат.

Представьте, что вы используете популярный сервис "Яндекс.Деньги" и периодически переводите деньги со своего кошелька на кошельки других пользователей. Вы хотите автоматизировать данный процесс, но в самом сервисе отсутствует API для подобных действий. Само собой, вас это нисколько не смущает, однако, в ходе разработки вы столкнулись с тем, что каждая операция требует SMS-подтверждения.

Итак, вы уже настроили свой телефон таким образом, что он передает текст SMS-сообщений от "Яндекс.Денег" вашей PHP-процедуре, но теперь вам необходимо разобрать данный текст.

Напишите на PHP функцию, которая принимает строку (текст сообщения) и возвращает извлеченные из неё код подтверждения, сумму и кошелек. Для генерации сообщений воспользуйтесь эмулятором. Мы написали эмулятор (а не просто текст) не просто так: выдаваемый им текст может изменяться (точно так же, как это происходит с реальными "Яндекс.Деньгами"), поэтому вам нужно как следует исследовать его. В перспективе, пожалуйста, учтите так же, что порядок полей, пунктуация и слова со временем могут быть изменены, что является обычным делом для платежных систем. Поэтому вам нужна универсальная функция, написанная с помощью регулярных выражений, которая будет работать в любом случае.

Решение должно полностью соответствовать заданию, ни больше ни меньше. Оно должны быть качественным, красивым и простым. Требуемая функциональность должна быть реализована практически идеально. Учтите, мы будем придираться к мелочам. При этом, пожалуйста, не усложняйте. Не нужно создавать десятки интерфейсов и вспомогательных классов, не нужно писать тесты, не нужно создавать готовые приложения.

Как развернуть проект?

Для разворачивания проекта необходимо клонировать или скачать репозиторий и разместить его в директории доступной для обработки вашим веб-сервером, аналогично разворачиванию любого небольшого сайта.

Ссылка на лайв решение

https://2291.ru/tmp/funpay/

Затраченное время

2.5 часа въедливый анализ задачи и представляемой предметной области, анализ документаций и поиск существующих решений и подходов, набрасывание реальных и вероятных вариантов обрабатываемых данных, определение пути решения 1 час основное сырое программирование 3 часа прогонка проверок и корректировки кода 0.5 часа выкладка решения в публичный доступ

About


Languages

Language:PHP 100.0%