guysolamour/laravel-cinetpay 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

guysolamour/laravel-cinetpay

Composer 安装命令:

composer require guysolamour/laravel-cinetpay

包简介

A laravel wrapper for cinetpay

README 文档

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.

guysolamour/laravel-cinetpay 适用场景与选型建议

guysolamour/laravel-cinetpay 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 21.35k 次下载、GitHub Stars 达 4, 最近一次更新时间为 2021 年 11 月 30 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「payment」 「laravel」 「cinetpay」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 guysolamour/laravel-cinetpay 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 guysolamour/laravel-cinetpay 我们能提供哪些服务?
定制开发 / 二次开发

基于 guysolamour/laravel-cinetpay 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 21.35k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 4
  • 点击次数: 14
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 4
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2021-11-30