Imprimir

Configurar pasarela redsys en laravel

Lo que nos da el banco:

  • NÚMERO DE COMERCIO
  • CLAVE SHA265
  • TERMINAL

Ajustes necesarios en el modulo de administracion del banco:

En Config/Redsys.php:

<?php

return [
‘key’ => env(‘REDSYS_KEY’, ‘Up0ashO6Li/iv/KfxMdkuVbbWhwJF4bT’),
‘url_notification’ => env(‘REDSYS_URL_NOTIFICATION’, »),
‘url_ok’ => env(‘REDSYS_URL_OK’, ‘https://mihabita.com/booking/confirm/redsys’),
‘url_ko’ => env(‘REDSYS_URL_KO’, ‘https://mihabita.com/booking/cancel/redsys’),
‘merchantcode’ => env(‘REDSYS_MERCHANT_CODE’, ‘354552630’),
‘terminal’ => env(‘REDSYS_TERMINAL’, ‘1’),
‘currency’ => env(‘REDSYS_CURRENCY’, ‘978’),
‘environment’ => env(‘REDSYS_ENVIRONMENT’, ‘live’),
‘tradename’ => env(‘REDSYS_TRADENAME’, ‘MiHabita’),
‘titular’ => env(‘REDSYS_TITULAR’, ‘BRANIANTE SLU’),
‘description’ => env(‘REDSYS_DESCRIPTION’, ‘Reserva de habitaciones para estudiantes’)
];

En modules/booking/redsyscontroller:

<?php

namespace Modules\Booking\Controllers;

use Illuminate\Http\Request;
use IlluminateHttpRequest;
use AppHttpRequests; // para recibir la notificación via request
use SsheduardoRedsysFacadesRedsys; //el controlador de redsys
use App\Http\Requests;
use Modules\Booking\Models\Booking;
//use App\Http\Controllers\Controller;
use Ssheduardo\Redsys\Facades\Redsys;
use Modules\Hotel\Models\Hotel;
use Modules\Hotel\Models\HotelRoomBooking;
USE Modules\Hotel\Models\HotelRoom;

class RedsysController extends \App\Http\Controllers\Controller
{
public function create(Request $request){
$booking_id = $request->session()->get(‘booking_id’);
$booking = Booking::find($booking_id);
$hotel = $booking->hotel;
$roomsBookings = HotelRoomBooking::select(«room_id»)->where(«booking_id», $booking->id)->get();

$room_ids = $roomsBookings->pluck(‘room_id’)->toArray();
$rooms_data = HotelRoom::whereIn(‘id’, $room_ids)->with([‘schedules’, ‘contracts.contract’])->get();

$precioTotalReserva = 0;
foreach ($rooms_data as $room) {
foreach ($room->schedules as $schedule) {
$precioTotalReserva += $room->price + $schedule->gestion;
}
}

Redsys::setAmount($booking->total);
Redsys::setOrder(time());
Redsys::setMerchantcode(config(‘redsys.merchantcode’));
Redsys::setCurrency(config(‘redsys.currency’));
Redsys::setTransactiontype(‘0’);
Redsys::setTerminal(config(‘redsys.terminal’));
Redsys::setMethod(‘T’);
Redsys::setNotification(config(‘redsys.url_notification’));
Redsys::setUrlOk(config(‘redsys.url_ok’));
Redsys::setUrlKo(config(‘redsys.url_ko’));
Redsys::setVersion(‘HMAC_SHA256_V1’);
Redsys::setTradeName(config(‘redsys.tradename’));
Redsys::setTitular(config(‘redsys.titular’));
Redsys::setProductDescription($hotel->title);
Redsys::setEnvironment(config(‘redsys.environment’));

$signature = Redsys::generateMerchantSignature(config(‘redsys.key’));
Redsys::setMerchantSignature($signature);

$form = Redsys::createForm();
return view(‘Booking::frontend.booking.demo_redsys’, compact(‘form’));
}

}

En modules/booking/redsysgateway
 
    public function create(Request $request, $booking, $service){
        $key = config(‘redsys.key’);
   
        Redsys::setAmount(rand(10,600));
        Redsys::setOrder(time());
        Redsys::setMerchantcode(config(‘redsys.merchantcode’));
        Redsys::setCurrency(config(‘redsys.currency’));
        Redsys::setTransactiontype(‘0’);
        Redsys::setTerminal(config(‘redsys.terminal’));
        Redsys::setMethod(‘T’);
        Redsys::setNotification(config(‘redsys.url_notification’));
        Redsys::setUrlOk(config(‘redsys.url_ok’));
        Redsys::setUrlKo(config(‘redsys.url_ko’));
        Redsys::setVersion(‘HMAC_SHA256_V1’);
        Redsys::setTradeName(config(‘redsys.tradename’));
        Redsys::setTitular(config(‘redsys.titular’));
        Redsys::setProductDescription(config(‘redsys.description’));
        Redsys::setEnvironment(config(‘redsys.environment’));
   
        $signature = Redsys::generateMerchantSignature($key);
        Redsys::setMerchantSignature($signature);
   
        $form = Redsys::createForm();
        return view(‘demo_redsys’, compact(‘form’));
    }
  
    public function getGateway()
    {

 

       
        $key = config(‘redsys.key’);

 

        Redsys::setAmount(rand(10,600));
        Redsys::setOrder(time());
        Redsys::setMerchantcode(config(‘redsys.merchantcode’));
        Redsys::setCurrency(config(‘redsys.currency’));
        Redsys::setTransactiontype(‘0’);
        Redsys::setTerminal(config(‘redsys.terminal’));
        Redsys::setMethod(‘T’);
        Redsys::setNotification(config(‘redsys.url_notification’));
        Redsys::setUrlOk(config(‘redsys.url_ok’));
        Redsys::setUrlKo(config(‘redsys.url_ko’));
        Redsys::setVersion(‘HMAC_SHA256_V1’);
        Redsys::setTradeName(config(‘redsys.tradename’));
        Redsys::setTitular(config(‘redsys.titular’));
        Redsys::setProductDescription(config(‘redsys.description’));
        Redsys::setEnvironment(config(‘redsys.environment’));
   
        $signature = Redsys::generateMerchantSignature($key);
        Redsys::setMerchantSignature($signature);

 

        $this->gateway = Redsys::createForm();
        //return $form;
    }