majulvez/easyredsys

Error firma invalida en producción

Closed this issue · 9 comments

Cuando hemos usado la libreria en producción nos da un error de firma invalida cuando llega la notificación por parte de redsys, por lo que he visto es problema de la instanciación del AppConfig, cuando hace el getSecretKey() devuelve la contraseña de test en vez de la de producción.

Hemos probado a instanciar la clase por reflexión como haces en el INotificationSisRest pero al hacer getSecretKey() pasa exactamente lo mismo, devuelve la secret key de test.

Si, la propiedad testMode esta a false, si no no llegaria la petición a redsys puesto que es en producción y va a la url de producción. La pantalla de pago aparece y todo sin problema, el problema está cuando llega la notificación que siempre devolvía el secretKey por defecto y por tanto fallaba la comprobación que hace de la firma.

Parece tener mas que ver con la manera de instanciar la clase AppConfig

Uhmm... ¿sin embargo getMerchantCode() y getTerminal() sí que están devolviendo los valores correctos de vuestro negocio?

¿Qué versión de java y servidor de aplicaciones usáis? Entiendo que la versión de easyredsys que usáis es la última, la 1.1.5.

Haré unas pruebas a ver que puede ser

He creado una rama con unos cambios que son los que supongo que podrían tener algo que ver, aunque no estoy seguro ya que no puedo reproducir el issue. Mi teoría es que será por la opción de métodos estáticos en interfaces, así que he modificado el código para no usarlos.

https://github.com/majulvez/easyredsys/tree/test-nonstatic

¿Puedes instalar este repositorio (gradle clean install -x test) y luego modificar tu aplicación para que use easysredys v.1.1.6-SNAPSHOT?

Tendrás también que cambiar tu aplicación para quitar los static de AppConfigImpl.java como aquí: 589abc3#diff-78ac0be5ef6a37519524f8e9481f8c10R10

Gracias

He subido otra modificación a la misma rama. Al obtener el appConfig lo hago de forma lazy en lugar de obtenerlo en el constructor porque también podría ser que según el orden de carga de clases del class loader podría afectar a que encontrara la clase de configuración

Acabo de liberar una versión 1.2.0 con estos cambios. Estará en maven central en unas horas.

Hay que hacer cambios en el AppConfigImpl.java de tu aplicación para que sea compatible. De ahí el aumento de versión. Sustituye los static por public. Puedes ver el cambio en la documentación del proyecto y en los casos de ejemplo de integraciones

Gracias @majulvez no habia podido leerte hasta ahora, voy a subir la versión y hago una prueba

Hola @jhsevilla85 ,

¿has podido probar la nueva versión?

Un saludo

Hola @jhsevilla85 ,

voy a cerrar este ticket por inactividad.

Si tuvieras cualquier problema, simplemente abre otro ticket.

Gracias