Клиент:
Zepter International – это мультибрендовая международная компания, которая производит и продает эксклюзивные высококачественные потребительские товары по всему миру главным образом путем прямых продаж, а также через розничную сеть.
Проект: Для повышения качества клиентского сервиса и улучшения надежности платежей на сайте Oplata.zepter.ru мы провели масштабные доработки в платежной системе.
Основная цель заключалась в повышении стабильности обработки транзакций, интеграции новых возможностей для клиентов, а также оптимизации работы системы под изменившиеся требования бизнеса и законодательства.
Некоторые заказы оставались в незавершённом статусе из-за сбоев при повторных попытках оплаты, поэтому требовалось исправить работу обработки заказов на платёжной странице.
Мы провели анализ логов и выявили, что проблема возникала из-за отсутствия ответа от сервера Zepter при отправке запроса на оплату. Добавили проверки статусов ответов и таймаутов, чтобы корректно фиксировать состояние заказа при «неответах» от сервера. Мы разработали логику для повторных запросов через определённые интервалы, что позволило повысить стабильность системы и сократить количество заказов в неопределённом статусе.
Обновление PHP вызвало конфликты в зависимостях и привело к ошибкам подключения и инициализации. На ряде страниц появлялись ошибки:
Мы выяснили, что возникшие ошибки касались не только кода, но и структуры библиотеки зависимостей. Получилось найти 5 ошибок, связанных с конфликтами библиотек, наследованием методов и отсутствием необходимых библиотек.
Мы переустановили зависимости через Composer с обновлением пакетов до совместимых версий, а также доработали init.php для правильной загрузки всех пользовательских классов. Для устранения конфликтов с psr/log, которые вызывали ошибки при инициализации обработчиков, добавили временную версию библиотеки с изменёнными именами, что позволило обеспечить совместимость без необходимости обновления всей библиотеки.
Клиент хотел перевести эквайринг с Сбербанка на Альфа-банк для поддержки системы быстрых платежей (СБП).
Мы изучили API Альфа-банка, адаптировали код для работы с новыми параметрами, добавили поддержку генерации QR-кодов для СБП и обновили логику обработки статусов оплат. Провели тестирование стабильности перехода между эквайрингами, подтвердили корректность работы через обычный эквайринг и СБП.
По статистике за несколько дней наблюдается периодическое отклонение платежной страницы от обработки запросов Call Back от Сбербанка. Сбой фиксируется в одно и то же время, приблизительно между 12:50 и 13:05.
Мы установили, что отказ был связан с перегрузкой и нехваткой дискового пространства, что влияло на запись логов. Организовали очистку временных файлов и архивирование логов, а также распределение нагрузки с направлением части запросов Call Back на резервные сервера. Это уменьшило нагрузку на основной сервер и повысило стабильность системы.
На сайте предусмотрена возможность использовать подарочные сертификаты. Необходимо, чтобы в процессе ввода данных пользователь видел сумму сертификата и мог выбирать: оплачивать сертификатом или отказаться применять его и перейти на оплату другим способом.
Для реализации возможности оплаты заказа подарочными сертификатами на Alfapay мы интегрировали API поставщика сертификатов, добавили поле для ввода кода сертификата и логику, которая учитывает номинал сертификата при оплате. Если сумма сертификата покрывает заказ частично, отображается остаток для оплаты банковской картой. Обработали ошибки для случаев недействительных сертификатов, предоставив пользователю возможность выбрать другой способ оплаты при недостатке средств.
Клиент захотел установить минимальный размер платежа на уровне 230 рублей по Классической оплате по карте, чтобы при этом для Оплаты по СБП (QR) это ограничение не применялось.
Мы установили валидацию на минимальный размер платежа на уровне фронтенда и бэкенда, чтобы исключить отправку запросов при меньших суммах и предотвратить попытки обойти ограничения через API. Дополнительно исключили это ограничение для оплаты по QR-коду СБП, что обеспечивает гибкость и безопасность при валидации.
Для улучшения идентификации клиент попросил добавить возможность вписывать email клиента в запросы на оплату по QR-коду через СБП.
Мы добавили обязательное поле для ввода email на платёжной странице с проверкой формата email. При создании QR-кода система отправляет email клиента как метаданные транзакции. Это упростило идентификацию и обработку транзакций, облегчая поддержку в случае вопросов.
На момент работы с сервисом онлайн-оплат наблюдались значительные проблемы с приемом и обработкой платежей. В последние недели фиксировались регулярные сбои в автоматическом зачислении средств в ERP заказчика, что влияло на эффективность обработки платежей и увеличивало риск потери дохода.
Анализ логов показал, что база данных испытывает нагрузку из-за постоянного роста данных. Мы внедрили регулярное удаление логов, организовали систему кэширования для снижения количества запросов, а также добавили мониторинг использования дискового пространства с уведомлениями о заполнении.
В текущей системе отсутствует возможность ввода номера договора по установленным образцам, таким как M2-XXXXXXX/1, DFXXXXXX/1 и другим. Это ограничение создает трудности для пользователей, которым необходимо получить информацию по договору перед проведением оплаты.
Мы разработали скрипт, разделяющий префикс и числовую часть договора, и добавили селект-боксы для выбора. Это облегчило процесс ввода данных для пользователей, предотвращая ошибки и повышая точность регистрации договоров.
Реализация проекта команды PHPDev существенно повысила стабильность и надежность функционирования системы онлайн-оплат, что улучшило пользовательский опыт и упростило процесс осуществления платежей. Каждая задача была выполнена с учетом выявленных проблем и потребностей пользователей, что позволило значительно оптимизировать работу системы.
ИНТЕРЕСНО УЗНАВАТЬ БОЛЬШЕ О КОМПАНИИ? ЧИТАЙТЕ НАШИ СТАТЬИ И НОВОСТИ TELEGRAM И VC.RU.
Нажимая кнопку «Оставить заявку», Вы даёте согласие на обработку Персональных данных.