guysolamour / laravel-cinetpay
laravel 的 cinetpay 封装
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-09-13 20:45:48 UTC
README
本包是用于执行在线支付的封装。您可以访问他们的网站了解更多他们的不同服务。
安装
通过 composer 安装
composer require guysolamour/laravel-cinetpay
先决条件
- PHP >= 8
- Laravel >= 8
发布包资源
php artisan vendor:publish --provider="Guysolamour\Cinetpay\ServiceProvider"
用法
步骤 1
在 .env 文件中添加 api 密钥
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"
步骤 2:创建重定向路由
您需要将负责管理这些路由的控制器放在配置文件 config/cinetpay.php 中
'controller' => \App\Http\Controllers\PaymentController::class,
控制器示例
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(); } }
您可以从 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')
或使用此方法,依然从 web.php 文件中
/* * Cette fonction enregistra les routes pour vous */ \Guysolamour\Cinetpay\Facades\Utils::routes();
步骤 3
在页面上显示支付按钮。
从控制器中,创建一个 \Guysolamour\Cinetpay\Cinetpay 类的实例,并通过类中存在的不同方法进行自定义。
当 init 函数被调用时,它会从 .env 文件中获取 api 密钥和重定向路由,并使用这些值为您构建类的实例。
$cinetpay = \Guysolamour\Cinetpay\Cinetpay::init();
添加交易标识符,该值需要存储在您的应用程序中,以便识别和验证每次支付的状态。此值是必需的,并且有多种生成方式
$cinetpay = \Guysolamour\Cinetpay\Cinetpay::init() ->setTransactionId($transactionId) // must be unique ;
类中存在一个静态方法,用于生成交易标识符。
$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 ;
添加买家标识符,以将买家与支付进行关联。标识符必须对每个买家都是唯一的。
$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 ;
这部分不是必需的,但您可以添加用于预先填写支付表单的号码。
$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') ;
添加要购买产品的描述或名称
$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') ;
添加交易总金额,这是将向客户收费的金额。
$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') ;
最后,将变量传递给将负责显示支付按钮的视图。
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') ;
步骤 4:按钮自定义
在文件中
{!! $cinetpay !!}
更改按钮标签
{!! $cinetpay->show('buy quickly with mobile money') !!}
更改按钮外观(CSS),需要移除默认样式
# config/cinetpay.php return [ 'button' => [ 'use_default_style' => false, ] ];
向按钮添加 CSS 类
# config/cinetpay.php return [ 'button' => [ 'class' => 'btn btn-primary ben-block', ] ];
给按钮添加一个标识符
# config/cinetpay.php return [ 'button' => [ 'id' => 'paybutton', ] ];
直接添加内联 CSS
# config/cinetpay.php return [ 'button' => [ 'style' => 'color: white; font-weight: bold', ] ];
向按钮添加 HTML 属性
# config/cinetpay.php return [ 'button' => [ 'attributes' => [ 'data-button' => 'pay' ], ] ];
或完全更改按钮的 HTML
# 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>", ] ];
安全性
如果您发现任何与安全相关的问题,请通过电子邮件而不是使用问题跟踪器来报告。
致谢
本包是通过 melihovv/laravel-package-generator 的帮助进行初始化的。