ceca-laravel maintained by azulae
Ceca Laravel
Laravel 6/7/8 package to support payments and cancellations through the CECA online tpv.
Install
Via Composer
$ composer require azulae/ceca-laravel
Usage
Ahora debemos cargar nuestro Services Provider dentro del array 'providers' (config/app.php)
Si usas Laravel 5.5 o superior, no necesitas cargar el services provider
Azulae\Ceca\CecaServiceProvider::class
Creamos un alias dentro del array 'aliases' (config/app.php)
Si usas Laravel 5.5 o superior no necesitas crear el alias
'Ceca' => Azulae\Ceca\Facades\Ceca::class,
Y finalmente publicamos nuestro archivo de configuración
php artisan vendor:publish --provider="Azulae\Ceca\CecaServiceProvider"
Esto nos creará un archivo llamado ceca.php dentro de config, en este archivo debemos configurar nuestra key, url ok y ko.
Uso
Lanzar la petición de pago:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Azulae\Ceca\Facades\Ceca;
class CecaController extends Controller
{
//
public function index()
{
try{
if(config('ceca.modo') == "desarrollo")
{
$CecaNumeroTerminal = config('ceca.terminal_desarrollo');
$CecaClaveEncriptacion = config('ceca.clave_encriptacion_desarrollo');
}
else
{
$CecaNumeroTerminal = config('ceca.terminal');
$CecaClaveEncriptacion = config('ceca.clave_encriptacion');
}
Ceca::setMerchantID(config('ceca.codigo_comercio'));
Ceca::setEntorno(config('ceca.modo'));
Ceca::setClaveEncriptacion($CecaClaveEncriptacion);
Ceca::setTerminalID($CecaNumeroTerminal)
Ceca::setAcquirerBIN(config('ceca.acquirer_bin'));
Ceca::setUrlOk(config('ceca.url_ok'));
Ceca::setUrlNok(config('ceca.url_ko'));
Ceca::setNumOperacion($saleId);
Ceca::setImporte(number_format($total,2));
Ceca::launchRedirection();
}
catch(Exception $e){
echo $e->getMessage();
}
}
}
Comprobar la respuesta del servicio:
<?php
$input = $request->all();
if(config('ceca.modo') == "desarrollo")
{
$CecaNumeroTerminal = config('ceca.terminal_desarrollo');
$CecaClaveEncriptacion = config('ceca.clave_encriptacion_desarrollo');
}
else
{
$CecaNumeroTerminal = config('ceca.terminal');
$CecaClaveEncriptacion = config('ceca.clave_encriptacion');
}
// Firma = sha256( Clave_encriptacion+MerchantID+AcquirerBIN+TerminalID+Num_operacion+Importe+TipoMoneda+Exponente+Referencia )
$preFirma = $CecaClaveEncriptacion.config('ceca.codigo_comercio').config('ceca.acquirer_bin').$CecaNumeroTerminal.
$input["Num_operacion"].$input["Importe"].$input["TipoMoneda"].$input["Exponente"].$input["Referencia"];
$firma = hash('sha256', $preFirma);
$respuestaFirma = $input["Firma"];
// Si la firma calculada coincide con la recibida se procede a finalizar el pedido
if($respuestaFirma == $firma)
{
// Pago correcto
.
.
.
}
?>
Change log
Please see CHANGELOG for more information what has changed recently.
Security
If you discover any security related issues, please email :author_email instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.