drauta/redsys-tpv
连接到Redsys/Sermepa/Servired TPV的包
Requires
- php: >=5.3
- redsys/messages: 1.*
This package is not auto-updated.
Last update: 2024-09-14 17:42:47 UTC
README
此脚本允许您生成与Redsys(之前为Sermepa / Servired)支付网关的集成表单。
安装
使用Composer添加依赖项:"redsys/tpv": "1.*"
composer update
即时支付示例
此过程用于即时支付,无需未来确认(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 '<form action="'.$TPV->getPath('/realizarPago').'" method="post">'.$TPV->getFormHiddens().'</form>'; die('<script>document.forms[0].submit();</script>');
为了进行支付控制,TPV将通过在MerchantURL中指定的URL与我们通信。
此脚本不可见,也不应做出任何响应,只需验证支付。
银行始终将通过此URL与我们通信,无论正确与否。
我们可以编写一个脚本(例如http://dominio.com/direccion-control-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 { $TPV->checkTransaction($_POST); } catch (\Exception $e) { file_put_contents(__DIR__.'/logs/errores-tpv.log', $e->getMessage(), FILE_APPEND); die(); } # Actualización del registro en caso de pago (ejemplo usando mi framework) $Db->update(array( 'table' => 'tpv', 'limit' => 1, 'data' => array( 'operacion' => $_POST['Ds_TransactionType'], 'fecha_pago' => date('Y-m-d H:i:s') ), 'conditions' => array( 'id' => $_POST['Ds_Order'] ) )); die();
延迟支付示例
此过程用于通过初步授权和后续确认进行的支付,而无需客户在场(TransactionType = 1)
过程与前面完全相同,只需将TransactionType的初始值从0更改为1。
完成所有上述过程后,我们应在项目中创建两个脚本,一个用于启动支付确认,另一个用于验证过程。
# 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 $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', ));
此执行将返回一个包含对此发送的响应的XML,但操作结果的响应将来自银行并发送到MerchantURL指定的URL。
为了验证发送是否正确,银行返回一个包含用于CODIGO标签的XML值,我们需要检查以确定发送是否正确。
现在我们来编写http://dominio.com/direccion-control-pago-xml脚本,它将收集支付结果
# 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); # Obtenemos los datos remitidos por el banco en formato `array` $datos = $TPV->xmlString2array($_POST['datos']); # Realizamos la comprobación de la transacción try { $TPV->checkTransaction($datos); } catch (\Exception $e) { file_put_contents(__DIR__.'/logs/errores-tpv.log', $e->getMessage(), FILE_APPEND); die(); } # 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();
与Redsys/Fake的集成
如果您想使用Redsys的私有服务器进行测试,可以在您的服务器上安装以下服务:https://github.com/eusonlito/redsys-Fake
连接到此服务的配置如下
$TPV = new Redsys\Tpv\Tpv(array( 'environments' => array( 'local' => 'http://redsys-fake.mydomain.com' ), 'Environment' => 'local', 'Key' => 'asdfghjkd0123456789', // Debe coincidir con el valor de Key del entorno de pruebas .... ));
有关参数和选项的更多信息,Google可能会提供帮助 https://www.google.es/search?q=manual+instalaci%C3%B3n+redsys+php+filetype%3Apdf