Если ты думаешь, что Laravel Cashier — это «просто установил пакет и принимаешь деньги», то добро пожаловать в реальность. Деньги не любят простоты. Тут и Stripe со своими заморочками, и миграции, которые внезапно не те.
Laravel Cashier — пакет от Laravel для работы с платежами и подписками. На бумаге всё красиво: подписки, одноразовые платежи, работа со счетами. На деле — если у тебя не горело жопой от Stripe API, значит, ты ещё не успел настроить всё это в проде.
Установка: начало боли
composer require laravel/cashier
Звучит невинно. Но это только дверь в кроличью нору. Дальше Cashier требует, чтобы твоя таблица users имела специфические поля:
stripe_id
card_brandи ещё несколько. Если у тебя кастомная модель юзера или БД не «по канону Laravel», готовься писать миграции руками.
Настройка: .env превращается в кладбище
CASHIER_DRIVER=stripe
STRIPE_KEY=your_stripe_key
STRIPE_SECRET=your_stripe_secret
С виду легко. Но готовься к сюрпризам: Stripe требует миллион настроек в личном кабинете или внезапно может не принять твой запрос, потому что «валюта не та» или еще что-то не совпадает.
User-модель: теперь он ещё и кассир
В User добавляем трейт Billable:
use Laravel\Cashier\Billable;
class User extends Authenticatable
{
use Billable;
}
И думаешь: «Всё, можно брать деньги». Но нет. Теперь твоя модель юзера хранит пол-Stripe внутри себя, и ты превращаешься из программиста в бухгалтера с доступом к API.
Подписки: просто строка кода… ага
$user = User::find(1);
$user->newSubscription('default', 'premium')->create($creditCardToken);
Выглядит как магия. Но если токен кривой — привет, Stripe API error. Если у пользователя уже есть подписка — привет, дубли.
Вебхуки: та ещё свалка
Laravel Cashier даёт готовый контроллер, который умеет принимать события:
Route::post(
'stripe/webhook',
'\Laravel\Cashier\Http\Controllers\WebhookController@handleWebhook'
);
Звучит красиво. Но знай: вебхуки Stripe прилетают пачками, иногда вразнобой, и если ты не умеешь отлаживать это дело — утонешь в хаосе.
Тестирование: готовься материться
Cashier вроде как «всё обрабатывает». Но на тестах ты быстро поймёшь, что:
- Stripe-тестовые карты ещё норм, но у них есть свои сценарии ошибок (просрочена, украдена, недостаточно средств).
- Тестировать сложнее, чем реальную оплату: sandbox может вести себя не так, как прод.
- В итоге ты пишешь тесты, а потом руками проверяешь в продакшне — потому что на бумаге всё не сходится.
Итог
Laravel Cashier — это не «поставил пакет и забыл». Это костыль с удобным интерфейсом, но под ним — та же самая боль со Stripe.
- Хочешь подписки? Будь готов к вебхукам.
- Хочешь платежи? Разберись в миграциях и токенах.
- Хочешь спать спокойно? Забудь, пока сам всё не протестируешь в боевых условиях.
Cashier реально упрощает жизнь, но не избавляет от геморроя. Это как хороший шуруповёрт: инструмент удобный, но если руки из жопы — дырка будет кривой.
0 комментариев