ssheduardo / sermepa

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

Probando los cambios #18

Closed popnoart closed 8 years ago

popnoart commented 8 years ago

Buenas,

lo primero muchas gracias por el trabajo, se agradece un montón!

Me cabo de poner a actualizar uno de los sitios que tengo que migrar y he empezado a hacer pruebas. Los clientes no me han pasado muchos datos así que estoy usando los de prueba que tenía de hace un par de años, y no se si son válidos todavía.

He probado el número de tarjeta para denegada y va bien, pero al probar la aceptada es cuando me falla dando el error que pongo en el título, y del cual no consigo encontrar referencias:

Y en pantalla: No se puede realizar la operación El sistema está ocupado, inténtelo más tarde

Los datos parecen ir bien, así que no se si es cosa de que las tarjetas que uso de prueba ya no sirven:

//Autorizada Número de tarjeta: 4548812049400004 Caducidad: 12/20 Código CVV2: 123 Código CIP: 123456 //Denegada Número de tarjeta: 1111111111111117 Caducidad: 12/20

¿Alguno tiene idea de dónde puedo estar metiendo la pata?

ssheduardo commented 8 years ago

Hola @popnoart, La clase lo ha actualizado un poco a ciegas, utilizando los datos que proporciona el banco en un PDF. He llamado a soporte de Redsys, pero me han derivado al banco de la pasarela pero es llamar a un 902. Si quieres podemos verlo entre los dos, contacta conmigo por email (lo tienes en composer.json) y lo vemos junto, que me vendrá de perlas hacer más pruebas.

popnoart commented 8 years ago

Buenas Eduardo,

acabo de encontrar el problema, mea culpa, había añadido una modificación que tenía de la otra versión! He probado tu clase sin modificar y ahora no me da fallo.

Le había hecho una modificación a la anterior versión por un problema que tenía redsys: si el cliente daba al botón de atrás la página se servía desde la caché y daba error de pedido duplicado. Para evitarlo modifiqué como se generaba el pedido para que generara un pedido en parte aleatorio y evitar este problema.

Al hacer pruebas introduje esta modificación también, mal hecho!

Voy a hacer un par de pruebas más con la tarjeta aceptada y ya te cuento si veo algo!

ssheduardo commented 8 years ago

Hola Paula, para el problema del pedido (que también me ha pasado, deberías guardar en session el pedido y si vuelve comprobar si es igual o no para generar otro, así no tocas la clases y que intacta. Si sigues con las pruebas genial para ver como va tirando todo, lo que no se si has visto que en setEnviroment uso "other" que es la url que esta en el ejemplo del script pero no en la documentación. Si para pruebas setEnviroment lo dejas vacios debe ejecutar el modo test con la url de la documenación que adjunto Redsys.

Ya me cuenta que paso.

popnoart commented 8 years ago

Si, he visto lo de la discrepancia de las urls. Si utilizo la de la documentación tira fallo directamente. Pero con la de "other" va bien.

Una tontería que he visto, sólo que se te olvidó actualizar en README.md: Como usar la clase > Métodos útiles: $redsys->submit('nombre_submit','texto_del_boton');

Voy a hacer lo que me dices para evitar lo de pedido duplicado y ya te cuento!

ssheduardo commented 8 years ago

Pero hay un problema con dichas urls, dado que redsys hace una cosa en el PDF y otra en el ejemplo que pasan, y ahí hay un problema grande. ¿Has probado a realizar un pago en real? Voy a cambiare en README el texto.

ssheduardo commented 8 years ago

Ya esta la actualización del documento y agregado un nuevo parámetro a setAttributesSubmit Ejemplo

$redsys->setAttributesSubmit('btn_submit','btm_id','Enviar','font-size:14px; color:#ff00c1');

Ó

$redsys->setAttributesSubmit('btn_submit','btm_id','send','display:none');
popnoart commented 8 years ago

Buenas de nuevo!

en el entorno de pruebas funciona todo bien, siempre que uses la url del ejemplo ("other") y no la que pone en la documentación ("test").

Hay un par de funciones que son privadas, pero que vienen bien para recoger la información que se recibe en la url de notificación y que estaría bien juntar por comodidad.Yo guardo los datos del pago por si hay algún problema con ese pedido, más que nada el código de error por si pregunta el cliente.

Sería algo como:

public function getMerchantParameters($data){
    $decodec = $this->decodeParameters($parameters);
    $decodec_array=$this->JsonToArray($decodec);
    return $decodec_array;  
}

En cuanto el entorno real, lo intentado y nada, da el mismo fallo que si uso la url de test, en vez de other. He probado también ha usar directamente el ejemplo que te puedes descargar (API_PHP), sustituyendo el FUC y KEY por los de mi cliente, y con la url https://sis.redsys.es/sis/realizarPago que se supone que es la del entorno real, y nada, mismo fallo.

Leeré de nuevo la documentación y si eso le escribo al email que han creado específico para esta migración.

popnoart commented 8 years ago

Pues después de un rato, no he conseguido encontrar nada. Cotilleando el código de los módulos para magento y prestashop he visto que tienen estas urls de entorno: case 1: //Real $this->urltpv = 'https://sis.redsys.es/sis/realizarPago/utf-8'; break; case 2: //Pruebas t $this->urltpv = 'https://sis-t.redsys.es:25443/sis/realizarPago/utf-8'; break; case 3: // Pruebas i $this->urltpv = 'https://sis-i.redsys.es:25443/sis/realizarPago/utf-8'; break; case 4: //Pruebas d $this->urltpv = 'http://sis-d.redsys.es/sis/realizarPago/utf-8'; break;

Pero nada, ni con esa url funciona. Les he escrito un email a ver si me dicen algo. De todas formas si alguien ha probado el entorno real y le ha ido bien avisad por favor, así sabré que el problema es cosa mía :-D

ssheduardo commented 8 years ago

Si había revisado esos módulos y nada no funcionaba solo el del ejemplo. Que mal servicio el de redsys la verdad. Voy a implementar el método que me has dicho que tienes razón vendría bien como método auxiliar.

popnoart commented 8 years ago

Solucionado!!! No se porqué razón, restos de datos viejos supongo, tenía puesto en terminal 871 cuando debería ser 1.

He hecho una compra en entorno real y todo perfecto!

ssheduardo commented 8 years ago

Genial entonces, una cosa menos. Quedaría lo del entorno test (ver la famosa url)

ssheduardo commented 8 years ago

Acabo de agregar la función que mencionabas para los datos devueltos por el banco por si se necesita Decode Ds_MerchantParameters. He usado la función que me comentaste.

popnoart commented 8 years ago

Genial, voy a actualizarla en mi cliente!

ssheduardo commented 8 years ago

De nada, @popnoart ¿Te han confirmado lo de la url de pruebas?, es lo único que me impide pasar a Master lo de Dev.

popnoart commented 8 years ago

Que va, cuando no les escribo desde el email del que ha contratado la tpv no me hacen ni caso.

Tengo que implementarlo en otro cliente, voy a probar a ver si funciona la que ponen originalmente en la documentación, y si no, voy a escribirles de nuevo a ver si me confirman algo.

ssheduardo commented 8 years ago

Yo les he escrito y nada igualmente, me respondieron por otra vía en redsys pero estaban aún con la documentación antigua,me pasaban de pruebas quertyasdf0123456789 que ya no se usa en sha256