PHP code example of sermepa / sermepa

1. Go to this page and download the library: Download sermepa/sermepa 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/ */

    

sermepa / sermepa example snippets


//Si usas composer
//ase
//
    $key = 'sq7HjrUOBfKmC576ILgskD5srU870gJ7';

    $redsys = new Sermepa\Tpv\Tpv();
    $redsys->setAmount(rand(10,600));
    $redsys->setOrder(time());
    $redsys->setMerchantcode('999008881'); //Reemplazar por el código que proporciona el banco
    $redsys->setCurrency('978');
    $redsys->setTransactiontype('0');
    $redsys->setTerminal('1');
    $redsys->setMethod('C'); //Solo pago con tarjeta, no mostramos iupay
    $redsys->setNotification('http://localhost/noti.php'); //Url de notificacion
    $redsys->setUrlOk('http://localhost/ok.php'); //Url OK
    $redsys->setUrlKo('http://localhost/ko.php'); //Url KO
    $redsys->setVersion('HMAC_SHA256_V1');
    $redsys->setTradeName('Tienda S.L');
    $redsys->setTitular('Pedro Risco');
    $redsys->setProductDescription('Compras varias');
    $redsys->setEnvironment('test'); //Entorno test

    $signature = $redsys->generateMerchantSignature($key);
    $redsys->setMerchantSignature($signature);

    $form = $redsys->createForm();
} catch (\Sermepa\Tpv\TpvException $e) {
    echo $e->getMessage();
}
echo $form;

try{
    $key = 'sq7HjrUOBfKmC576ILgskD5srU870gJ7';

    $redsys = new Sermepa\Tpv\Tpv();
    $redsys->setAmount(rand(10,600));
    $redsys->setOrder(time());
    $redsys->setMerchantcode('999008881'); //Reemplazar por el código que proporciona el banco
    $redsys->setCurrency('978');
    $redsys->setTransactiontype('0');
    $redsys->setTerminal('1');
    $redsys->setMethod('C'); //Solo pago con tarjeta, no mostramos iupay
    $redsys->setNotification('http://localhost/noti.php'); //Url de notificacion
    $redsys->setUrlOk('http://localhost/ok.php'); //Url OK
    $redsys->setUrlKo('http://localhost/ko.php'); //Url KO
    $redsys->setVersion('HMAC_SHA256_V1');
    $redsys->setTradeName('Tienda S.L');
    $redsys->setTitular('Pedro Risco');

    $redsys->setPan('4548812049400004'); //Número de la tarjeta
    $redsys->setExpiryDate('2012'); //AAMM (año y mes)
    $redsys->setCVV2('123'); //CVV2 de la tarjeta

    $redsys->setEnvironment('test'); //Entorno test

    $signature = $redsys->generateMerchantSignature($key);
    $redsys->setMerchantSignature($signature);

    $form = $redsys->createForm();
} catch (\Sermepa\Tpv\TpvException $e) {
    echo $e->getMessage();
}
echo $form;

//Para una nueva referencia agregar este método al ejemplo anterior
$redsys->setIdentifier();

//En la url de notificación nos devolverá algo como esto
Array
(
    [Ds_Date] => 17%2F02%2F2022
    [Ds_Hour] => 23%3A25
    [Ds_SecurePayment] => 1
    [Ds_Card_Number] => 491801******4602
    [Ds_ExpiryDate] => 3212
    [Ds_Merchant_Identifier] => 2214a9c5ac0bd6e0fg476e6b3468ac4fa38a592c
    [Ds_Card_Country] => 724
    [Ds_Amount] => 0
    [Ds_Currency] => 978
    [Ds_Order] => 1645136683
    [Ds_MerchantCode] => 999008881
    [Ds_Terminal] => 001
    [Ds_Response] => 0000
    [Ds_MerchantData] =>
    [Ds_TransactionType] => 0
    [Ds_ConsumerLanguage] => 1
    [Ds_AuthorisationCode] => 005090
    [Ds_Card_Brand] => 1
    [Ds_Merchant_Cof_Txnid] => 2202172334011
    [Ds_ProcessedPayMethod] => 1
    [Ds_Control_1645136701458] => 1645136701458
)


$redsys->setIdentifier(2214a9c5ac0bd6e0fg476e6b3468ac4fa38a592c);

//En la url de notificación nos devolverá algo como esto
Array
(
    [Ds_Date] => 17%2F02%2F2022
    [Ds_Hour] => 23%3A28
    [Ds_SecurePayment] => 1
    [Ds_Card_Number] => 491801******4602
    [Ds_Merchant_Identifier] => 2214a9c5ac0bd6e0fg476e6b3468ac4fa38a592c
    [Ds_Card_Country] => 724
    [Ds_Amount] => 12000
    [Ds_Currency] => 978
    [Ds_Order] => 1645136909
    [Ds_MerchantCode] => 999008881
    [Ds_Terminal] => 001
    [Ds_Response] => 0000
    [Ds_MerchantData] =>
    [Ds_TransactionType] => 0
    [Ds_ConsumerLanguage] => 1
    [Ds_AuthorisationCode] => 078737
    [Ds_Card_Brand] => 1
    [Ds_Merchant_Cof_Txnid] => 2202172334011
    [Ds_ProcessedPayMethod] => 1
    [Ds_Control_1645136925978] => 1645136925978
)

$redsys->setMerchantDirectPayment(true);

try{
    //Key de ejemplo
    $key = 'sq7HjrUOBfKmC576ILgskD5srU870gJ7';

    $redsys = new Sermepa\Tpv\Tpv();
    $redsys->setAmount(rand(20,80));
    $redsys->setOrder(time());
    $redsys->setMerchantcode('999008881'); //Reemplazar por el código que proporciona el banco

    $redsys->setCurrency('978');
    $redsys->setTransactiontype('0');
    $redsys->setTerminal('1');
    $redsys->setIdentifier('2214a9c5ac0bd6e0fg476e6b3468ac4fa38a592c');
    $redsys->setVersion('HMAC_SHA256_V1');
    $redsys->setEnvironment('restTest'); //Rest entorno test
    $redsys->setMerchantCofIni('N');
    $redsys->setMerchantDirectPayment(true);

    $redsys->setMerchantCofTxnid(2202172334011);

    $signature = $redsys->generateMerchantSignature($key);
    $redsys->setMerchantSignature($signature);

    $response = json_decode($redsys->send(), true);

    $parameters = $redsys->getMerchantParameters($response['Ds_MerchantParameters']);
    $DsResponse = $parameters["Ds_Response"];
    $DsResponse += 0;
    if ($redsys->check($key, $response) && $DsResponse <= 99) {
        //Si es todo correcto ya podemos hacer lo que necesitamos, para este ejemplo solo mostramos los datos.
        print_r($parameters);
    } else {
        //acciones a realizar si ha sido erroneo
    }

} catch (\Sermepa\Tpv\TpvException $e) {
    echo $e->getMessage();
}


$redsys->executeRedirection();

try{
    $redsys = new Sermepa\Tpv\Tpv();
    $key = 'sq7HjrUOBfKmC576ILgskD5srU870gJ7';

    $parameters = $redsys->getMerchantParameters($_POST["Ds_MerchantParameters"]);
    $DsResponse = $parameters["Ds_Response"];
    $DsResponse += 0;
    if ($redsys->check($key, $_POST) && $DsResponse <= 99) {
        //acciones a realizar si es correcto, por ejemplo validar una reserva, mandar un mail de OK, guardar en bbdd o contactar con mensajería para preparar un pedido
    } else {
        //acciones a realizar si ha sido erroneo
    }
} catch (\Sermepa\Tpv\TpvException $e) {
    echo $e->getMessage();
}

Los entornos que tenemos son:
 - test
 - live
 - restLive
 - restTest

$parameters = ['DS_MERCHANT_CHARGEEXPIRYDATE' => '2020', 'DS_MERCHANT_COF_INI' => 'S'];
$redsys->setParameters($parameters);

$redsys->setNameForm('nombre_formulario');
$redsys->setIdForm('id_formulario');

//Esto mostraría la pasarela de pago en inglés
$redsys->setLanguage('002');

$redsys->setAttributesSubmit('btn_submit', 'btn_id', 'Enviar', 'font-size:14px; color:#ff00c1');

$redsys->createForm();

$redsys->getParameters();

$redsys->getMerchantParameters($_POST["Ds_MerchantParameters"]);

$redsys->getVersion()

$redsys->getMerchantSignature()