...
Actualités WEB et WordPress, thèmes, plugins. Ici, nous partageons des conseils et les meilleures solutions de sites Web.

Intégration de la passerelle de paiement PayKun dans Laravel

46

Gérez-vous une boutique en ligne en Inde ? Vous recherchez probablement une passerelle de paiement via laquelle votre client peut payer en ligne.

PayKun est une passerelle de paiement indienne qui accepte les paiements en ligne par carte de crédit, Net Banking, Wallet et UPI. Ils fournissent 2 types de plans pour les commerçants – Standards et Enterprise. Vous pouvez consulter leur plan sur la page de tarification. Dans cet article, nous étudions comment intégrer la passerelle de paiement PayKun dans Laravel.

Intégration de la passerelle de paiement PayKun dans Laravel

Commencer

Pour commencer l’intégration de PayKun dans Laravel, vous devez d’abord créer un compte sur PayKun. Lors de la création du compte, générez des clés API à partir de Paramètres-> Sécurité-> Clé API.

Nous vous recommandons d’abord d’essayer l’intégration avec sandbox et si tout fonctionne comme prévu, passez à la production. Vous pouvez générer des clés API sandbox pour un environnement sandbox de la même manière que la production. Pour accéder au tableau de bord du bac à sable, cliquez sur l’icône en haut à droite, puis sur « Mode test ».

Intégration de la passerelle de paiement PayKun dans Laravel

Ensuite, obtenez votre identifiant de commerçant à partir de Mes comptes-> Profil.

Configuration de base dans Laravel pour accepter le paiement à l’aide de PayKun

Afin de traiter le paiement à l’aide de PayKun, l’identifiant du commerçant et les clés API sont requis. Ajoutez donc ces valeurs dans le .envfichier.

PAYKUN_ACCESS_TOKEN=PASTE_ACCESS_TOKEN_HERE
PAYKUN_KEY_SECRET=PASTE_API_KEY_SECRET_HERE
PAYKUN_MERCHANT_ID=PASTE_MERCHANT_ID_HERE

Lorsque vos utilisateurs effectuent un paiement, vous devez stocker les détails de leur transaction dans la base de données pour une utilisation ultérieure. Créons donc la migration à l’aide de la commande :

php artisan make:migration create_payments_table

Ouvrez ce fichier de migration et ajoutez le code ci-dessous dans la méthode up.

<?php
...
...
 
public function up()
{
    Schema::create('payments', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('payment_id');
        $table->string('payer_email');
        $table->string('payer_mobile');
        $table->float('amount', 10, 2);
        $table->string('payment_status');
        $table->timestamps();
    });
}

Exécutez cette migration par commande :

php artisan migrate

Cette migration créera une table ‘paiements’ dans votre base de données. Comme nous devons stocker les transactions dans cette table, créez un modèle ‘Paiement’ correspondant à la table ‘Paiements’.

php artisan make:model Payment

Nous sommes tous configurés avec une configuration de base et pouvons aller de l’avant pour intégrer la bibliothèque PayKun dans notre projet Laravel.

Intégration de la passerelle de paiement PayKun dans Laravel

PayKun a fourni des SDK pour PHP, .NET, Java, Python, etc. Nous allons utiliser leur bibliothèque GitHub créée pour les applications PHP.

Installez la bibliothèque PayKun dans votre projet Laravel à l’aide de la commande composer suivante :

composer require paykun/checkout

Si vous lisez sur leur page GitHub, vous pouvez ajouter autant de champs comme le client, les détails de facturation et d’expédition. Mais pour les besoins du tutoriel, nous ne prendrons que le champ montant. Les utilisateurs peuvent étendre le formulaire selon leurs besoins.

paiement.lame.php

<form action="{{ url('charge') }}" method="post">
    <input type="text" name="amount" />
    {{ csrf_field() }}
    <input type="submit" name="submit" value="Pay Now">
</form>

Nous avons transmis l’URL d’action à la route ‘charge’. Vous aurez besoin de quelques routes telles que l’URL de réussite, l’URL ayant échoué, la charge, etc. Définissons-la comme suit.

itinéraires/web.php

Route::get('payment', 'PaymentController@index');
Route::post('charge', 'PaymentController@charge');
Route::get('paymentsuccess', 'PaymentController@payment_success');
Route::get('paymenterror', 'PaymentController@payment_error');

La prochaine chose à faire est de créer un fichier de contrôleur qui collectera le montant, d’envoyer un utilisateur sur le site Web de PayKun pour le traitement du paiement, puis d’insérer enfin les détails de la transaction dans la base de données.

php artisan make:controller PaymentController

Ajoutez le code ci-dessous dans ce fichier de contrôleur qui gérera tous les éléments liés au paiement.

PaiementController.php

<?php
 
namespace AppHttpControllers;
 
use IlluminateHttpRequest;
use PaykunCheckoutPayment;
use AppPayment as PaymentModel;
 
class PaymentController extends Controller
{
    public $gateway;
  
    public function __construct()
    {
        $this->gateway = new Payment(env('PAYKUN_MERCHANT_ID'), env('PAYKUN_ACCESS_TOKEN'), env('PAYKUN_KEY_SECRET'), false); // here we pass last parameter as false to enable sandbox mode.
    }
 
    public function index()
    {
        return view('payment');
    }
 
    public function charge(Request $request)
    {
        if($request->input('submit'))
        {
            try {
 
                $this->gateway->setCustomFields(array('udf_1' => 'test')); //remove or comment this line when go live
 
                $this->gateway->initOrder('ORD'.uniqid(), 'My Product Name', $request->input('amount'), url('paymentsuccess'), url('paymenterror'));
 
                // Add Customer
                $this->gateway->addCustomer('', '', '');
 
                // Add Shipping address
                $this->gateway->addShippingAddress('', '', '', '', '');
 
                // Add Billing Address
                $this->gateway->addBillingAddress('', '', '', '', '');
 
                echo $this->gateway->submit();
            } catch(Exception $e) {
                return $e->getMessage();
            }
        }
    }
 
    public function payment_success(Request $request)
    {
 
        if ($request->input('payment-id'))
        {
            $transactionData = $this->gateway->getTransactionInfo($request->input('payment-id'));
 
            if ($transactionData['status'])
            {
                $arr_transaction = $transactionData['data']['transaction'];
 
                // Check if payment_id already exists in the database
                $isPaymentExist = PaymentModel::where('payment_id', $arr_transaction['payment_id'])->first();
          
                if(!$isPaymentExist)
                {
                    $payment = new PaymentModel;
                    $payment->payment_id = $arr_transaction['payment_id'];
                    $payment->payer_email = $arr_transaction['customer']['email_id'];
                    $payment->payer_mobile = $arr_transaction['customer']['mobile_no'];
                    $payment->amount = $arr_transaction['order']['gross_amount'];
                    $payment->payment_status = $arr_transaction['status'];
                    $payment->save();
                }
          
                return "Payment is successful. Your transaction id is: ". $arr_transaction['payment_id'];
            }
        }
    }
 
    public function payment_error(Request $request)
    {
        return "Something went wrong. Try again later.";
    }
}

Si vous regardez le code du constructeur, nous avons passé le dernier paramètre comme ‘false’ (valeur booléenne). Lors de la mise en ligne, vous n’avez pas besoin de passer ce paramètre. Toujours sur le mode de production, supprimez ou commentez la ligne ci-dessous dans la méthode ‘charge’.

$this->gateway->setCustomFields(array('udf_1' => 'test'));

Pendant que vous testez le paiement sandbox, vous devez entrer des numéros de carte de crédit factices que vous obtiendrez ici.

C’est ça! Nous espérons que vous comprenez l’intégration de la passerelle de paiement PayKun dans Laravel. Nous aimerions entendre vos pensées dans la section des commentaires ci-dessous.

Source d’enregistrement: artisansweb.net

Ce site utilise des cookies pour améliorer votre expérience. Nous supposerons que cela vous convient, mais vous pouvez vous désinscrire si vous le souhaitez. J'accepte Plus de détails