# Introduction
# Laravel Spark
Laravel Spark is the perfect starting point for your next big idea. When combined with a Laravel application starter kit like Laravel Jetstream
, or the frontend of your choice, Spark provides a well-designed billing management panel for your application. Spark, which is built on the power of Laravel Cashier
, allows your customers to subscribe to monthly or yearly billing plans, manage their payment method, update their subscription plans, and download their receipts all from a self-contained, beautifully designed billing portal.
# Supported Payment Providers
Spark supports two payment providers, and purchasing a Spark license grants you the ability to use either of these payment providers. At this time, it is not possible to implement your own custom payment provider when using Spark. We’ll provide a brief overview of each provider below.
# Paddle
is a robust billing provider that serves as a merchant of record for your application. Paddle removes the burden of tax compliance from your SaaS business by handling the complexity of gathering and paying your VAT for you. In addition, Paddle provides support for accepting payments from your customers via credit card or PayPal, localized pricing, and hosted invoices.
Spark’s Paddle support is provided by the underlying Laravel Cashier Paddle
Paddle Account Approval
Your Paddle account must be approved by Paddle before you can begin using Spark. To apply for an account, please visit the Paddle website
. While you are developing your application, you may use the Paddle Sandbox
# Limitations
We have listed some known limitations of using the Paddle payment provider below:
# Stripe
is a global leader in payment infrastructure with direct integration with card networks and banks, a fast-improving platform, and battle-tested reliability. In addition, intelligent optimizations help increase revenue across conversion, prevent fraud, and assist with revenue recovery. Finally, Stripe provides a robust sandbox environment for you to test your application’s payment system.
Spark’s Stripe support is provided by the underlying Laravel Cashier Stripe
# Limitations
We have listed some known limitations of using the Stripe payment provider below:
# Frequently Asked Questions
# Is it possible to upgrade an application from Spark Classic to Spark?
No. However, we will continue to provide bug fixes and security updates to Spark Classic indefinitely.
# Does Spark support any other payment providers?
No. Spark only supports Stripe and Paddle and it is not possible for developers to customize Spark to accept additional providers. If you need to use another payment provider you should not purchase Laravel Spark.
# Am I required to use Tailwind / Blade / Vue / etc. in order to use Spark?
No. Spark’s billing portal is totally isolated from the rest of your Laravel application and includes its own pre-compiled frontend assets. Your own application may be built using the frontend technologies of your choice.
# Why are my customers presented with a payment confirmation screen?
Extra verification is sometimes required in order to confirm and process a payment. When this happens, Paddle or Stripe will present a payment confirmation screen. Payment confirmation screens presented by Paddle, Stripe, or Spark may be tailored to a specific bank or card issuer’s payment flow and can include additional card confirmation, a temporary small charge, separate device authentication, or other forms of verification.
Блог Vaden Pro
Laravel Spark. Углубленное рассмотрение
Если в последние пару месяцев Вы следили за новостями связанными с Laravel или же присутствовали на Лараконах в США или Европе, то уже должны были неоднократно слышать о Laravel Spark. Ну а в том случае, если Вы впервые узнали о этой новинке, то рекомендую ознакомиться с видео с Европейского Ларакона, в котором Тайлер ее презентует.
Эта статья не спешила с выходом в мир, поскольку данный проект значительно изменился за время своего развития. На сегодняшний же день наконец вышел альфа-релиз Spark-а, потому появилось Api с которым уже можно работать. Хотя некоторые различия между конечным вариантом и текущей версией все же будут.
ВАЖНО! В данной статье описан альфа-релиз. Он еще не отражает окончательную версию api или же функционал технологии. Spark еще неоднократно изменится до своего релиза и не все новшества будут моментально отражены в данной статье. Если же Вы не испытываете особого васторга от работы с данным функционалом и вообще считаете что его создание было плохой идеей, то еще раз повторюсь, это альфа релиз и он еще будет серьезно доработан.
Если Вы желаете ознакомиться с данной технологией быстро или же просто глянуть как установить Spark ознакомьтесь с данной статьей. Это вместо углубленного изучения предмета, которым мы займемся сейчас. Эта статья создана в первую очередь для людей, которые достаточно опытны в разработке и желают ознакомиться с альфа-релизом.
Для чего нужен Spark?
Если Вы все еще не понимаете что же такое Laravel Spark, то уточняю, что это инструмент созданный для ускорения SaaS-приложений, который обрабатывает авторизацию пользователей, запланированные события и платежи, выстраивание командной логики.
Большинство SaaS-приложений имеют такие же компоненты: аккаунты пользователей Stripe платежи и различные платежные планы. И многие из них имеют платежные купоны, возможность совместной оплаты заказов.
Чтобы не создавать каждый раз весь этот функционал при разработке нового приложения на Laravel, просто используйте Spark и Вы сразу получите весь необходимый функционал и бесплатный SaaS лендинг для загрузки.
Установка
Как и в случае с Laravel или Lumen, Spark можно просто установить воспользовавшись Composer-ом. Для этого следует воспользоваться командой:
Добавление Spark в новый Laravel install
Итак, давайте создадим новое приложение:
После установим Spark командой:
Вот несколько подсказок по процессу установки (возможно Вас устроит вариант просто везде выбрать yes ):
Migrations
Какие изменения вносит Spark в Ваши файлы?
Изменений происходит совсем не много. Проверить это можно тут:
Новые файлы из Spark
Spark также добавляет несколько новых файлов для Вас. Давайте просмотрим их:
app/Providers/SparkServiceProvider.php
SparkServiceProvider – файл в котором содержится большинство настроек, потому он весьма большой.
Давайте разберем его по частям:
$invoiceWith
Позволяет настроить счета, которые генерирует Spark. Добавьте сюда Вашу информацию, в итоге она окажется в PDF. Все.
customizeRegistration()
Позволяет настраивать собственные критерии валидации полей и настраивать процесс создания пользователей.
Функция createUsersWith запускается из контролера регистрации следующим образом:
И, только для процесса настройки, вот что получится в случае использования данного метода, если Вы не переопределите его:
customizeRoles()
По умолчанию, в Spark-ке используется ролевая система для групповых настроек. Вы можете создать перечень ролей пользователей и настройки по умолчанию тут.
По умолчанию спарк создает account/admin панель с несколькими стандартными вкладками. Вы можете удалить их, переопределить или создать собственные.
Если Вы используете Teams, то Вы можете настроить и их вкладки:
customizeProfileUpdates()
Так же как в случае с настройкой логики валидации и процесса создания пользователей при регистрации, можно все настроить и для процесса обновления профиля пользователя.
customizeSubscriptionPlans()
Как можно понять из названия, тут задается планировка. Вы можете добавить свободные планы, месячные планы, годовые планы и определить цену, количество испытательных дней и список возможностей.
app/Team.php
Это новая модель для Teams, если Вы собираетесь их использовать.
Так можно расширить модель для настройки
database/migrations/DATE_create_teams_table.php
Это up для переноса:
resources/assets/js/app.js
То, к чему должен обращаться JavaScript приложения, этот файл предварительно заполнен Spark JavaScript-ом.
resources/assets/js/spark/components.js
Подгружает компоненты VueJS для отдельных страниц
resources/views/home.blade.php
Домашняя страница по-умолчанию, которую мы видели ранее:
terms.md
Файл, который будет генерировать страницу «Terms of Service»:
Рассмотрим результат установки
Итак, давайте рассмотрим что у нас получилось. Сперва у нас имеется красивый лединг, который мы уже видели на скриншоте выше, но что мы имеем помимо него?
Сперва давайте взглянем на нашу страницу для входа. Обратите внимание, что у нас имеется хороший Bootstrap макет с фикированным футером, копирайтом и несколькими кнопками социальных сетей.
Помимо этого у нас есть страница для сброса пароля
И страница для регистрации пользователя
Встроенная обработка ошибок
Итак, пришло время для регистрации. После ее завершения мы попадем в панель управления ( /home ), в которой есть выпадающее меню позволяющее нам выйти или изменить наши настройки.
Давайте глянем нашу страницу для настроек пользователя. Обратите внимание, что здесь присутствуют вкладки, которые мы добавили в SparkServiceProvider ранее.
Изменение пароля и двухфакторная авторизация:
Это то что мы получили «из коробки». Давайте рассмотрим еще несколько примеров работы.
Teams
Чтобы позволить пользователям присоединиться к команде, Вам необходимо использовать CanJoinTeams свойство, в Вашей модели пользователя. К счастью, Spark уже встроил этот класс в блок с импортом модели пользователя, потому это так же просто как добавление CanJoinTeams для использования списка свойств Вашей модели:
Теперь, после посещения панели настроек пользователя, мы можем увидеть отличия:
Давайте добавим группу:
В этом контексте я предлагаю думать о команде как о аккаунте. В нашем приложении, где вы авторизировались, осуществили оплату, и увидели данные не по одному конкретному аккаунту, а по группе, у которой есть единый владелец. Именно этот владелец отвечает за оплату и выбор администраторов. Добавлять новых пользователей в группу или удалять из нее старых могут администраторы и владелец группы. Каждый пользователь в группе получает доступ к тем же данным.
Итак, давайте создадим группу и посмотрим что у нас выйдет:
Само собой мы пригласим еще кого-то в нашу команду.
Вот то, что мы видим, пока пользователи не получили доступа:
А вот что после того, как они перешли по ссылке в письме:
После того, как пользователь был подписан на группу у него появляется возможность покинуть данную группу:
Также обратите внимание, что если у Вас есть активные группы, то Вам будет необходимо ввести название Вашей команды при входе в профиль:
После добавления свойства CanJoinTeams в Вашу модель пользователя вы получите в свое распоряжение несколько полезных методов, в том числе:
Платежи и планы
Итак, внезапно мы получаем вкладку подписки:
Проверим теперь регистрацию:
Теперь при регистрации пользователя запрашивается его информация для оплаты:
Проверка плана при помощи кода:
Coupons
Spark передает запросы купонов в Stripe, потому Вам не нужно ничего делать для их добавления, кроме добавления их в Stripe. Просто используется путь пользователя как параметр при входе человека на страницу регистрации
И без строки кода получаем применение купона со скидкой:
Также имеется возможность временно добавить скидку по купону для всего сайта, добавив его в SparkServiceProvider (примерно как в customizeSpark() методе):
Вы можете настроить роль по умолчанию, выберите параметры (у каждого должен быть ключ и значени), и после создания этих ролей вы можете проверить эти параметры и в других местах:
Судя по всему в дальнейшем получить информацию подобного рода станет проще, но пока необходимо использовать код подобный приведенному выше.
Views
По-умолчанию Spark публикует несколько представлений. Если Вам необходимо больше, то есть два варианта: один для основных представлений, другой для всех.
выведет следующие представления:
А для полного экспорта:
Прочее
Отключаем Authy
Дополнительно
Класс Spark-а имеет еще несколько доступных методов. Вот несколько на заметку: Spark::forcingPromotion() показывает используем мы или нет forcingPromotion на сайте в текущий момент. Spark::retrieveusersWith() позволяет настроить методы, которые использует Spark для получения текущего пользователя.
Подводя итоги
Ты сделал это! Это много, я знаю. Как только Spark будет доработан, выйдет новая статья, в которой не будет столь глубокого изучения его работы, как в этом посте, но будут лучше рассмотрены общие принципы его работы.
На самом деле под капотом спарка происходит гораздо больше процессов, здесь же были рассмотрены самые любопытные моменты. Как уже говорилось ранее, изменения в работе еще могут произойти.
40 лучших инструментов и ресурсов Laravel
Привет, Хабр! Представляю вашему вниманию подборку, которая является переводом моей оригинальной статьи.
Если есть идеи что добавить в подборку — буду рад пообщаться в комментах. Наслаждайтесь!
Ресурсы для изучения Laravel
Что я лично считаю классным в Laravel, так это то, что можно легко обучиться работе в нем. Экосистема Laravel это не только инструменты для разработки. У данного фреймворка есть отличная база платформ и курсов, которые помогают изучить основные тонкости работы. Вот некоторые из них:
Laracasts
Laracasts это обучающий ресурс для веб-разработчиков. Ресурс содержит в себе отличные скринкасты о Laravel, Vue, общих понятиях PHP, базах данных и многое другое. Можно сказать, что это как Netflix для вашей будущей карьеры. Обучение можно начать с Laravel from scratch и всегда оставаться в курсе событий с помощью What’s new in Laravel.
Test Driven Laravel
Если мы говорим о техниках разработки, то я предпочитаю использовать разработку через тестирование (TDD). С Laravel эту технику очень легко использовать. Обучиться этому можно с помощью курса Test Driven Laravel. Пройдите видео-курс и сможете выстроить более надежное приложение.
Confident Laravel
Каждый знает, что нужно покрывать свой код тестами, однако только некоторые приложения содержат тесты. Видео-курс Confident Laravel поможет вам устранить барьеры перед написанием тестов. Каждый опытный и амбициозный разработчик пишет тесты. И, конечно же, каждый хочет, чтобы этот процесс занимал меньше времени. Confident Laravel научит вас писать тесты для вашего Laravel приложения и быть полностью в них уверенными.
Laracon Online
Laracon Online — это ежегодная онлайн конференция. Это самый удобный и доступный способ для каждого разработчика почувствовать себя участником конференции Laracon.
Effective PHP
Я настоятельно советую просмотреть видео-курс Нуно Мадуро Writing Effective PHP. Это станет значительным вкладом в образование каждого PHP разработчика. Этот курс обучает тому, как писать код коротко и ясно, а также объясняет основные принципы избежания багов и многое другое.
Laravel Core Adventures
Laravel Core Adventures — это отличный видео-курс об основных концепциях Laravel, который поможет не только получить знания, но и приятно провести время.
Курс Build a Chatbot
Курс Build a chatbot научит вас как разрабатывать, расширять и тестировать чат боты и голосовые боты с помощью PHP.
Laravel Certification
Ну и конечно же, если вы уже получили все необходимые знания и навыки в разработке с Laravel, вы можете подтвердить их с помощью программы сертификации Laravel Certification.
Сообщество Laravel
Сам по себе Laravel уже отличный фреймворк. Но его постоянное развитие очень тесно связано с его сообществом. Разработчики постоянно делятся своим опытом и наработками, дают подсказки и советы, а также отмечают те вещи, которые нуждаются в улучшении. Я бы хотел отметить некоторые из ресурсов, которые необходимы для любого Laravel разработчика.
Laracasts Forum
Laracasts Forum это площадка, где разработчики делятся своим опытом и туториалами. Здесь вы всегда можете попросить совет и обсудить возникшие вопросы.
LaravelIO
LaravelIO — замечательный ресурс, где также обсуждаются вопросы разработки. Там вы сможете найти ответы на различные вопросы и поделиться своим опытом.
Slack-канал Larachat
Larachat Slack Workspace — это Slack пространство с различными каналами, которые посвящены разнообразным тематикам.
Laravel News
Laravel News — это официальный новостной ресурс от Laravel, а также еженедельная информационная почтовая рассылка о последних трендах в сообществе Laravel.
Laravel Podcast
Laravel Podcast — это отличная площадка для обсуждения основных трендов в сообществе Laravel.
LaraJobs
LaraJobs — это ресурс для поиска работы и размещения вакансий на должности связанные с Laravel, PHP разработкой и другими техническими специальностями.
Laravel Blog
Laravel Blog — это официальный блог Laravel, где можно найти всю информацию о последних релизах Laravel и различных событиях, а также увидеть подкасты Тэйлора Отвела (создателя Laravel).
Экосистема Laravel
Экосистеме Laravel определенно есть что предложить разработчикам. Я обычно стараюсь не восхвалять ничего чем пользуюсь, а больше склонен критиковать. Однако когда речь идет об экосистеме Laravel, я просто не могу удержаться. Здесь я бы хотел упомянуть несколько оригинальных и очень полезных инструментов, которые могут пригодится в разработке ваших проектов.
Окружение для Разработки
Laravel Valet
Laravel Valet с легкостью установит минималистичное окружение разработки для вашего Laravel приложения. Поистине замечательный инструмент для пользователей MacOS.
Laravel Homestead
Laravel Homestead — это подготовленная Vagrant сборка, которая обеспечивает отличное окружение для разработки. У вас нет потребности в установке PHP, веб сервера или какого-либо другого программного серверного обеспечения на локальный компьютер.
Laravel Расширения и Пакеты
Laravel Passport
Laravel Passport — максимально простой инструмент для API аутентификации. Он предоставляет полную реализацию сервера OAuth2 для вашего приложения.
Laravel Scout
Добавьте полнотекстовый поиск к вашим Eloquent-моделям с Laravel Scout. Это удобный софт для синхронизации поисковых индексов с вашими записями Eloquent.
Laravel Spark
Laravel Spark — это удобный инструмент для ускорения разработки SaaS приложений.
Laravel Nova
Laravel Nova — это панель администрирования для Laravel с великолепным UI и UX дизайном, которая ускоряет процесс разработки.
Laravel Dusk
Если вы хотите протестировать свое приложения и увидеть его глазами пользователя, попробуйте Laravel Dusk. Этот инструмент позволяет автоматически тестировать приложение с через браузер с помощью удобного для разработчика API. Laravel Dusk по умолчанию поставляется с Chromedriver.
Laravel Socialite
Laravel Socialite — это пакет, который обеспечивает гибки интерфейс для аутентификации с OAuth провайдерами, таких как Facebook, Twitter, Google, LinkedIn, GitHub и многих других.
Laravel Echo
Laravel Echo — это JavaScript библиотека, которая позволяет вам подписываться на каналы и прослушивать транслируемые события через WebSoсkets.
Laravel Medialibrary
Пакет Laravel Medialibrary ассоциируетвсе типы файлов с Eloquent-моделями. Этот пакет делает работу с медиа-объектами удивительно легкой.
Laravel Mix
Laravel Mix (в прошлом назывался Laravel Elixir) — это инструмент, который даёт вам практически полностью управляемый процесс сборки фронтенда. Он обеспечивает понятный и удобный API для определения базовых этапов сборки Webpack для вашего Laravel приложения.
Laravel Cashier
Laravel Cashier — это пакет, который значительно упрощает процесс биллинговых подписок. Хотя я и считаю, что PHP библиотека Stripe сама по себе хороша, но на прямую ее использовать гораздо сложнее. Cashier как раз позволяет избежать потенциальных проблем и упростить управление подписками.
Laravel Envoy
Laravel Envoy — очень полезный инструмент запуска задач с чистым и минималистичным синтаксисом.
Laravel Horizon
Laravel Horizon — это пакет для отслеживания ключевых показателей системы ваших очередей Redis.
BotMan Studio
BotMan Studio — это приложение выстроенное на фреймворке Laravel для более эффективной разработки ваших чат ботов.
Laravel Tenancy
Laravel Tenancy — это инструмент для разработки многопользовательских Laravel платформ.
Lumen
Если у вас нет необходимости использовать полный фреймворк Laravel, то вам определенно понравится Lumen. Это микро-фреймворк, который минимизирует процессы загрузки.
Laravel Telescope
Laravel Telescope — это безупречный ассистент по отладке для Laravel приложений. Чтобы понять, что я имею в виду, представьте себе что самый лучший дебаггер который вы когда-либо использовали стал отдельным UI с самыми удобными инструментами. Вот такой этот Laravel Telescope.
Laravel WebSockets Package
WebSockets для Laravel — это пакет, который так ждали разработчики. Он максимально упрощает реализацию WebSockets сервера в Laravel.
Другие полезные сервисы Laravel
Laravel Forge
Laravel Forge сможет максимально упростить процессы конфигурирования и развертывание веб-приложения. Этот сервис берет на себя большую часть административной работы.
Laravel Vapor
А как насчет безсерверной платформы развертывания, которая делает всю работу за вас? Заверните мне две, пожалуйста. Я говорю о сервисе Laravel Vapor, который я лично нахожу весьма впечатляющим.
Chipper CI
Если вы искали инструмент для непрерывной интеграции в Laravel, Chipper CI это то, что вам нужно.
Flare
Flare — это инструмент для трекер ошибок, которого так ждали разработчики Laravel.
Laravel Shift
А что если я скажу вам, что вы можете обновлять версии Laravel автоматически? Ну, в общем-то даже не вы, а Laravel Shift.
Laravel Envoyer
Laravel Envoyer — это сервис развертывания с нулевым простоем для ваших PHP и Laravel приложений.
Экосистема Laravel набирает обороты
Как по мне, получилась довольно впечатляющая подборка. Примите во внимание, что это еще не все существующие инструменты и сервисы, а только те, которые я сам высоко оцениваю.
Я вижу что фреймворк Laravel с каждым годом лишь набирает и набирает популярность. Сообщество Laravel растет с непреодолимой скоростью. Что это значит для нас? Как минимум то, что в 2019 и последующих годах количество новых инструментов и сервисов значительно вырастет. Их использование определенно ускоряет процесс разработки проектов и, конечно же совершенствуют их качество.
Laravel делает процесс разработки эффективным и помогает реализовать самые безумные идеи. Если вы уже используете данный фреймворк, советую попробовать те инструменты, которые я здесь описал. Если же нет, вы можете сменить ваш текущий фреймворк в любой момент. С экосистемой Laravel очень легко работать и, поверьте, возвращаться к другому фреймворку вам уже не захочется.


























