Giter Club home page Giter Club logo

redsys-tpv's Introduction

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

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

composer update

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 '<form action="'.$TPV->getPath('/realizarPago').'" method="post">'.$TPV->getFormHiddens().'</form>';

die('<script>document.forms[0].submit();</script>');

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 http://dominio.com/direccion-control-pago) 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

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 https://www.google.es/search?q=manual+instalaci%C3%B3n+redsys+php+filetype%3Apdf

redsys-tpv's People

Contributors

eusonlito avatar microstudi avatar paumoreno avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

redsys-tpv's Issues

Mcrypt está deprecated en PHP 7.1

En la nueva versión de php 7.1 el módulo mcrypt pasará a estar deprecated en favor de openssl.

He probado a cambiar el código para hacer una pull request pero no he conseguido simular el mismo comportamiento. La funcion encrypt3DES me quedaba así:

private static function encrypt3DES($message, $key)
{
    $iv = implode(array_map('chr', array(0, 0, 0, 0, 0, 0, 0, 0)));
    return openssl_encrypt($message, 'des-ede3-cbc', $key, OPENSSL_RAW_DATA, $iv);
}

De esta forma la pasarela redsys da un error. A alguien se le ocurre que puede ser?

Un saludo.

Error signatura en pago diferido

Hola @eusonlito ,

Primero gracias por este gran paquete para Redsys.

Para mi funciona todo menos la signatura de vuelta en pago en diferido.

El pago inicial se ejecuta perfectamente:

$config = array(
        'Environment' => $url_tpv, // Puedes indicar test o real
        'MerchantCode' => $this->params->get('redsys_merchantcode'),
        'Key' => $claveModuloAdmin,
        'Terminal' => $this->params->get('redsys_terminal', 1),
        'TransactionType' => $args['transaction_type'],
        'Currency' => $this->params->get('redsys_currency', 978),
        'MerchantName' => $this->params->get('redsys_merchantname'),
        'Titular' => 'Mi Comercio',
        'ConsumerLanguage' => '001',
        'SignatureVersion' => 'HMAC_SHA256_V1'
);

Confirmación de pago:

# 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' => $args['transaction_type'], // Código para la Confirmación del cargo
        'MerchantURL' =>  $args['notify_url'], // 'http://dominio.com/direccion-control-pago-xml', // $args['notify_url'], // A esta URL enviará el banco la confirmación del cobro
        'Amount' => $args['amount'], // La cantidad final a cobrar
        'Order' => strval($args['order_id']), // El número de pedido, que debe existir en el sistema bancario a través de una autorización previa
        'MerchantData' => 'Televisor de 250 pulgadas'
));

Recepción de pago:

# 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));
}

Como digo el pago funciona pero en la recepción falla la signatura devolviendo el siguiente error:

Error: Signature not valid (FkJNj33vFPQXTcBDRTYAFgAhcPenJgdDCsFx5ZDcjbs= != JlpFNR7cr+geJz9Y0sn/2/tV/DN1kS++PxXumEBdq+o=)

No encuentro el motivo por que no coinciden las signaturas, te agradeceria si pudieras ayudarme a resolver el problema, muchas gracias.

¿Pueden hacerse cobros mensuales con la api de redsys?

Hola,

No se si debería escribir aquí, pero quería saber si redsys permite los cobros mensuales mediante el tpv. Y en segundo lugar me gustaría saber si con este módulo se podría gestionar.

Mil gracias por vuestro trabajo.

Problema con parámetros opcionales y faltantes

Buenas eusonlito!

Primero de todo gracias por tu aportación, me ha servido de mucha ayuda en mi proyecto.
Ahora bien, tengo dos propuestas/peticiones que hacerte (no son muy complicadas tranqui jeje):

La primera:
Has puesto el campo "Titular" como obligatorio cuando no lo es, y esto puede generar problemas en un futuro. Por ejemplo en mi App no sabemos está información porque no se la pedimos al usuario y en cambio me obliga a rellenarla con cualquier cosa. ¿Podrías cambiarlo al array de campos opcionales?

La segunda:
Faltan unos cuantos parámetros más en el formulario de envío al TPV que ahora mismo no se pueden pasar (como por ejemplo Ds_Merchant_Identifier, Ds_Merchant_DirectPayment, etc...), de los cuales al menos yo necesito algunos. ¿No podrías hacer que el construct de la clase TPV recogiese cualquier parámetro entrado en el array de opciones en lugar de solo quedarte con los definidos en dicha clase? Sería relativamente sencillo hacer esto y ampliaría mucho las posibilidades de este gran trabajo que has hecho.

Muchas gracias de antemano y espero tu respuesta.

Aitor.

SIS0042 Error en el cálculo de la firma

Hola Lito,

Hace 2-3 años que no utilizo tu libreria y antes me funcionaban los pagos recurrentes por referencia. Ahora tengo un error de firma cuando utilizo $TPV->sendXml($options);

Datos pago con petición de nueva referencia:

> Array
(
    [Environment] => real
    [MerchantCode] => XXXXXXXXXX
    [Key] => MiKey
    [Terminal] => 1
    [TransactionType] => 0
    [Currency] => 978
    [MerchantName] => XXXXXXXXXX
    [Titular] => Mi Comercio
    [ConsumerLanguage] => 001
    [SignatureVersion] => HMAC_SHA256_V1
)
Array
(
    [Ds_Merchant_Currency] => 978
    [Ds_Merchant_MerchantCode] => XXXXXXXXXX
    [Ds_Merchant_Terminal] => 1
    [Ds_Merchant_Titular] => Mi Comercio
    [Ds_Merchant_TransactionType] => 0
    [Ds_Merchant_MerchantName] => XXXXXXXXXX
    [Ds_Merchant_MerchantURL] => https://www.XXXXXXXXXX.net/index.php?option=com_jbevents&task=redsys.paymentNotify&orderid=58
    [Ds_Merchant_ConsumerLanguage] => 001
    [Ds_Merchant_UrlOK] => https://www.XXXXXXXXXX.net/index.php?option=com_jbevents&task=redsys.paymentSuccess
    [Ds_Merchant_UrlKO] => https://www.XXXXXXXXXX.net/index.php?option=com_jbevents&task=order.paymentCancel&orderid=58
    [Ds_Merchant_Identifier] => REQUIRED
    [Ds_Merchant_MerchantData] => Suscripción para locales
    [Ds_Merchant_Order] => XXXXXXXXXX
    [Ds_Merchant_Amount] => 500
)
  • Hasta aquí todo correcto y me devuelve el identificador para nuevos pagos recurrentes.

Datos pago con referencia diferido:

> Array
(
    [Environment] => real
    [MerchantCode] => XXXXXXXXXX
    [Key] => MiKey
    [Terminal] => 1
    [TransactionType] => A
    [Currency] => 978
    [MerchantName] => XXXXXXXXXX
    [Titular] => Mi Comercio
    [ConsumerLanguage] => 001
    [SignatureVersion] => HMAC_SHA256_V1
)
Array
(
    [Ds_Merchant_MerchantCode] => XXXXXXXXXX
    [Ds_Merchant_MerchantURL] => https://www.XXXXXXXXXX.net/index.php?option=com_jbevents&task=redsys.paymentRenewalNotify&orderid=54
    [Ds_Merchant_Currency] => 978
    [Ds_Merchant_Terminal] => 1
    [Ds_Merchant_Identifier] => XXXXXXXXXX
    [Ds_Merchant_DirectPayment] => 1
    [Ds_Merchant_TransactionType] => A
    [Ds_Merchant_Amount] => 500
    [Ds_Merchant_Order] => XXXXXXXXXX
    [Ds_Merchant_MerchantData] => XXXXXXXXXX
)

No se que a cambiado pero antes enviando estos datos me funcionaba perfectamente.
He probado modificando Ds_Merchant_TransactionType=1 pero nada.

$TPV->sendXml($options); me devuelve error SIS0042

Me cuesta entender como generas signatura y tal vez con estos datos me puedas decir donde esta el problema.

Muchas gracias crack!

Problema con parámetro Amount

Buenas de nuevo eusonlito!

Me he encontrado otro problema, este un poco más grave (pero también de fácil solución).

Dentro de los parámetros del formulario, no sé exactamente por qué, pero si por ejemplo le paso "Amount" = '70,10', al ir a la pasarela de pago me da un error SIS00019 (Que indica que el formato Amount no es correcto).

He visto que la función getAmount() de esta clase TPV es diferente que la que tienes en Ceca (de hecho es más enrebesada y no sé por qué). En cambio debería ser la misma, ya que para este campo los dos TPVs funcionan igual. De hecho, he probado a sustituir dicha función por la de Ceca y se soluciona el problema.

Si pudieses cambiar esto también te lo agradecería, ya que de momento así no puedo usar tu librería.

Muchas gracias de nuevo y disculpa las molestias!

Aitor.

Wrong parameters for Exception

Hola, estoy usando la librería y al procesar un pago con un número de tarjeta incorrecto me encuentro con este error:

Wrong parameters for Exception([string $message [, long $code [, Throwable $previous = NULL]]]) {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalThrowableError(code: 0): Wrong parameters for Exception([string $message [, long $code [, Throwable $previous = NULL]]]) at /homepages/.../vendor/redsys/tpv/src/Redsys/Tpv/Tpv.php:344)

[stacktrace]
#0 /homepages/.../vendor/redsys/tpv/src/Redsys/Tpv/Tpv.php(344): Exception->__construct(Array, 0)
#1 /homepages/.../vendor/redsys/tpv/src/Redsys/Tpv/Tpv.php(331): Redsys\\Tpv\\Tpv->checkTransactionError(Array, 'Ds_')

Parece que está pasando un array a la constructora de Exception y da un Error.
Estoy usando PHP 7.1

Los parámetros que recibe son estos:

array (
  'Ds_Date' => '30/08/2018',
  'Ds_Hour' => '11:55',
  'Ds_SecurePayment' => '0',
  'Ds_Card_Number' => '420000******0000',
  'Ds_Card_Country' => '0',
  'Ds_Amount' => '9900',
  'Ds_Currency' => '978',
  'Ds_Order' => '000000000130',
  'Ds_MerchantCode' => 'xxxxxxxxx,
  'Ds_Terminal' => '001',
  'Ds_Response' => '0180',
  'Ds_MerchantData' => '...',
  'Ds_TransactionType' => '0',
  'Ds_ConsumerLanguage' => '1',
  'Ds_ErrorCode' => 'SIS0093',
  'Ds_AuthorisationCode' => '      ',
)  

Muchas gracias!

Nueva versión API Redsys

Hola!

Redsys ha cambiado la API y la actual dejara de estar disponible el día 23/11/2015. Más info.

Yo tengo bastantes webs que usan tu librería y hoy he empezado a modificarla para adaptarla a la nueva API, ahora los servidores de prueba de Redsys no funcionan y no podré terminarlo.
Pero cuando lo tenga listo te haré un Pull Request para que puedas revisar el código.

Sólo quería comentarte esto y asegurarme que no estés haciendo lo mismo y haga esto para nada :P

Hasta pronto!

Duda acerca del control de la transacción

Hola,

estoy teniendo alguna dificultad a la hora de procesar la respuesta del tpv mediante notificación http.

En concreto, intento hacer lo siguiente

$TPV = new Redsys\Tpv\Tpv($config); try { $datos = $TPV->checkTransactionXml($_POST); $order = $datos['Ds_Order']; } catch (Exception $e) { die($e->getMessage()); }

Pero me encuentro que siempre encuentra un error y ejecuta el bloque catch.

¿Estoy leyendo mal los parámetros devueltos por el tpv?

En el entrono de pre-producción, el response de resys incluye los siguientes parámetros post:

Ds_SignatureVersion=HMAC_SHA256_V1&Ds_MerchantParameters=eyJEc19EYXRlIjoiMDglMkYwMiUyRjIwMTYiLCJEc19Ib3VyIjoiMjIlM0EyMSIsIkRzX1NlY3VyZVBheW1lbnQiOiIxIiwiRHNfQ2FyZF9Db3VudHJ5IjoiNzI0IiwiRHNfQW1vdW50IjoiNDUwMCIsIkRzX0N1cnJlbmN5IjoiOTc4IiwiRHNfT3JkZXIiOiIwMDAxWWY5MzAzNGEiLCJEc19NZXJjaGFudENvZGUiOiIzMzUyMzQ5NTEiLCJEc19UZXJtaW5hbCI6IjAwMSIsIkRzX1Jlc3BvbnNlIjoiMDAwMCIsIkRzX01lcmNoYW50RGF0YSI6IiIsIkRzX1RyYW5zYWN0aW9uVHlwZSI6IjAiLCJEc19Db25zdW1lckxhbmd1YWdlIjoiMSIsIkRzX0F1dGhvcmlzYXRpb25Db2RlIjoiMjk1ODk

No se pueden añadir campos opcionales

Hola,

He probado de añadir campos como PAN, EXPIRYDATE, CVV2 de dos formas y no funciona:

  • En el array de sendXML
  • Con la función setOption

¿Hay alguna manera de añadirlos?

Gracias

Error al no encontrar la clase 'Redsys\\Messages\\Messages'

Hola,
estoy haciendo algunas pruebas, y no sé si es por la versión de PHP, pero me aparece un error al procesar el marchanturl la petición post de redsys.
El error lo da al no encontrar la clase 'Redsys\Messages\Messages':
mod_fcgid: stderr: PHP Fatal error: Class 'Redsys\Messages\Messages' not found in /var/www/vhosts/prueba.com/httpdocs/tpv/src/Redsys/Tpv/Tpv.php on line 307
¿A alguien más le ha pasado?

Error al recibir respuesta en devoluciones

En la clase TPV, en la función checkTransactionResponse() en la línea 373 ¿es probable que falte castear la variable response en la última validación? El código response 900 es para autorizar devoluciones, recibimos como variable response un string "0900".

Campo merchantUrl opcional

¡Hola!
Estamos intentando implementar el TpvInsite, vamos avanzando poco a poco. Nos hemos dado cuenta de que en la clase Tpv tenemos el parámetro MerchantUrl como opcional pero al calcular la signatura es un parámetro obligatorio. En el TpvInsite no tenemos que introducir este parámetro.

Muchas gracias por el trabajo.
Saludos

Omnipay compatible?

Hola,
Una pregunta, tu modulo php es compatible con omnipay?
Muchas gracias.
Un saludo,
Jose

Imposibilidad de obtener parámetros de respuesta de Redsys si hay un error de transacción denegada

Si intento realizar un pago con los siguientes datos:

PAN: 1111111111111117
Caducidad: 12/20

Redsys devuelve un error de "Tarjeta ajena al servicio", lo que la función Tpv::checkTransaction lo traduce en una excepción TPV returned error code SIS0093: Tarjeta no encontrada en tabla de rangos. El problema es que de esta manera y con el nuevo sistema ya no podemos obtener el ID del pago con el que estamos trabajando ya que los parámetros se devuelven codificados y la función de descodificar Tpv::getTransacionParameters es privada.

El apaño sería copiar el contenido de Tpv::getTransactionParameters y usarlo desde fuera de la clase pero no me parece la solución apropiada…

Error con el paso a producción

Buenas tardes,

en primer lugar agradecerte el trabajo, la verdad es que es un gustazo utilizar el paquete.

Estaba realizando pruebas de integración con laravel 5.1 y redsys, y en el entorno de pruebas facilitado por el banco todo estupendo.

El problema viene cuando cambio a la URL en producción, donde recibo un código de error como este:

SIS0042 => “La firma enviada no es correcta”,

No entiendo bien porqué ya que estoy usando la key en sha256 facilitada por el banco.. ¿Estoy olvidando algo?

Campos requeridos y opcionales

Buenas eusonlito!

Estamos utilizando tu trabajo en nuestro proyecto y la verdad que va de lujo. Solo me estoy encontrando un pequeño problema que ya apareció alguna vez en el pasado. El tema es que los parámetros que tienes configurados como "requeridos" no se corresponden 100% con lo descrito aquí: https://pagosonline.redsys.es/parametros-entrada-salida.html.

Por ejemplo, los campos ConsumerLanguage y MerchantName los tienes puestos como requeridos cuando son opcionales y en nuestro caso concreto esto nos perjudica, porque a veces no sabemos esta info y nos obliga a poner cualquier cosa.

¿Podrías revisar y actualizar esta lista de parámetros?

¡Muchas gracias de antemano y de nuevo felicitaciones por tu trabajo!

Licencia

Buenas Eusonlito!

Más que un Issue es una duda.
¿Qué tipo de licencia tiene este proyecto? ¿y el Ceca-TPV?

Muchas gracias de antemano!

Problema con MerchanData o ProductDescription

Hola,

Si le envio al parametro 'setFormHiddens' el array con MerchanData o ProductDescription y una de ellas dos contiene un símbolo guardado, salta un error en redsys, como por ejemplo:
Concepto 50% de descuento.

El array con los datos sería este:
$array_input_hiddens = [
"Amount" => "1180.00",
"MerchantData" => "50 % payment Pardo 43",
"MerchantURL" => "https://www.betajm.joxanetworks.com/tpv/payment-controller.php?idp=40",
"Order" => "116913061166",
"ProductDescription" => "50 % payment Pardo 43",
"TransactionType" => "0",
"UrlKO" => "https://www.betajm.joxanetworks.com/tpv/payment.php?"id=40&status=ko&token=W6lBCw518RbdPICCPg/Tfh8u9uuD3g/39crK5rF8EH4=",
UrlOK" => "https://www.betajm.joxanetworks.com/tpv/payment.php?id=40&status=ok&token=W6lBCw518RbdPICCPg/Tfh8u9uuD3g/39crK5rF8EH4=",
]`

El fallo solo lo da si pongo el '%', y sale este error:
image

URL NOTIFICACION

Buenas y felicidades por tu trabajo.

La cuestión esque estoy usando symfony, y puedo verificar que los datos que llegan a mi url de notificación son correctos.
Lo que sucede esque al manipularlos no se indexan, y salta un error 500. Para solventarlo he intentado guardar los datos directamente desde Redsys y en el controlador directamente, pero salta el mismo error no indexa los 3 paremetros para calcular y validar la firma.

Para verificar los post he usado el logger que me devuelve esto:

[2021-08-11T12:21:31.195716+00:00] app.DEBUG: {"Ds_Date":"11/08/2021","Ds_Hour":"14:21","Ds_SecurePayment":"0","Ds_Amount":"500","Ds_Currency":"978","Ds_Order":"001628684488","Ds_MerchantCode":"337951214","Ds_Terminal":"001","Ds_Response":"9915","Ds_MerchantData":"Test","Ds_TransactionType":"0","Ds_ConsumerLanguage":"1","Ds_ErrorCode":"SIS9915","Ds_AuthorisationCode":" "}

No encuentro la manera de tratar esos datos para meterlos en una base de datos.

Gracias!

Warning: curl_setopt(): CURLOPT_FOLLOWLOCATION

Hola @eusonlito ,

Depende del servidor pero mejor te comento, tengo este error con un servidor compartido y tengo que modificar la línea 52 de Curl.php

Warning: curl_setopt(): CURLOPT_FOLLOWLOCATION cannot be activated when an
open_basedir is set in /var/www/vhosts/midominio.com/httpdocs/directorio/libraries/vendor/redsys/tpv/src/Redsys/Tpv/Curl.php on line 52

Línea 52: curl_setopt($this->connect, CURLOPT_FOLLOWLOCATION, true);

La modifico por esta:
if (ini_get('open_basedir') == '' && strtolower(ini_get('safe_mode')) == 'off') {
curl_setopt($this->connect, CURLOPT_FOLLOWLOCATION, true);
} else {
curl_setopt($this->connect, CURLOPT_FOLLOWLOCATION, false);
}

Este error es común y creo que es la solución para algunos, si puedes añadir en nuevas actualizaciones, gracias

Exception Handling

Hello,

I'm having an issue when I try to get an error status code. When the user rejects the payment is redirected to the KO URL but in Symfony 3.4 is generating a Symfony exception.

Response code is Transaction Denied 9915: PAGO CANCELADO

The checkTransactionResponse($data, $prefix) function is throwing an exception when I use checkTransaction() for getting the status of transaction, due this I can't handle my own exceptions.

I'm using the example code, but It does not reach the exception catch, this is my code :

        $TPV = new Tpv($config);
        try {
            $data = $TPV->checkTransaction($_GET);
            $success = true;
            $message = '';
        } catch (Exception $e) {
            $data = $TPV->getTransactionParameters($_GET);
            $success = false;
            $message = $e->getMessage();
        }

Is there any way to get the Exception response code on the catch? or I'm using an incorrect method?

Thanks.

RESPUESTA ANTES DE DARLE AL BOTON CONTINUAR ??

Hola, cuando sale el formulario de redsys, se introduce la tarjeta y luego se le da a pagar, procesa el pago, luego se le tiene que dar continuar para que redsys devuelva la respuesta a la URL OK o KO, el problema que veo es que necesito la respuesta antes que se le de a continuar, eso ocurre porque muchos no le dan a continuar, muchos usuarios al ver la notificacion en verde ya lo dan como pagado, pero mi aplicacion no se entera de la respuesta, si se logra ver si fue OK o KO por canales, pero la idea es que el app reciba la informacion porque es un sistema de reservas. Lo estoy desarrollando en Laravel 9.

¿Es posible?, lo otro que estuve leyendo fue usar el API REST, pero me surge una duda, como gestiona los pagos que requieren la autorizacion del banco, como sms o gestionarla via app (del banco), porque via pasarale redsys como lo tengo ahorita, si sale el html del banco.

De verdad estoy que me vuelvo loco, no encuentro informacion al respecto.

Gracias de antemano por la ayuda.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.