search
HomePHP FrameworkLaravelLaravel Development: How to handle subscription payments using Laravel Cashier and Paddle?

As more and more companies begin to provide subscription services to consumers, subscription payments have become an important part of modern Internet commerce. If you want to build a subscription service, or want to add subscription payment functionality to an existing service, the Laravel Cashier and Paddle combination will provide you with a suitable solution.

Laravel Cashier is an extension package developed by Laravel that provides a simple and easy-to-use interface for subscription processing and payment gateway integration. Paddle is a global payments solution that allows you to process payments and subscriptions in a standards-compliant way.

In this article, we will explore how to use Laravel Cashier and Paddle to handle subscription payments, including how to set up a Paddle account and Laravel project environment, how to handle subscription payments, and how to test Paddle.

Set up a Paddle account

In order to use Paddle as a payment gateway, you need to first create a Paddle account. After creating a Paddle account, you need to create a product in Paddle. This product can be the main product of your subscription service, or it can be an add-on product or service.

Next, you need to set up shipping locations and tax rules. These rules will depend on the localization scope of your service and other important factors. Finally, you need to set up a price plan or subscription plan for your product in Paddle. This plan will define the price, payment cycle, and other relevant information for your subscription service.

Set up the Laravel environment

Before setting up the Laravel environment, you need to determine the requirements for the Laravel version and PHP version. Laravel Cashier needs to run on Laravel 5.1 and above, and Paddle needs to run on PHP 7.0 and above.

After you confirm the Laravel and PHP version requirements, you need to introduce Laravel Cashier into the Laravel project. You can install Laravel Cashier by running the following command:

composer require laravel/cashier

After successful installation, you need to add the service provider and alias in config/app.php. Add the following service provider in the providers array:

LaravelCashierCashierServiceProvider::class,

Add the following alias in the aliases array:

'Cashier' => LaravelCashierFacadesCashier:: class,

Next, you need to configure your Paddle information. Add the following information to config/services.php:

'paddle' => [

'vendor_id' => env('PADDLE_VENDOR_ID'),
'vendor_auth_code' => env('PADDLE_VENDOR_AUTH_CODE'),

],

You need to replace the above information with your Paddle account Information. You can find this information in the settings page of your Paddle account.

Processing Subscription Payments

Now that you have set up your Paddle account and Laravel environment, you can start using Laravel Cashier and Paddle to process subscription payments.

In your application, you can create a simple route to handle payment requests. For example:

Route::get('/subscribe', function () {

$plan = request('plan');

$user = auth()->user();

$user->newSubscription('main', $plan)->create(request()->query('email'), [
    'metadata' => [
        'name' => $user->name,
        'company' => $user->company,
    ]
]);

return redirect('/');

});

In the above code, we use Cashier to create a new of subscriptions. We first get the user's email address and then create a new subscription. When creating a subscription, we add some user information to the metadata array.

You can also use the defaultPaymentMethod method to specify the user's default payment method:

$user->defaultPaymentMethod('pm_1234567890');

When a payment is received , you can use Stripe events to automatically update the user's payment status, for example:

Route::post('/stripe/webhook', function (Request $request) {

$payload = $request->all();
$event = null;

if (isset($payload['type'])) {
    $event = StripeEvent::constructFrom($payload);
}

if ($event && $event->type === 'customer.subscription.updated') {
    $subscription = $event->data->object->id;
    $customer = $event->data->object->customer;

    $user = User::where('stripe_id', $customer)->first();

    $user->subscriptions()->where('stripe_id', $subscription)->update([
        'stripe_status' => $event->data->object->status,
    ]);
}

return response()->json(['success' => true]);

}) ;

In the above code, we use Stripe events to update the user's subscription status. For specific usage, please refer to Stripe documentation.

Testing

After you complete the above steps and implement subscription payment, you should test Paddle to ensure that all functions are working properly.

Before you test, you need to configure a Paddle account and a test product for the test environment. To ensure that your code works smoothly against the test environment, you need to use test amounts and test subscription loops when testing.

After you complete the test, you can view the test data in the Paddle dashboard to make sure everything is working properly. If you encounter any problems, you can find more information in the Laravel Cashier or Paddle documentation.

Conclusion

The integration of Laravel Cashier and Paddle provides you with a simple, easy-to-configure solution for implementing subscription payment functionality. Whether you are building a new subscription service or adding subscription payment functionality to an existing service, this combination will provide you with the right solution.

The above is the detailed content of Laravel Development: How to handle subscription payments using Laravel Cashier and Paddle?. For more information, please follow other related articles on the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Laravel's Versatility: From Simple Sites to Complex SystemsLaravel's Versatility: From Simple Sites to Complex SystemsApr 13, 2025 am 12:13 AM

The Laravel development project was chosen because of its flexibility and power to suit the needs of different sizes and complexities. Laravel provides routing system, EloquentORM, Artisan command line and other functions, supporting the development of from simple blogs to complex enterprise-level systems.

Laravel (PHP) vs. Python: Development Environments and EcosystemsLaravel (PHP) vs. Python: Development Environments and EcosystemsApr 12, 2025 am 12:10 AM

The comparison between Laravel and Python in the development environment and ecosystem is as follows: 1. The development environment of Laravel is simple, only PHP and Composer are required. It provides a rich range of extension packages such as LaravelForge, but the extension package maintenance may not be timely. 2. The development environment of Python is also simple, only Python and pip are required. The ecosystem is huge and covers multiple fields, but version and dependency management may be complex.

Laravel and the Backend: Powering Web Application LogicLaravel and the Backend: Powering Web Application LogicApr 11, 2025 am 11:29 AM

How does Laravel play a role in backend logic? It simplifies and enhances backend development through routing systems, EloquentORM, authentication and authorization, event and listeners, and performance optimization. 1. The routing system allows the definition of URL structure and request processing logic. 2.EloquentORM simplifies database interaction. 3. The authentication and authorization system is convenient for user management. 4. The event and listener implement loosely coupled code structure. 5. Performance optimization improves application efficiency through caching and queueing.

Why is Laravel so popular?Why is Laravel so popular?Apr 02, 2025 pm 02:16 PM

Laravel's popularity includes its simplified development process, providing a pleasant development environment, and rich features. 1) It absorbs the design philosophy of RubyonRails, combining the flexibility of PHP. 2) Provide tools such as EloquentORM, Blade template engine, etc. to improve development efficiency. 3) Its MVC architecture and dependency injection mechanism make the code more modular and testable. 4) Provides powerful debugging tools and performance optimization methods such as caching systems and best practices.

Which is better, Django or Laravel?Which is better, Django or Laravel?Mar 28, 2025 am 10:41 AM

Both Django and Laravel are full-stack frameworks. Django is suitable for Python developers and complex business logic, while Laravel is suitable for PHP developers and elegant syntax. 1.Django is based on Python and follows the "battery-complete" philosophy, suitable for rapid development and high concurrency. 2.Laravel is based on PHP, emphasizing the developer experience, and is suitable for small to medium-sized projects.

Which is better PHP or Laravel?Which is better PHP or Laravel?Mar 27, 2025 pm 05:31 PM

PHP and Laravel are not directly comparable, because Laravel is a PHP-based framework. 1.PHP is suitable for small projects or rapid prototyping because it is simple and direct. 2. Laravel is suitable for large projects or efficient development because it provides rich functions and tools, but has a steep learning curve and may not be as good as pure PHP.

Is Laravel a frontend or backend?Is Laravel a frontend or backend?Mar 27, 2025 pm 05:31 PM

LaravelisabackendframeworkbuiltonPHP,designedforwebapplicationdevelopment.Itfocusesonserver-sidelogic,databasemanagement,andapplicationstructure,andcanbeintegratedwithfrontendtechnologieslikeVue.jsorReactforfull-stackdevelopment.

How do I create and use custom Blade directives in Laravel?How do I create and use custom Blade directives in Laravel?Mar 17, 2025 pm 02:50 PM

The article discusses creating and using custom Blade directives in Laravel to enhance templating. It covers defining directives, using them in templates, and managing them in large projects, highlighting benefits like improved code reusability and r

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools