Intégration PayPal with Laravel

Laravel : Intégration de la passerelle de paiement Paypal

(Last Updated On: 18 juin 2022)

Paypal est une passerelle internationale de traitement des paiements fonctionnant dans la majorité des pays qui prennent en charge le transfert d’argent en ligne. Paypal offre un moyen plus rapide et plus sûr de transférer de l’argent. En raison de sa popularité, la plupart des entreprises de commerce électronique notament les applications Basée sur Laravel, utilisent Paypal pour collecter de l’argent auprès des clients.

Dans cet article, nous allons intégrer la passerelle de paiement Paypal dans l’application Laravel 8. Il s’agit de sites Web de commerce électronique utiles utilisant le framework Laravel comme technologie backend. Nous allons procéder étape par étape depuis le début.

Le tutoriel suivra les étapes ci-dessous :

  • Étape 1 : Créer une nouvelle application Laravel
  • Étape 2 : Installer le package Laravel-Paypal
  • Étape 3 : Créer un compte Paypal et ses identifiants
  • Étape 4 : Configurer le package
  • Étape 5 : Créer des itinéraires d’application
  • Étape 6 : Créez le contrôleur PayPalController
  • Étape 7 : Créer une vue en lame pour le bouton de paiement
  • Étape 8 : Créer une transaction de test

Alors, commençons par créer une nouvelle application Laravel.

Étape 1 : Créer une nouvelle application Laravel

Nous allons commencer le didacticiel à partir de la création d’une nouvelle application Laravel 8. Nous utiliserons l’application Composer pour créer la dernière application Laravel. Pour commencer avec le tutoriel, ouvrez le Terminal ou CMD et exécutez la commande Composer ci-dessous pour créer l’application Laravel

composer create-project laravel/laravel paypal --prefer-dist

Une fois le projet créé, modifiez le répertoire du terminal en projet.

cd paypal

Étape 2 : Installer le package Laravel – Paypal

Dans la deuxième étape, nous installerons le  package Laravel-Paypal . En utilisant ce package, vous pouvez également gérer le remboursement, la notification de paiement ou l’API Rest. Exécutez la commande suivante pour installer le package.

composer require srmklive/paypal:~3.0

Étape 3 : Créer un compte Paypal et ses identifiants

Nous allons utiliser les informations d’identification de Sandbox pour créer une transaction de test. Pour générer les informations d’identification de l’API REST pour les environnements sandbox et live, connectez-vous au tableau de bord du développeur  avec votre compte PayPal. Vous devez enregistrer l’application et créer des identifiants d’API. Dans le DASHBOARD menu, sélectionnez l’ My Apps & Credentials option.

Cliquez sur Créer une application.

 Applications Laravel Framework PHP

Remplissez le formulaire et créez App.

 Applications Laravel Framework PHP

Cela générera une nouvelle application, cliquez maintenant sur l’application et obtenez l’ID client et le secret. Nous aurons besoin de ces détails pour les ajouter au fichier Laravel .env.

Étape 4 : Configurer le package Laravel – PayPal

Une fois l’installation du package terminée et l’obtention des informations d’identification de l’API, ouvrez le projet dans votre IDE. Ajoutez les informations d’identification de l’API Paypal au fichier .env dans le répertoire racine.

#sandbox or live
PAYPAL_MODE=sandbox
#Paypal sandbox credential
PAYPAL_SANDBOX_CLIENT_ID=AeExqObFcW0X........tjVEuZm
PAYPAL_SANDBOX_CLIENT_SECRET=EOvIUjNQj.......gDTnkhNd
#Paypal live credential
PAYPAL_LIVE_CLIENT_ID=Jjac8ad......f2sd2faww
PAYPAL_LIVE_CLIENT_SECRET=cak8nd0Pq3mQf2f......jawd2z2d6

Si vous souhaitez personnaliser les options de configuration par défaut du package, exécutez la commande vendor:publish ci-dessous.

php artisan vendor:publish --provider "Srmklive\PayPal\Providers\PayPalServiceProvider"

Cela créera config/paypal.php un fichier de configuration avec les détails ci-dessous, que vous pourrez modifier.

<?php

return [
    'mode'    => env('PAYPAL_MODE', 'sandbox'),

    'sandbox' => [
        'client_id'         => env('PAYPAL_SANDBOX_CLIENT_ID', ''),
        'client_secret'     => env('PAYPAL_SANDBOX_CLIENT_SECRET', ''),
        'app_id'            => 'APP-80W284485P519543T',
    ],

    'live' => [
        'client_id'         => env('PAYPAL_LIVE_CLIENT_ID', ''),
        'client_secret'     => env('PAYPAL_LIVE_CLIENT_SECRET', ''),
        'app_id'            => '',
    ],

    'payment_action' => env('PAYPAL_PAYMENT_ACTION', 'Sale'),
    'currency'       => env('PAYPAL_CURRENCY', 'USD'),
    'notify_url'     => env('PAYPAL_NOTIFY_URL', ''),
    'locale'         => env('PAYPAL_LOCALE', 'en_US'),
    'validate_ssl'   => env('PAYPAL_VALIDATE_SSL', true),
];

Étape 5 : Créer des itinéraires d’application

Nous devons maintenant créer des routes d’application que nous allons tester la transaction de test d’application. Ouvrez le fichier de route de l’application routes/web.php et ajoutez les nouvelles routes suivantes.

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\PayPalController;

Route::get('create-transaction',[PayPalController::class, 'createTransaction'])->name('createTransaction');
Route::get('process-transaction', [PayPalController::class, 'processTransaction'])->name('processTransaction');
Route::get('success-transaction', [PayPalController::class, 'successTransaction'])->name('successTransaction');
Route::get('cancel-transaction', [PayPalController::class, 'cancelTransaction'])->name('cancelTransaction');

Étape 6 : Créez le contrôleur PayPalController

Nous avons défini des routes qui redirigent vers PayPalController la classe contrôleur. Créez donc une classe de contrôleur à l’aide de la commande Artisan suivante.

php artisan make:controller PayPalController

Cela créera une nouvelle classe de contrôleur dans app/Http/Controllers/PayPalController.php le fichier. Ouvrez ce fichier et ajoutez-y le code ci-dessous.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Srmklive\PayPal\Services\PayPal as PayPalClient;

class PayPalController extends Controller
{
    /**
     * create transaction.
     *
     * @return \Illuminate\Http\Response
     */
    public function createTransaction()
    {
        return view('transaction');
    }

    /**
     * process transaction.
     *
     * @return \Illuminate\Http\Response
     */
    public function processTransaction(Request $request)
    {
        $provider = new PayPalClient;
        $provider->setApiCredentials(config('paypal'));
        $paypalToken = $provider->getAccessToken();

        $response = $provider->createOrder([
            "intent" => "CAPTURE",
            "application_context" => [
                "return_url" => route('successTransaction'),
                "cancel_url" => route('cancelTransaction'),
            ],
            "purchase_units" => [
                0 => [
                    "amount" => [
                        "currency_code" => "USD",
                        "value" => "1000.00"
                    ]
                ]
            ]
        ]);

        if (isset($response['id']) && $response['id'] != null) {

            // redirect to approve href
            foreach ($response['links'] as $links) {
                if ($links['rel'] == 'approve') {
                    return redirect()->away($links['href']);
                }
            }

            return redirect()
                ->route('createTransaction')
                ->with('error', 'Something went wrong.');

        } else {
            return redirect()
                ->route('createTransaction')
                ->with('error', $response['message'] ?? 'Something went wrong.');
        }
    }

    /**
     * success transaction.
     *
     * @return \Illuminate\Http\Response
     */
    public function successTransaction(Request $request)
    {
        $provider = new PayPalClient;
        $provider->setApiCredentials(config('paypal'));
        $provider->getAccessToken();
        $response = $provider->capturePaymentOrder($request['token']);

        if (isset($response['status']) && $response['status'] == 'COMPLETED') {
            return redirect()
                ->route('createTransaction')
                ->with('success', 'Transaction complete.');
        } else {
            return redirect()
                ->route('createTransaction')
                ->with('error', $response['message'] ?? 'Something went wrong.');
        }
    }

    /**
     * cancel transaction.
     *
     * @return \Illuminate\Http\Response
     */
    public function cancelTransaction(Request $request)
    {
        return redirect()
            ->route('createTransaction')
            ->with('error', $response['message'] ?? 'You have canceled the transaction.');
    }
}

Étape 7 : Créer une vue en lame pour le bouton de paiement

Dans cette étape, nous allons créer une vue qui redirigera pour traiter la transaction. Créez un fichier de fichier de vue de lame resources/views/transaction.blade.php et ajoutez-y le code ci-dessous.

<!doctype html>
<html>
<head>
    <metacharset="utf-8">
    <linkhref="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
    <title>Pay $1000</title>
    <scriptsrc="https://www.paypal.com/sdk/js?client-id={{%20env('PAYPAL_SANDBOX_CLIENT_ID')%20}}"></script>
</head>
<body>
    <aclass="btn btn-primary m-3" href="{{%20route('processTransaction')%20}}">Pay $1000</a>
    @if(\Session::has('error'))
        <divclass="alert alert-danger">{{ \Session::get('error') }}</div>
        {{ \Session::forget('error') }}
    @endif
    @if(\Session::has('success'))
        <divclass="alert alert-success">{{ \Session::get('success') }}</div>
        {{ \Session::forget('success') }}
    @endif
</body>
</html>

Étape 8 : Créer une transaction de test

L’intégration Paypal est terminée. Nous devons maintenant créer la transaction. Exécutez le serveur Laravel en utilisant la commande Artisan ci-dessous.

php artisan serve

Et dans la fenêtre de votre navigateur, exécutez l’URL http://localhost:8000/create-transaction et traitez la transaction. Pour payer avec un compte PayPal, vous devez créer un compte sandbox .

 Applications Laravel Framework PHP

Vous pouvez parcourir tout l’historique des appels API sur le tableau de bord PayPal .

Conclusion

Enfin, notre tutoriel est terminé. Nous avons intégré l’intégration du paiement PayPal. J’espère que ce tutoriel vous aidera dans votre développement. Vous pouvez télécharger le code d’intégration de cet article de tutoriel depuis GitHub .

Source: https://hackthestuff.com/


Merci de votez pour cet article :
Votez : Pas malMoyenBienAcès bienExcélent (1 votes, average: 3,00 out of 5)
Loading...

Laisser un commentaire

Translate »