1. Go to this page and download the library: Download xoborg/laravel-redsys library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
xoborg / laravel-redsys example snippets
$solicitudPagoRedsys = new \Xoborg\LaravelRedsys\Models\SolicitudPagoRedsys();
$solicitudPagoRedsys->order = '0001';
$solicitudPagoRedsys->amount = 1000;
...
DS_MERCHANT_MERCHANTCODE=000000000
DS_MERCHANT_TERMINAL=0
etc.
...
...
$solicitudPagoRedsys = new \Xoborg\LaravelRedsys\Models\SolicitudPagoRedsys();
$solicitudPagoRedsys->order = '0002';
$solicitudPagoRedsys->amount = 2075;
$solicitudPagoRedsys->merchantUrl = route('notificacion-online');
$solicitudPagoRedsys->urlOk = route('pago-ok');
$solicitudPagoRedsys->urlKo = route('pago-ko');
$solicitudPagoRedsys->productDescription = 'Producto de ejemplo';
$solicitudPagoRedsys->titular = 'Nombre del cliente';
$solicitudPagoRedsys->merchantName = 'Empresa de ejemplo S.L.';
$pagoRedsys = $solicitudPagoRedsys->saveInDatabase();
// Guardariamos el id del pago en nuestra propia tabla de compras o similar.
return view('formulario-pago', compact('solicitudPagoRedsys'));
...
$notificacionOnlineRedsys = new \Xoborg\LaravelRedsys\Models\NotificacionOnlineRedsys();
$notificacionOnlineRedsys->setUp($request->input('Ds_MerchantParameters'));
if ($notificacionOnlineRedsys->firmaValida($request->input('Ds_Signature'))) {
$pagoRedsys = \Xoborg\LaravelRedsys\Models\PagoRedsys::where('Ds_Merchant_Order', $notificacionOnlineRedsys->order)->firstOrFail();
// También es muy recomendable comprobar que algunos de los datos recibidos son los mismos que los que tenemos guardados de la solicitud de pago, como por ejemplo el importe o la moneda (la orden la hemos utilizado para buscar el propio pago).
...
// Insertamos la notificación online en DB
$pagoRedsys->notificacionesOnlineRedsys()->save($notificacionOnlineRedsys);
// Ahora podríamos cambiar el estado de la compra en nuestra propia tabla, etc.
}
// La firma no es válida así que aquí no tendríamos que hacer nada más ya que no podemos fiarnos de la información que ha llegado
...
// IMPORTANTE: Aquí sólo debemos utilizar la información que nos llegue para mostrarle al usuario el estado de la operación, no debemos utilizar esta información para guardarla en DB ni fiarnos de ella ya que puede haberse modificado.
$notificacionOnlineRedsys = new \Xoborg\LaravelRedsys\Models\NotificacionOnlineRedsys();
$notificacionOnlineRedsys->setUp($request->input('Ds_MerchantParameters'));
if ($notificacionOnlineRedsys->firmaValida($request->input('Ds_Signature'))) {
$pagoRedsys = \Xoborg\LaravelRedsys\Models\PagoRedsys::where('Ds_Merchant_Order', $notificacionOnlineRedsys->order)->firstOrFail();
// También es muy recomendable comprobar que algunos de los datos recibidos son los mismos que los que tenemos guardados de la solicitud de pago, como por ejemplo el importe o la moneda (la orden la hemos utilizado para buscar el propio pago).
...
// Podemos utilizar el método "getResponse()" del modelo NotificacionOnlineRedsys para obtener un código de respuesta que se pueda enseñar al propio usuario
$codigoRespuesta = $notificacionOnlineRedsys->getResponse();
return view('pago-ok', compact('codigoRespuesta'));
}
// Aquí podemos reenviar al usuario a una pantalla de error ya que la información que nos ha llegado no es válida