2010-04-21

sHa_1 y sermepa

Recientemente la web de un cliente sufrió la actualización de su servidor. Los chicos del hosting comentaron que la versión de Mysql y la de php era la misma y que no debería generar ningún problema sobre la programación del sitio.

Pero, el servicio de compra online dejó de funcionar.

Cuando le dabas a pagar y te enviaba hacia la pasarela de pago salía un error sis00042. Concretamente te decía que se habían enviado datos incorrectos.

El sistema de compra hace una especie de suma de datos y después da un hash de esa suma. Según sermepa mi sistema no daba la firma bien, el resultado de hacer el hash de la suma del pedido. Sermepa se limpió las manos y me tocó recurrir a los foros...

En varios sitios encontré un problema similar.
La suma del pedido es:

$message = $amount.$order.$code.$currency.$tipoOperacion.$urlMerchant.$clave;

La firma del pedido es:

$signature = strtoupper(sha_1($message));

la función sha_1 está definida dentro del archivo que te manda sermepa. Pues bien la solución es:

$signature = strtoupper(sha1($message));

Pasar de esa función y confiar en sha1 una función propia de encriptación de php.

Digo yo que los de sermepa podían haber echado un cable en vez de tener la tienda varios días inoperativa y los del hosting está claro que han cambiado algo del servidor.

Un cero patatero para ámbos.

Lo que voy a hacer a partir de ahora es subir un archivo con:


// Show all information, defaults to INFO_ALL
phpinfo();

?>


Hacer un pantallazo y cuando me digan que no han hecho cambios volver a hacer otro pantallazo y comparar ámbos. Por lo menos sabré que tipo de cambios se han hecho.

4 comentarios:

Anónimo dijo...

Quien ha tenido que modificar el código: Sermepa ó tu. Pues ya sabes de quien es la culpa de haber tenido parada la tienda unos días...

avanzaweb dijo...

Sermepa no menea un dedo.. así que lo he tenido que hacer yo.

Como veo cierto tono sarcástico en tu comentario te comento que para un caso como el mio en el que hay una actualización en el servidor y la página deja de funcionar si sermepa tuviera un buen servicio debería tener implementado en su web estas posibles fallas.

De hecho cuando busque en foros era un problema más o menos habitual y que había pasado con anterioridad a mucha más gente.

No hay que olvidar que sermepa trabaja para las cajas y estás pierden dinero si nosotros tenemos la tienda caida.

Así que la culpa desde luego no es mia...

Anónimo dijo...

Para anónimo, si tu pinchas una rueda de tu coche la culpa no es del mecánico, que es quien la arregla, verdad?

Anónimo dijo...

Pues a mí me pasó lo mismo, y estamos a 2013, en un servidor nuevo... y la documentación del 2004... vamos que mierda de pasarela no tener actualizada la documentacion... y encima lavandose las manos y haciendote gastar pasta en el 902... OJALA desaparezca... aguante PAYPAL!