-
Notifications
You must be signed in to change notification settings - Fork 22
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Mcrypt está deprecated en PHP 7.1 #14
Comments
Y si pruebas con el alias de cifrado |
Hola, yo también he tenido este problema con OpenSSL al actualizar a PHP 7.1, y he informado a RedSys para indicar cómo arreglarlo. El motivo es que OpenSSL utiliza un padding de PKCS7, mientras las obsoletas MCrypt un padding de ZeroBytes y la cadena a codificar debe ser múltiplo de 8, por tanto para arreglar el problema se debe:
Esta sería la nueva función: `
` Saludos. |
Has podido probar si funciona? Por qué usas Gracias! |
Claro que funciona!! o no hubiera enviado la función sin haberla probado antes ;) Para poner el carácter ASCII-0 se indica con \0 si se pone solo 0 sería el carácter ASCII-48 |
Perfect :) en breve lo actualizo. |
En el branch de Si lo probais y funciona lo paso a release. Saludos! |
Puedo corroborar que funciona bien este cambio. Además he cmabiado la visibilidad de la función getMerchantParameters() la he pasado de |
Perfect, he actualizado También he pasado a públicas algunas funciones, pero no debes cambiar manualmente el ámbito de las privadas, ya que son mucho más propensas a cambiar, y siendo privadas, el desarrollador da por supuesto que no afectará a los usuarios. |
Desde hace más de 3 meses que puse el cambio a OpenSSL en mi servidor no ha habido problema en las tiendas que tengo en varias Webs a la hora de realizar el pago, y se han hecho ya cientos de pedidos, así que se puede decir que funciona perfectamente. Inexplicablemente solo este thread parece que se ha interesado por el tema, porque ni RedSys me ha contestado (y les envié la nueva función) ni han actualizado su área de descarga para cambiar a este arreglo de mcrypt a OpenSSL... Así que se ve que somos los únicos en España con tiendas en PHP 7.1 ;) esperemos que si alguien más tiene este problema pueda llegar aquí mediante Google ;) |
Ok, pues merge y close :) Gracias a todos 🎉 |
Hola buenas, He estado mirando la funcion encrypt_3DES que habeis hecho y me ha ayudado bastante, ahora tengo un problema con la contraria, decrypt_3DES, podeis ayudarme? No se como traducirla D:
Gracias por adelantado |
Maybe it can help you https://stackoverflow.com/a/19748494/2153237 Jose Carlos Ramos Carmenates |
Al igual que vosotros he decido dar el salto a PHP7 a un ecommerce con pago mediante la api de Redsys, he realizado el cambio que habéis comentado dejando de usar la función mcrypt_encrypt y usando la función openssl_encrypt. En PHP 5.6 funciona perfectamente con el cambio. Pero al actualizar a PHP 7.0 o 7.1, realizo el proceso de pago, aparentemente todo correcto, inserto datos de tarjeta correctos, el código de seguridad y luego se produce el fallo con la comunicación SOAP y el TPVV muestra el siguiente fallo:
El error que muestra Redsys en su TPV Virtual es “9998 Sin finalizar”. He revisado los logs del servidor y no encuentro ningún error. Desde Redsys no ayudan mucho y se limitan a comentar que tienen en proceso la actualización pero sin fechas. |
Pero es con el uso de la librería, o es código propio? |
Es con el uso de la librería de redsys para PHP: |
Pues hoy me ha tocado actualizar una máquina virtual de Debian Stretch a Debian Buster y PHP 7.2 llegó para romper la pasarela de pago. Gracias mil por compartir tu solución! |
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í:
De esta forma la pasarela redsys da un error. A alguien se le ocurre que puede ser?
Un saludo.
The text was updated successfully, but these errors were encountered: