Laravel

 

The Definitive Guide to Laravel Cashier Paddle for Subscription Management

Managing subscriptions in a web application can be a daunting task, especially if you’re on the lookout to hire Laravel developers for your project. The process involves handling recurring billing, securely storing credit card details, prorating charges, and more. Laravel Cashier, an official Laravel package, simplifies these tasks, making handling subscription billing a breeze. 

The Definitive Guide to Laravel Cashier Paddle for Subscription Management

This eases the workload for both seasoned Laravel developers and those looking to hire Laravel developers. Today, we’ll focus on Laravel Cashier’s integration with Paddle, a popular payment and subscription platform.

1. Introduction to Laravel Cashier

Laravel Cashier is a tool that provides an expressive, fluent interface to Paddle’s subscription billing services. It handles almost all of the boilerplate subscription billing code you dread writing. With Laravel Cashier, developers can focus on creating the rest of their application without worrying about the details of handling subscription billing.

2. Introduction to Paddle

Paddle is a subscription and billing management platform that unifies payments, subscriptions, and invoicing into one platform. It is popular for its ability to handle global taxes and its built-in compliance features. With Paddle, you can sell your products worldwide without the hassle of dealing with tax regulations.

3. Setting Up Laravel Cashier Paddle

Before diving in, you need to have a Laravel project set up. You also need to have an account with Paddle and your vendor ID and authentication details ready.

Install Laravel Cashier Paddle through Composer:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
```bash
composer require laravel/cashier-paddle
```
```bash composer require laravel/cashier-paddle ```
```bash
composer require laravel/cashier-paddle
```

Next, you need to publish the Cashier migration and migrate it:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
```bash
php artisan cashier:install
php artisan migrate
```
```bash php artisan cashier:install php artisan migrate ```
```bash
php artisan cashier:install
php artisan migrate
```

You also need to add your Paddle API details to your `.env` file:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
```bash
PADDLE_VENDOR_ID=your-paddle-vendor-id
PADDLE_VENDOR_AUTH_CODE=your-paddle-vendor-auth-code
```
```bash PADDLE_VENDOR_ID=your-paddle-vendor-id PADDLE_VENDOR_AUTH_CODE=your-paddle-vendor-auth-code ```
```bash
PADDLE_VENDOR_ID=your-paddle-vendor-id
PADDLE_VENDOR_AUTH_CODE=your-paddle-vendor-auth-code
```

Finally, in your `Billable` model, usually the `User` model, use the `Billable` trait:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
```php
use Laravel\Paddle\Billable;
class User extends Authenticatable
{
use Billable;
}
```
```php use Laravel\Paddle\Billable; class User extends Authenticatable { use Billable; } ```
```php
use Laravel\Paddle\Billable;

class User extends Authenticatable
{
    use Billable;
}
```

4. Creating Subscriptions

With Laravel Cashier Paddle, you can create subscriptions easily. Suppose we have a form where users can select a subscription plan. Once the form is submitted, you can create the subscription like this:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
```php
$user = Auth::user();
$subscription = $user->newSubscription('main', $planId)->create($checkoutId);
```
```php $user = Auth::user(); $subscription = $user->newSubscription('main', $planId)->create($checkoutId); ```
```php
$user = Auth::user();

$subscription = $user->newSubscription('main', $planId)->create($checkoutId);
```

In the example above, `main` is the name of the subscription, `$planId` is the ID of the subscription plan in Paddle, and `$checkoutId` is the checkout ID from the Paddle checkout process.

5. Handling Webhooks

Paddle communicates with your application through webhooks. Laravel Cashier automatically handles Paddle’s webhooks via its included controller. All you need to do is point a route to this controller. 

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
```php
Route::post(
'webhook-url',
'\Laravel\Paddle\Http\Controllers\WebhookController@handleWebhook'
);
```
```php Route::post( 'webhook-url', '\Laravel\Paddle\Http\Controllers\WebhookController@handleWebhook' ); ```
```php
Route::post(
    'webhook-url',
    '\Laravel\Paddle\Http\Controllers\WebhookController@handleWebhook'
);
```

Replace `’webhook-url’` with the URL Paddle will use to send webhook notifications to your application. Be sure to configure this route in your Paddle dashboard as well.

6. Checking Subscription Status

Laravel Cashier provides several methods to check the status of a user’s subscription:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
```php
if ($user->subscribed('main')) {
// User is subscribed to the "main" subscription
}
if ($user->subscribedToPlan($planId, 'main')) {
// User is subscribed to "main" and on plan $planId
}
if ($user->subscription('main')->active()) {
// User subscription is active
}
if ($user->subscription('main')->paused()) {
// User subscription is paused
}
if ($user->subscription('main')->pastDue()) {
// User subscription has past due payment
}
if ($user->subscription('main')->canceled()) {
// User subscription is canceled
}
```
```php if ($user->subscribed('main')) { // User is subscribed to the "main" subscription } if ($user->subscribedToPlan($planId, 'main')) { // User is subscribed to "main" and on plan $planId } if ($user->subscription('main')->active()) { // User subscription is active } if ($user->subscription('main')->paused()) { // User subscription is paused } if ($user->subscription('main')->pastDue()) { // User subscription has past due payment } if ($user->subscription('main')->canceled()) { // User subscription is canceled } ```
```php
if ($user->subscribed('main')) {
    // User is subscribed to the "main" subscription
}

if ($user->subscribedToPlan($planId, 'main')) {
    // User is subscribed to "main" and on plan $planId
}

if ($user->subscription('main')->active()) {
    // User subscription is active
}

if ($user->subscription('main')->paused()) {
    // User subscription is paused
}

if ($user->subscription('main')->pastDue()) {
    // User subscription has past due payment
}

if ($user->subscription('main')->canceled()) {
    // User subscription is canceled
}
```

7. Pausing and Resuming Subscriptions

To pause a subscription:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
```php
$user->subscription('main')->pause();
```
```php $user->subscription('main')->pause(); ```
```php
$user->subscription('main')->pause();
```

And to resume a paused subscription:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
```php
$user->subscription('main')->resume();
```
```php $user->subscription('main')->resume(); ```
```php
$user->subscription('main')->resume();
```

8. Canceling Subscriptions

Canceling a subscription is also straightforward:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
```php
$user->subscription('main')->cancel();
```
```php $user->subscription('main')->cancel(); ```
```php
$user->subscription('main')->cancel();
```

By default, the subscription will remain active until the end of the billing period. You can immediately cancel the subscription with:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
```php
$user->subscription('main')->cancelNow();
```
```php $user->subscription('main')->cancelNow(); ```
```php
$user->subscription('main')->cancelNow();
```

Conclusion

Laravel Cashier Paddle provides a clean, simple API for handling subscription billing with Paddle. It abstracts various aspects of subscription management, allowing developers, including those looking to hire Laravel developers, to focus more on the core features of their applications. 

Whether you’re a seasoned Laravel developer or a business seeking to hire Laravel developers, this guide should provide a better understanding of how to effectively use Laravel Cashier with Paddle. Embrace this tool and simplify your subscription management tasks. Happy coding!

Previously at
Flag Argentina
Argentina
time icon
GMT-3
Experienced Full Stack Engineer with expertise in Laravel and AWS. 7 years of hands-on Laravel development, leading impactful projects and teams.