PHPackages                             redsys/tpv - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. redsys/tpv

ActiveLibrary[API Development](/categories/api)

redsys/tpv
==========

Package to connect with Redsys/Sermepa/Servired TPV

v2.3.3(5y ago)63144.9k↓38.4%23[4 issues](https://github.com/eusonlito/redsys-TPV/issues)MITPHPPHP &gt;=5.3CI failing

Since Mar 24Pushed 3y ago8 watchersCompare

[ Source](https://github.com/eusonlito/redsys-TPV)[ Packagist](https://packagist.org/packages/redsys/tpv)[ RSS](/packages/redsys-tpv/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)Dependencies (2)Versions (22)Used By (0)

Redsys TPV
==========

[](#redsys-tpv)

Este script te permitirá generar los formularios para la integración de la pasarela de pago de Redsys (antes Sermepa / Servired).

Instalación
-----------

[](#instalación)

Añade las dependencias vía composer: `"redsys/tpv": "2.*"`

```
composer update
```

Ejemplo de pago instantáneo
---------------------------

[](#ejemplo-de-pago-instantáneo)

Este proceso se realiza para pagos en el momento, sin necesidad de confirmación futura (TransactionType = 0)

```
# Incluye tu arquivo de configuración (copia config.php para config.local.php)

$config = require (__DIR__.'/config.local.php');

# Cargamos la clase con los parámetros base

$TPV = new Redsys\Tpv\Tpv($config);

# Indicamos los campos para el pedido

$TPV->setFormHiddens(array(
    'TransactionType' => '0',
    'MerchantData' => 'Televisor de 50 pulgadas',
    'Order' => '012121323',
    'Amount' => '568,25',
    'UrlOK' => 'http://dominio.com/direccion-todo-correcto/',
    'UrlKO' => 'http://dominio.com/direccion-error',
    'MerchantURL' => 'http://dominio.com/direccion-control-pago'
));

# Imprimimos el pedido el formulario y redirigimos a la TPV

echo ''.$TPV->getFormHiddens().'';

die('document.forms[0].submit();');
```

Para realizar el control de los pagos, la TPV se comunicará con nosotros a través de la url indicada en **MerchantURL**.

Este script no será visible ni debe responder nada, simplemente verifica el pago.

El banco siempre se comunicará con nosotros a través de esta url, sea correcto o incorrecto.

Podemos realizar un script (Lo que en el ejemplo sería ) que valide los pagos de la siguiente manera:

```
# Incluye tu arquivo de configuración (copia config.php para config.local.php)

$config = require (__DIR__.'/config.local.php');

# Cargamos la clase con los parámetros base

$TPV = new Redsys\Tpv\Tpv($config);

# Realizamos la comprobación de la transacción

try {
    $datos = $TPV->checkTransaction($_POST);
    $success = true;
    $message = '';
} catch (Exception $e) {
    $datos = $TPV->getTransactionParameters($_POST);
    $success = false;
    $message = $e->getMessage();
}

# Actualización del registro en caso de pago (ejemplo usando mi framework)

$Db->update(array(
    'table' => 'tpv',
    'limit' => 1,
    'data' => array(
        'pagado' => $success,
        'mensaje' => $message,
        'operacion' => $datos['Ds_TransactionType'],
        'fecha_pago' => date('Y-m-d H:i:s'),
        'variables' => json_encode($datos),
        'post' => json_encode($_POST)
    ),
    'conditions' => array(
        'id' => $datos['Ds_Order']
    )
));

die();
```

Ejemplo de pago en diferido
---------------------------

[](#ejemplo-de-pago-en-diferido)

Este proceso se realiza para pagos mediante autorización inicial y posterior confirmación del pago sin que el cliente se encuentre presente (TransactionType = 1)

El proceso es exactamente igual que el anterior, sólamente se debe cambiar el valor de inicalización de `TransactionType` de `0` a `1`.

Una vez completado todo el proceso anterior, debemos crear dos scripts en nuestro proyecto, uno para iniciar la confirmación del pago y otro para verificar el proceso.

```
# Incluye tu arquivo de configuración (copia config.php para config.local.php)

$config = require (__DIR__.'/config.local.php');

# Cargamos la clase con los parámetros base

$TPV = new Redsys\Tpv\Tpv($config);

# Indicamos los campos para la confirmación del pago

$response = $TPV->sendXml(array(
    'TransactionType' => '2', // Código para la Confirmación del cargo
    'MerchantURL' => 'http://dominio.com/direccion-control-pago-xml', // A esta URL enviará el banco la confirmación del cobro
    'Amount' => '568,25', // La cantidad final a cobrar
    'Order' => '012121323', // El número de pedido, que debe existir en el sistema bancario a través de una autorización previa
    'MerchantData' => 'Televisor de 50 pulgadas',
));
```

Esta ejecución nos devolverá un XML con una respuesta sobre este envío, pero la respuesta sobre el resultado de la operación serán enviada desde el banco a la URL indicada en MerchantURL.

Para verificar que el envío se ha realizado correctamente, el banco devuelve un XML con un valor para la etiqueta de de `CODIGO` que devemos verificar para saber si el envío ha sido correcto.

Ahora vamos a por el script de `http://dominio.com/direccion-control-pago-xml` en que recogemos el resultado del pago:

```
# Incluye tu arquivo de configuración (copia config.php para config.local.php)

$config = require (__DIR__.'/config.local.php');

# Cargamos la clase con los parámetros base

$TPV = new Redsys\Tpv\Tpv($config);

# Realizamos la comprobación de la transacción

try {
    $datos = $TPV->checkTransactionXml($_POST);
} catch (Exception $e) {
    die(file_put_contents(__DIR__.'/logs/errores-tpv.log', $e->getMessage(), FILE_APPEND));
}

# Actualización del registro en caso de pago (ejemplo usando mi framework)

$Db->update(array(
    'table' => 'tpv',
    'limit' => 1,
    'data' => array(
        'pagado' => 1,
        'operacion' => $datos['Ds_TransactionType'],
        'fecha_pago' => date('Y-m-d H:i:s')
    ),
    'conditions' => array(
        'id' => $datos['Ds_Order']
    )
));

die();
```

---

Si deseas más información sobre parámetros u opciones, Google puede echarte una mano

###  Health Score

42

—

FairBetter than 90% of packages

Maintenance19

Infrequent updates — may be unmaintained

Popularity47

Moderate usage in the ecosystem

Community18

Small or concentrated contributor base

Maturity67

Established project with proven stability

 Bus Factor1

Top contributor holds 95.6% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~106 days

Recently: every ~190 days

Total

20

Last Release

2050d ago

Major Versions

v1.0.4 → v2.0.02015-12-02

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/644551?v=4)[Lito](/maintainers/eusonlito)[@eusonlito](https://github.com/eusonlito)

---

Top Contributors

[![eusonlito](https://avatars.githubusercontent.com/u/644551?v=4)](https://github.com/eusonlito "eusonlito (86 commits)")[![microstudi](https://avatars.githubusercontent.com/u/1401520?v=4)](https://github.com/microstudi "microstudi (3 commits)")[![paumoreno](https://avatars.githubusercontent.com/u/916288?v=4)](https://github.com/paumoreno "paumoreno (1 commits)")

---

Tags

phpredsyssermepatpvsermeparedsystpvservired

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/redsys-tpv/health.svg)

```
[![Health](https://phpackages.com/badges/redsys-tpv/health.svg)](https://phpackages.com/packages/redsys-tpv)
```

###  Alternatives

[twilio/sdk

A PHP wrapper for Twilio's API

1.6k92.9M272](/packages/twilio-sdk)[facebook/php-business-sdk

PHP SDK for Facebook Business

90821.9M34](/packages/facebook-php-business-sdk)[hubspot/api-client

Hubspot API client

23914.2M16](/packages/hubspot-api-client)[redsys/messages

Redsys/Sermepa/Servired TPV Messages lists

10212.9k7](/packages/redsys-messages)[sermepa/sermepa

Pasarela de pago Redsys, Sermepa

207395.1k7](/packages/sermepa-sermepa)[ssheduardo/redsys-laravel

Package redsys for laravel

100129.5k1](/packages/ssheduardo-redsys-laravel)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
