Тема
Российская специфика
Пакеты и сервисы для проектов под РФ-рынок. Здесь чаще, чем в остальном каталоге, встречаются полуживые обёртки — правило: официальный PHP SDK сервиса + тонкая своя интеграция надёжнее, чем толстая community-обёртка «laravel-*», брошенная автором.
Платежи
| Сервис | Пакет | Заметка |
|---|---|---|
| ЮKassa | yoomoney/yookassa-sdk-php (официальный) | Карты, СБП, сплит; Laravel-обёртки сообщества — проверять свежесть, чаще проще свой Service поверх SDK |
| ЮKassa «Безопасная сделка» | тот же SDK / отдельный API | Ключ к эскроу на биржах → marketplace.md |
| Т-Касса (Тинькофф) | официальный API + community SDK | Хорошая документация, вменяемые вебхуки |
| Robokassa | лёгкие обёртки / свой клиент | Протокол простой — своя интеграция за полдня |
| CloudPayments | cloudpayments PHP SDK | Виджет + рекуррентные платежи |
| СБП напрямую | через банк-эквайер | Обычно берётся через ЮKassa/Т-Кассу |
Паттерн: интерфейс PaymentGateway в домене + реализации по шлюзам; вебхуки — только через подпись, идемпотентно (таблица payment_events с уникальным ключом события).
Чеки (54-ФЗ)
ЮKassa/Т-Касса умеют фискализацию сами (передача чека в платеже). Отдельные ОФД-интеграции (АТОЛ Онлайн, OrangeData) — официальные SDK + свой сервис. Закладывать поле «предмет расчёта» в модели позиций заранее.
Адреса, справочники
| Сервис | Пакет | Заметка |
|---|---|---|
| DaData | официальный PHP-клиент (hflabs/dadata на Packagist) | Подсказки адресов/ФИО/организаций, стандартизация; бесплатный лимит в сутки |
| ФИАС/КЛАДР напрямую | — | Не связываться — DaData дешевле по трудозатратам |
| Проверка контрагентов по ИНН | DaData Suggestions API | Автозаполнение реквизитов в формах |
Доставка
| Сервис | Пакет | Заметка |
|---|---|---|
| СДЭК | community SDK (напр. sanmai/cdek-sdk) или свой клиент к API v2 | Проверять поддержку API v2 |
| Boxberry, 5Post, ПВЗ-агрегаторы | свои клиенты | API простые REST |
| Почта России | отправка через otpravka-api | Community-обёртки нестабильны — тонкий свой клиент |
| Яндекс Доставка | REST API | Свой клиент |
SMS и мессенджеры
| Канал | Пакет | Заметка |
|---|---|---|
| Telegram-уведомления | laravel-notification-channels/telegram | В канал/чат команды — заявки, алерты; самый дешёвый канал |
| Telegram-боты | defstudio/telegraph (Laravel-native) или nutgram/nutgram | Telegraph проще для ботов «внутри» Laravel-приложения |
| Telegram Login | socialiteproviders/telegram | Вход на сайт через Telegram |
| SMS (sms.ru, smsc.ru, Devino) | свой Notification-канал (~50 строк) | Обёртки часто мертвы; канал пишется быстро |
| VK/Yandex OAuth | socialiteproviders/vkontakte, socialiteproviders/yandex | Соцвход для РФ |
Локализация
| Задача | Решение |
|---|---|
| Русские переводы валидации/писем/UI Laravel | laravel-lang/common — ставить в каждый проект первым делом |
| Склонение городов/слов по падежам | Своё (как HasDeclensions в проектах студии) или API morpher.ru (платный) |
| Склонение ФИО | petrovich-php |
| Числа прописью, склонение по числу («3 товара») | trans_choice() + русские правила плюрализации (laravel-lang включает) |
| Даты на русском | translatedFormat() (по спекам студии) + Carbon::setLocale('ru') |
| Транслитерация слагов | Str::slug() умеет кириллицу из коробки |
Интеграция с 1С
| Задача | Решение | Заметка |
|---|---|---|
| Обмен каталогом/заказами (CommerceML 2) | mavsan/laravel-1c-protocol (🟢 активен) или свой контроллер обмена | Протокол обмена (запросы checkauth/init/file/import) реализуется контроллером за 1–2 дня. NB: старый zenwalker/commerceml мёртв (релиз 2015) — не брать. Детали → integrations.md |
| Выгрузка в МойСклад | официальный REST API | Часто проще, чем прямой 1С-обмен |
Поиск и карты
| Задача | Решение |
|---|---|
| Карты на сайте | Яндекс.Карты JS API (бесплатный лимит) или Leaflet + OSM (полностью бесплатно) |
| Геокодинг | DaData (адрес→координаты) или Яндекс Геокодер |
| 2GIS данные | официальный API (лимиты) |
Маркетплейсы-фиды
| Фид | Решение |
|---|---|
| YML (Яндекс.Маркет) | Зрелого пакета нет — свой генератор на Blade/XMLWriter (полдня) |
| Google Merchant | spatie/laravel-feed как основа либо свой XML |
| Авито Автозагрузка | свой XML по их схеме |
Госсервисы и проверки
| Задача | Решение | Заметка |
|---|---|---|
| Вход через Госуслуги (ЕСИА) | OAuth 2.0 ЕСИА напрямую + свой клиент | Требует регистрации ИС в ЕСИА, УКЭП для подписи запросов; зрелого Laravel-пакета нет — тонкий свой провайдер поверх socialite-контракта |
| Проверка статуса самозанятого (НПД) | Открытый API ФНС npd.nalog.ru | Обязательно перед выплатой физлицу на бирже → marketplace.md; статус кэшировать, но проверять на момент выплаты |
| Проверка контрагента по ИНН/ОГРН | DaData Suggestions (реквизиты) или API ФНС (выписка ЕГРЮЛ) | DaData — быстрее для автозаполнения форм; ФНС — для юридически значимой выписки |
| Формирование чека самозанятого | API «Мой налог» | Если площадка пробивает чек за самозанятого-исполнителя |
| Проверка на банкротство/долги | ФССП, ЕФРСБ (открытые API/парсинг) | Для скоринга на биржах/в лизинге |
Паттерн: интеграции с госсервисами — всегда через очередь с ретраями (их API нестабильны), результат проверки — в таблицу с checked_at и TTL, чтобы не дёргать API на каждый запрос.
Маркировка и прослеживаемость
| Система | Решение | Когда нужно |
|---|---|---|
| Честный ЗНАК (маркировка товаров) | API ГИС МТ + свой клиент | Магазины маркируемых категорий (одежда, обувь, парфюм, вода…): вывод из оборота при продаже, проверка кодов Data Matrix |
| ЕГАИС (алкоголь) | УТМ (Универсальный транспортный модуль) + свой обмен | Проекты с продажей алкоголя; обмен через локальный УТМ, а не прямой API |
| Маркировка «Меркурий» (ветеринария) | API ФГИС «ВетИС» | Продукты животного происхождения |
Зрелых Laravel-пакетов под эти ГИС нет — только официальные схемы API + свой сервис. Закладывать поле для кода маркировки в модель позиции заказа заранее, если категория попадает под требования.
Эквайринг — детали интеграции
Расширение таблицы платежей выше. Общий паттерн — в integrations.md.
| Аспект | Как правильно |
|---|---|
| Вебхуки (уведомления об оплате) | Только по подписи + идемпотентно (таблица payment_events с уникальным event_id); не доверять статусу из редиректа браузера — только серверный колбэк |
| Рекуррентные платежи | Токенизация карты у шлюза (ЮKassa/CloudPayments хранят токен), у себя — только payment_method_id; автосписание по расписанию |
| Сплит-платежи (маркетплейс) | ЮKassa «Сплитование» / «Безопасная сделка» — деньги делятся у банка, не проходят через счёт площадки (юр. защита) |
| Возвраты | Отдельный метод шлюза + свой статус позиции; частичные возвраты — заранее в модели |
| Тестирование | Sandbox-ключи шлюза в отдельном .env; тестовые карты из документации шлюза |
Хостинг-специфика
- S3-совместимые хранилища РФ (Selectel, VK Cloud, Yandex Object Storage) — работают через стандартный
league/flysystem-aws-s3-v3, только endpoint в конфиге. - Google reCAPTCHA нестабильна в РФ → Cloudflare Turnstile, hCaptcha или spatie/laravel-honeypot (для простых форм достаточно honeypot + rate limit).
- Почта: SMTP через unisender/sendsay/mail.ru для рассылок; транзакционная — свой SMTP или ресенд через РФ-провайдеров.