guysolamour/laravel-cinetpay

A laravel wrapper for cinetpay

v2.0 2023-02-26 08:36 UTC

This package is auto-updated.

Last update: 2024-04-13 20:03:39 UTC


README

Packagist Packagist Packagist

Ce package est un wrapper autour du pour effectuer des paiements en ligne. Vous pouvez visiter leur site internet pour en savoir plus sur leurs différents services.

Installation

Install via composer

composer require guysolamour/laravel-cinetpay

Prerequisites

  • PHP >= 8
  • Laravel >= 8

Publish package assets

php artisan vendor:publish --provider="Guysolamour\Cinetpay\ServiceProvider"

Usage

Etape 1

Ajoutez les clés api dans le fichier .env

CINETPAY_API_KEY="your api key"
CINETPAY_SITE_ID="your site id"
# Ces différentes routes seront automatiquement créés pour vous
CINETPAY_NOTIFY_URL="/cinetpay/notify"
CINETPAY_RETURN_URL="/cinetpay/return"
CINETPAY_CANCEL_URL="/cinetpay/cancel"

Etape 2 : Création des routes de redirection

Vous devrez mettre le controller responsable de gérer ces routes dans le fichier de configuration config/cinetpay.php

'controller' => \App\Http\Controllers\PaymentController::class,

Exemple de controller

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Guysolamour\Cinetpay\Cinetpay;
use Guysolamour\Cinetpay\Http\Controllers\PaymentController as CinetpayPaymentController;

class PaymentController extends CinetpayPaymentController
{
   public function cancel(Request $request)
    {
        // redirect the user where you want
        // return redirect('/'); // or redirect()->home();
    }

    public function return(Request $request, Cinetpay $cinetpay)
    {
        // $cinetpay->getTransactionBuyer();
        // $cinetpay->getTransactionDate()->toDateString();
        // $cinetpay->getTransactionCurrency();
        // $cinetpay->getTransactionPaymentMethod();
        // $cinetpay->getTransactionPaymentId();
        // $cinetpay->getTransactionPhoneNumber();
        // $cinetpay->getTransactionPhonePrefix();
        // $cinetpay->getTransactionLanguage();
        // $cinetpay->isValidPayment();


        if ($cinetpay->isValidPayment()) {
            // success
        } else {
            // fail
        }

        // redirect the user where you want
        // return redirect('/'); // or redirect()->home();
    }

    public function notify(Request $request, Cinetpay $cinetpay)
    {
        // $cinetpay->getTransactionBuyer();
        // $cinetpay->getTransactionDate()->toDateString();
        // $cinetpay->getTransactionCurrency();
        // $cinetpay->getTransactionPaymentMethod();
        // $cinetpay->getTransactionPaymentId();
        // $cinetpay->getTransactionPhoneNumber();
        // $cinetpay->getTransactionPhonePrefix();
        // $cinetpay->getTransactionLanguage();
        // $cinetpay->isValidPayment();


        if ($cinetpay->isValidPayment()){
            // success
        }else {
            // fail
        }

        // redirect the user where you want
        // return redirect('/'); // or redirect()->home();
    }
}

Vous pouvez manuellemet créer les routes de redirection depuis votre fichier de route web.php

Route::get('/cinetpay/cancel', [PaymentController::class, 'cancel'])->name('cinetpay.cancel');
Route::post('/cinetpay/notify', [PaymentController::class, 'notify'])->name('cinetpay.notify');
Route::post('/cinetpay/return', [PaymentController::class, 'return'])->name('cinetpay.return')

ou uliser cette méthode , toujours depuis le fichier web.php

/*
* Cette fonction enregistra les routes pour vous
*/
 \Guysolamour\Cinetpay\Facades\Utils::routes();

Etape 3

Afficher le bouton de paiement sur une page.

Depuis le controller, créez une instance de la classe \Guysolamour\Cinetpay\Cinetpay en le personnalisant avec l'aide des différentes méthodes existantes sur la classe.

Lorsque la fonction init est appellée, elle récupera les cles apis et les routes de redirection dans le fichier .env et construira l'instance de la classe pour vous avec toutes ces valeurs.

$cinetpay = \Guysolamour\Cinetpay\Cinetpay::init();

Ajoutez l'identifiant de la transaction, cette valeur devra etre stocke dans votre application afin d'identififier et vérfier le statut de chaque paiement. Cette valeur est obligatoire et il existe plusieurs facons de le générer

$cinetpay = \Guysolamour\Cinetpay\Cinetpay::init()
  ->setTransactionId($transactionId) // must be unique
;

Il existe une méthode statique au sein de la classe qui génère des identifiants de transaction.

$transactionId= \Guysolamour\Cinetpay\Cinetpay::generateTransId(); // cette valeur devra etre stocke dans votre application afin d'identififier et vérfier le statut de chaque paiement
$cinetpay = \Guysolamour\Cinetpay\Cinetpay::init()
  ->setTransactionId($transactionId) // must be unique
;

Ajoutez l'identifiant de l'acheteur pour faire la liaison entre le l'acheteur et le paiement. L'identifiant doit etre unique à chaque acheteur.

$transactionId= \Guysolamour\Cinetpay\Cinetpay::generateTransId(); // cette valeur devra etre stocke dans votre application afin d'identififier et vérfier le statut de chaque paiement
$user = \App\Models\User::first();

$cinetpay = \Guysolamour\Cinetpay\Cinetpay::init()
  ->setTransactionId($transactionId) // must be unique
  ->setBuyerIdentifiant($user->email ) # or $user->id
;

Cette partie n'est pas obligatoire mais vous pouvez ajouter le numéro qui sera utilisé pour pre remplir le formulaire du paiment.

$transactionId= \Guysolamour\Cinetpay\Cinetpay::generateTransId(); // cette valeur devra etre stocke dans votre application afin d'identififier et vérfier le statut de chaque paiement
$user = \App\Models\User::first();

$cinetpay = \Guysolamour\Cinetpay\Cinetpay::init()
  ->setTransactionId($transactionId) // must be unique
  ->setBuyerIdentifiant($user->email ) # or $user->id
  ->setPhonePrefixe('225') // for ivory coast
  ->setCelPhoneNum('0102030405')
;

Ajouter la désignation ou nom ou description du produit à acheter

$transactionId= \Guysolamour\Cinetpay\Cinetpay::generateTransId(); // cette valeur devra etre stocke dans votre application afin d'identififier et vérfier le statut de chaque paiement

$user = \App\Models\User::first();
$cinetpay = \Guysolamour\Cinetpay\Cinetpay::init()
  ->setTransactionId($transactionId) // must be unique
  ->setBuyerIdentifiant($user->email ) # or $user->id
  ->setPhonePrefix('225') // for ivory coast
  ->setCelPhoneNum('0102030405')
  ->setDesignation('Mackbook pro 2021 m1')
;

Ajouter le montant total de la transaction, c'est ce montant qui sera facturé au client.

$transactionId= \Guysolamour\Cinetpay\Cinetpay::generateTransId(); // cette valeur devra etre stocke dans votre application afin d'identififier et vérfier le statut de chaque paiement

$user = \App\Models\User::first();

$cinetpay = \Guysolamour\Cinetpay\Cinetpay::init()
  ->setTransactionId($transactionId) // must be unique
  ->setBuyerIdentifiant($user->email ) # or $user->id
  ->setPhonePrefix('225') // for ivory coast
  ->setCelPhoneNum('0102030405')
  ->setDesignation('Mackbook pro 2021 m1')
  ->setAmount('950000')
;

Enfin passez la variabe à la vue qui sera chargé d'afficher le bouton de paiement.

return view('shop.checkout', ['cinetpay' => $cinetpay]);
$user = \App\Models\User::first();
$cinetpay = \Guysolamour\Cinetpay\Cinetpay::init()
  ->setTransactionId($transactionId) // must be unique
  ->setBuyerIdentifiant($user->email ) # or $user->id
  ->setPhonePrefix('225') // for ivory coast
  ->setCelPhoneNum('0102030405')
  ->setDesignation('Mackbook pro 2021 m1')
  ->setAmount('950000')
;

Etape 4: Personnalisation du bouton

Dans le fichier

{!! $cinetpay !!}

Pour changer le label du bouton

{!! $cinetpay->show('buy quickly with mobile money') !!}

Pour changer l'apparence du boutn (css), il faudra retirer les styles par défaut

# config/cinetpay.php

return [
  'button' => [
    'use_default_style' => false,
  ]
];

Ajouter des classes css au bouton

# config/cinetpay.php

return [
  'button' => [
    'class' => 'btn btn-primary ben-block',
  ]
];

Ajoutez un identifiant au bouton

# config/cinetpay.php

return [
  'button' => [
    'id' => 'paybutton',
  ]
];

Ajouter directement du css inline

# config/cinetpay.php

return [
  'button' => [
    'style' => 'color: white; font-weight: bold',
  ]
];

Ajoutez des attributs html au bouton

# config/cinetpay.php

return [
  'button' => [
      'attributes' => [
        'data-button' => 'pay'
      ],
  ]
];

ou changer carrement le html du bouton

# config/cinetpay.php

return [
  'button' => [
    # :label pour le label du bouton
    # :id pour l'id du bouton
    # :class pour les classes du bouton
      'html' => "<button class='btn btn-success' :id> <img  src='https://aswebagency.com/img/logo.png'></button>",
  ]
];

Security

If you discover any security related issues, please email instead of using the issue tracker.

Credits

This package is bootstrapped with the help of melihovv/laravel-package-generator.