guysolamour / laravel-cinetpay
A laravel wrapper for cinetpay
Installs: 5 275
Dependents: 0
Suggesters: 0
Security: 0
Stars: 4
Watchers: 2
Forks: 0
Open Issues: 0
Requires
- php: ^7.3|^8.0
- cinetpay/cinetpay-php: ^1.9
- illuminate/support: ^8.0|^9.0|^10.0
Requires (Dev)
- orchestra/testbench: ^4.0|^5.0|^6.0
- phpunit/phpunit: ^8.4|^9.0
This package is auto-updated.
Last update: 2024-12-13 21:35:37 UTC
README
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.