Home > Web Development > Laravel Tutorials > Integration of Stripe in Laravel with error handling

Integration of Stripe in Laravel with error handling

Diego Cortés
Diego Cortés
January 20, 2025
Integration of Stripe in Laravel with error handling

The integration of payment systems is an essential part of modern web development, and Stripe has established itself as one of the most widely used platforms due to its ease of use and robust features. In this article, I will present how to integrate Stripe into Laravel, paying special attention to error handling, a fundamental aspect to ensure a seamless user experience.

Initial Stripe Setup

Before starting the integration, you need to have a Stripe account. Once created, you can access your API keys from the Stripe dashboard. It’s important to have both the public key and the secret key handy, as you will need them to authenticate requests from your Laravel application.

Installing Stripe in Laravel

To install Stripe in your Laravel project, you need to add the Stripe library to your dependencies. This can be achieved by running the following command in your terminal:

composer require stripe/stripe-php

After completing the installation, you should add your API keys in the .env file of your project:

STRIPE_KEY=your_public_key
STRIPE_SECRET=your_secret_key

This setup will allow your application to communicate securely with the Stripe servers.

Creating the Route and Controller

Next, you need to define the routes and create a controller that will handle the payment processing. Open the web.php file in your routes directory and add the following:

Route::get('payment', [PaymentController::class, 'showPaymentForm']);
Route::post('payment', [PaymentController::class, 'processPayment']);

Then, generate the controller using this command:

php artisan make:controller PaymentController

Implementing the Payment Processing Method

In the newly created controller, you need to implement the processPayment method. This is where the connection with Stripe is made, and the payment is processed. It is important to include error handling to manage any issues that may arise during the transaction.

use Stripe\Stripe;
use Stripe\Charge;
use Illuminate\Http\Request;

public function processPayment(Request $request)
{
    try {
        Stripe::setApiKey(env('STRIPE_SECRET'));

        $charge = Charge::create([
            'amount' => $request->input('amount'),
            'currency' => 'usd',
            'source' => $request->input('stripeToken'),
            'description' => 'Test payment',
        ]);

        return back()->with('success', 'Payment successfully made.');

    } catch (\Exception $e) {
        return back()->with('error', 'Error processing payment: ' . $e->getMessage());
    }
}

This code attempts to create the charge and, in case of an error, captures the exception and returns a friendly error message to the user.

Error Handling and Responses

Error handling is crucial for providing a good user experience. When processing payments, you are likely to encounter different types of errors, such as connectivity issues, validation errors, or problems with the Stripe API itself.

Using try-catch blocks allows for effective error capturing. Within the catch block, you can add various conditions to handle specific errors, which will allow you to provide more precise feedback to users.

Conclusion

Integrating Stripe into Laravel is a relatively straightforward process that, with the right configuration and good error handling, can offer a secure and efficient payment experience. This article has covered the basic steps to implement this functionality and highlighted the importance of handling errors in each transaction.

For more information on web development and related topics, I invite you to continue exploring more articles on my blog.

Diego Cortés
Diego Cortés
Full Stack Developer, SEO Specialist with Expertise in Laravel & Vue.js and 3D Generalist

Categories

Page loaded in 23.95 ms