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
)
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