Laravel Cashier — это официальный пакет Laravel, который предоставляет удобный интерфейс для работы с платежами и подписками через Stripe и Paddle. Он позволяет легко реализовывать подписки, одноразовые платежи, обработку счетов и многое другое. В этом руководстве мы рассмотрим, как использовать Laravel Cashier для реализации подписок и платежей в Laravel-приложениях.

Шаг 1: Установка Laravel Cashier

Для начала, убедитесь, что у вас установлен Laravel 5.5 или выше, так как Laravel Cashier требует Laravel 5.5 или новее.

Установите Laravel Cashier с помощью Composer:

composer require laravel/cashier

Шаг 2: Настройка базы данных

Laravel Cashier требует, чтобы у вас была таблица users с полями stripe_id и card_brand. Если вы используете стандартную миграцию пользователей Laravel, эти поля уже будут доступны. В противном случае, убедитесь, что ваша таблица users содержит эти поля.

Шаг 3: Настройка Stripe или Paddle

Выберите Stripe или Paddle в качестве вашего провайдера платежей и настройте его в файле .env:

CASHIER_DRIVER=stripe
STRIPE_KEY=your_stripe_key
STRIPE_SECRET=your_stripe_secret

или для Paddle:

CASHIER_DRIVER=paddle
PADDLE_VENDOR_ID=your_paddle_vendor_id
PADDLE_VENDOR_AUTH_CODE=your_paddle_vendor_auth_code

Шаг 4: Подготовка модели User

Добавьте трейт Billable к вашей модели User:

use Laravel\Cashier\Billable;

class User extends Authenticatable
{
    use Billable;
}

Шаг 5: Создание подписок

Чтобы создать подписку для пользователя, вы можете использовать метод newSubscription:

$user = User::find(1);
$user->newSubscription('default', 'premium')->create($creditCardToken);

Шаг 6: Обработка вебхуков

Laravel Cashier автоматически обрабатывает вебхуки Stripe и Paddle, но вам нужно будет настроить маршруты для вебхуков в вашем routes/web.php:

Route::post(
    'stripe/webhook',
    '\Laravel\Cashier\Http\Controllers\WebhookController@handleWebhook'
);

или для Paddle:

Route::post(
    'paddle/webhook',
    '\Laravel\Cashier\Http\Controllers\WebhookController@handleWebhook'
);

Шаг 7: Тестирование

После настройки и реализации подписок и платежей, убедитесь, что вы тщательно протестируете весь процесс, чтобы убедиться, что все работает корректно.

Заключение

Laravel Cashier предлагает мощный и удобный способ реализации подписок и платежей в Laravel-приложениях. Это позволяет легко интегрировать платежи и подписки через Stripe и Paddle, упрощая процесс управления подписками и платежами.