ssheduardo / sermepa

Clase para utilizar la pasarela de pagos redsys, sermepa.
MIT License
191 stars 59 forks source link

Request failure [HttpCode: '0'] #89

Closed scramatte closed 1 year ago

scramatte commented 1 year ago

Hola,

Cuando intento hacer un pago por referencia directo , tengo este mensaje tanto en test como restTest Request failure [HttpCode: '0']

¿Que puede ser?

Un saludo

scramatte commented 1 year ago

Parece ser que un error que devuelve Curl. No que pretendo hacer es un pago por referencia directo sin formulario. Con Rest o sin.

ssheduardo commented 1 year ago

Para los pagos por referencia lo primero es pasar por el formulario luego de eso, ya se puede hacer la llamada por Rest, tendría que probarlo. Lo que no se si es sin tener un FUC válido me active esa opción, lamentablemente REDSYS no APOYA este tipo de desarrollos sin antes pasar POR CAJA.

scramatte commented 1 year ago

Hola,

El primer formulario me funciona y puedo recoger el identificador. Si luego utilizo el mismo código añadiendo el valor del identificador, llego a la página de Redsys y solamente tengo que validar el pago, no me pide el nº de tarjeta.

Lo que no me funciona es el pago directo para poder hacer una suscripción automática mensual. Tengo FUC válido e activo en producción. He probado, y me da el mismo error

Dime si necesita probar algo y lo hago. ¿Podría ser que falte que Redsys active algo para eso?

Gracias Un saludo

scramatte commented 1 year ago

Eso lo que me constetarón de RedSys hace tiempo y se lo pedi a mi Banco, pero no estoy muy seguro que este activo. Mañana lo reclamo. Al parecer hay que tener activado la operativa MIT

PAGO POR REFERENCIA El titular de la tarjeta introduce los datos de la tarjeta en el 1r pago. Redsys devuelve al comercio una referencia o token asociado a esa tarjeta para que el titular pueda realizar pagos posteriores sin necesidad de volver a introducir los datos de la tarjeta (pago 1 click) o para realizar cobros periódicos (como pago de suscripciones o importes fraccionados).

Esto significa que el comercio NO tiene los datos de la tarjeta y por lo tanto la oficina PCI no interviene, con la salvedad de que en casos puntuales el comercio solicite el acceso a datos de tarjeta, o bien si realiza la conexión por Webservice. Sería necesario activar una exención SCA para transacciones MIT. Se consideran transacciones MIT las que el comercio envía cuando el cliente está fuera de sesión, por ejemplo, las suscripciones mensuales de Netflix, gastos de hotel no liquidados en el check-out (mini bar..), siempre que cumplan los siguientes requisitos:

Tiene que existir un acuerdo entre comercio y comprador, para realizar pagos posteriores con la tarjeta. Este acuerdo acostumbra a instrumentarse mediante contrato físico, o en comercio electrónico mediante la firma de los T&C. Tiene que haber un mandato del comprador para realizar los pagos: Autorización expresa del comprador a utilizar una tarjeta para los pagos posteriores. En comercio electrónico, se considera que en la primera transacción donde el comprador autoriza a pagos posteriores con una tarjeta debe autenticarse. La autenticación se considera como el mandato. No interacción del comprador al lanzar la operación. Para considerarse transacciones MIT, el comprador debe estar fuera de sesión. Para activar esta operativo, por favor, diríjanse a su oficina de ****.

scramatte commented 1 year ago

Me han dicho que falta parámetros en la petición para el MIT y me han mandado lo siguiente También tengo una guía, pero no la puedo mandar por aquí.

Por lo visto en la 1ra petición hace faltaDS_MERCHANT_COF_TYPE = R y en la 2da DS_MERCHANT_EXCEP_SCA = MIT

Primera petición:

{
"DS_MERCHANT_MERCHANTCODE": "xxxx", 
"DS_MERCHANT_TRANSACTIONTYPE": "0",
"DS_MERCHANT_COF_INI": "S", 
"DS_MERCHANT_COF_TYPE": "R", 
"DS_MERCHANT_ORDER": "9722vBXOv5O",
"DS_MERCHANT_TERMINAL": "1", 
"DS_MERCHANT_CURRENCY": "978", 
"DS_MERCHANT_IDENTIFIER": "REQUIRED", 
"DS_MERCHANT_AMOUNT": "0", 
"DS_MERCHANT_MERCHANTURL":"http://www.prueba.com/urlNotificacion.php",
"DS_MERCHANT_URLOK":"http://www.prueba.com/urlOK.php",
"DS_MERCHANT_URLKO":"http://www.prueba.com/urlKO.php"
}

Segunda petición


{
"DS_MERCHANT_IDENTIFIER": "[TOKEN DEVUELTO EN LA PRIMERA PETICION]", 
"DS_MERCHANT_COF_TXNID": "[TXNID DEVUELTO EN LA PRIMERA PETICION]",
"DS_MERCHANT_MERCHANTCODE": "xxxx",
"DS_MERCHANT_TRANSACTIONTYPE": "0",
"DS_MERCHANT_DIRECTPAYMENT": "true",
"DS_MERCHANT_ORDER": "4986Qpqx", 
"DS_MERCHANT_TERMINAL": "1", 
"DS_MERCHANT_CURRENCY": "978",
"DS_MERCHANT_AMOUNT": "5",
"DS_MERCHANT_EXCEP_SCA": "MIT", 
"DS_MERCHANT_COF_INI":"N"
}
ssheduardo commented 1 year ago

Tienes un método para poder asignar todos los parámetros en caso la clase no lo tenga por defecto.

https://github.com/ssheduardo/sermepa#asignar-par%C3%A1metros

scramatte commented 1 year ago

Ahora ha hecho la peticion REST pero no autoriza la comra y devuelve código 0180 en DS_RESPONSE

ssheduardo commented 1 year ago

Ese error que te da es image