OVH Community, your new community space.

Software de TPV de CECA


Power
05/05/2011, 11:30
Cita Publicado inicialmente por Patricia13_8
Ya se cual era el error, era error mio, que para hacer las pruebas habia puesto una cantidad a cobrar menor y al hacer las comprobaciones de la firma no ponia los suficientes ceros delante de la cantidad a cobrar, que eran 0,01 centimo, yo ponia 1, y tenia que poner 00000001...
Un despiste!
Muchas gracias por todo!
Bien está saberlo.
Así hay más posibilidades de que no cometamos el mismo error.
Gracias.

Saludos

Patricia13_8
05/05/2011, 10:51
Ya se cual era el error, era error mio, que para hacer las pruebas habia puesto una cantidad a cobrar menor y al hacer las comprobaciones de la firma no ponia los suficientes ceros delante de la cantidad a cobrar, que eran 0,01 centimo, yo ponia 1, y tenia que poner 00000001...
Un despiste!
Muchas gracias por todo!

Patricia13_8
05/05/2011, 08:48
Buenas,
ya me ha devuelto que se ha realizado la operación de forma correcta, debo tener alguna comprobación mal o algo que me devuelve mal de la BD... voy a ir depurando a ver si averiguo que es..
Muchas gracias por todo!
CUando lo descubra lo dejaré escrito por si a alguien le pasa en un futuro..

Power
04/05/2011, 14:44
Cita Publicado inicialmente por Patricia13_8
.. me he puesto en contacto con los de soporte a ver si me pueden echar una mano...
Los de CECA son los primeros interesados en que te funcione.
De eso depende que ellos obtengan la comisión por ventas

Cuéntanos algo cuando sepas cual era el problema.
(Cualquier otro día puede pasarnos a cualquiera de nosotros)

Saludos

Patricia13_8
04/05/2011, 13:05
Muchas gracias! aqui sigo intentandolo, al principio era por las comillas que no me mostraba bien el $*$OKY*$ y me mostraba $*$*$ algo asi..
También he abierto una sesión nueva en otro navegador..
ya no se que más probar.. me he puesto en contacto con los de soporte a ver si me pueden echar una mano...
Gracias

Power
04/05/2011, 08:37
Hola de nuevo, Patricia13_8,

Releyendo más el manual de TPV de CECA he encontrado esto en Preguntas frecuentes:
La operación ha finalizado correctamente pero no se ha realizado la comunicación on-line
Si se realiza una compra en la web del comercio y en el mismo navegador web, compartiendo
cookies, se encuentra la Web de administración abierta o ha estado abierta, no se produce el
proceso de comunicación on-line aunque la operación se realiza de forma correcta. Debe reiniciar
el navegador WEB o abrir sesiones distintas de navegación.
Saludos

Patricia13_8
04/05/2011, 08:36
Gracias!

Power
04/05/2011, 08:33
Hola Patricia13_8,

He mirado el manual de TPV de CECA y veo que ese es el error nº 1.
Es difícil saber el motivo.

Lo mejor es que hables con los técnicos de CECA (915965328) o les envíes un email (soporte.tpv@ceca.es)
Seguro que te pueden orientar.

Saludos

Patricia13_8
04/05/2011, 08:22
Buenos días Power,
hoy he estado haciendo pruebas para realizar un pago en producción y me devuelve la página del banco diciendome que la compra no ha sido finalizada y en Mensaje me sale COMUNICACION ON-LINE INCORRECTA.
Sabes por qué puede ser?
Muchas gracias!

Patricia13_8
03/05/2011, 08:49
Muchas gracias por tu respuesta!
He creado el script y he visto que recibo correctamente los datos, y que la firma es la correcta.
Luego he cambiado a producción y efectivamente ya me carga la página correspondiente y no me sale el error de ssl.
Muchas gracias! a ver si lo termino pronto

Power
03/05/2011, 08:30
Hola Patricia13_8,

En principio tu formulario tiene buena pinta.

Te recomiendo que, para hacer una prueba, lo dirijas a una URL tuya en lugar de a https://tpv.ceca.es000/cgi-bin/tpv
En esa URL pones un script PHP para que te muestre todo lo que te llega en el formulario.
Así podrás localizar si lo que se envía parece correcto.

Otra cosa: asegúrate de que la firma que estás enviando es la de pruebas, ya que la de producción, como sabrás, es diferente.

Yo tuve, al principio, algún problema con el entorno de pruebas.
Te recomiendo (por si acaso) que hagas alguna prueba en el entorno de producción.
(Puedes comprar algo de poco valor, e incluso anular, posteriormente, el cobro realizado a la tarjeta)

Saludos

Patricia13_8
03/05/2011, 07:54
Buenos días,
no sé si será muy tarde para reabrir este post, pero lo he leido y estoy intentando hacer una pasarela de pago con CECA y la verdad ando un poco perdida..
lo que he hecho hasta ahora es:
1 - en mi web el cliente elige el producto a pagar, entonces creo el formulario siguiente:

$firma=sha1($firma); //firma es la concatenaciòn de los valores correspondientes















Continuar Siguiente paso

donde ComprarTarjeta:

function ComprarTarjeta()
{
//PRODUCCION document.data.action= "https://pgw.ceca.es/cgi-bin/tpv";
document.data.action= "https://tpv.ceca.es000/cgi-bin/tpv";
document.data.method= 'POST';
document.data.enctype="application/x-www-form-urlencoded";
document.data.submit();
}


El problema es que al hacer clic en el botón de enviar me aparece el siguiente error y no se a que se debe:

Ha ocurrido un error durante una conexión a tpv.ceca.es000.
SSL ha recibido un registro que excedía la longitud máxima permitida.
(Código de error: ssl_error_rx_record_too_long)

Si me pudieseis ayudar os lo agradecería mucho.
Muchisimas gracias!
Un saludo!!!

Power
26/05/2010, 15:10
Hola,
Cita Publicado inicialmente por jalg
Hola, estoy siguiendo con espectación vuestros avances. No soy capaz de hacer funcionar el CECA en oscommerce. Mi servidor es Linux y tiene el safe_mode en off y no creo que se pueda cambiar a On porque es compartido. ¿Serías tan amable de poner el código completo en PHP para que funcione sin el dichoso calculo.c? Te esparía enormemente agradecido y creo que la comunidad también. Saludos
Yo esa parte del envío de datos lo hago así:
Código:
...
// Llegan $total y $pedido

$tabla['Importe'] = $total * 100; // Lo pone en céntimos
$tabla['Num_operacion'] = $pedido; // Código único de pedido
$tabla['Clave_encriptacion'] = "********";
$tabla['MerchantID'] = "********";
$tabla['AcquirerBIN'] = "********";
$tabla['TerminalID'] = "********";
$tabla['TipoMoneda'] = "978";
$tabla['Exponente'] = "2";
$tabla['Referencia'] = "";
$tabla['Cifrado'] = "SHA1";
$tabla['URL_OK'] = "http://www.midominio.com/tpv/retorno_ok.php";
$tabla['URL_NOK'] = "http://www.midominio.com/tpv/retorno_nok.php";
$tabla['Pago_soportado'] = "SSL";
$tabla['Idioma'] = "1";
$tabla['Firma'] = sha1($tabla['Clave_encriptacion'].$tabla['MerchantID'].$tabla['AcquirerBIN'].$tabla['TerminalID'].$tabla['Num_operacion'].$tabla['Importe'].$tabla['TipoMoneda'].$tabla['Exponente'].$tabla['Referencia'].$tabla['Cifrado'].$tabla['URL_OK'].$tabla['URL_NOK']);

// Formulario
echo "
\n"; // Carga valores a enviar foreach($tabla as $clave => $valor) echo "\n"; // Botón echo "\n"; echo "
\n"; ...
Como verás, guardo todos los datos en un array llamado $tabla y después, desde ese array cargo los input del formulario.

De todas formas, creo recordar que en el manual del TPV de CECA te vienen ejemplos en PHP.
Lo más importante es hablar con ellos (tienen un teléfono de aistencia donde te atiende un técnico) para que te aseguren que tienen activado el método SHA1 para ese cliente.

Espero que te sirva.

Saludos

jalg
26/05/2010, 09:19
Cita Publicado inicialmente por jj_bierzo
Muchas gracias por responde tan rápido.

Añadiré entonces los parámetros tal y cómo tú indicas y en ese orden y los cifraré con SHA1.

También añadiré el campo oculto de Cifrado con el valor SHA1.
__________________________________________________ ___________
Editado:

¡Perfecto! Muchísimas gracias. Parece que ya funciona la conexión con la Confederación Española de Cajas de Ahorros.


Código:
$Firma = sha1($Clave.$MerchantID.$AcquirerBIN.$TerminalID.$Num_operacion.$Importe.$TipoMoneda.$Exponente.$Referencia.$Cifrado.$url_OK.$url_NOK);

//siendo $Cifrado='SHA1', $Referencia='', y los demás datos los que nos proporciona la Ceca y nuestra web
Hola, estoy siguiendo con espectación vuestros avances. No soy capaz de hacer funcionar el CECA en oscommerce. Mi servidor es Linux y tiene el safe_mode en off y no creo que se pueda cambiar a On porque es compartido. ¿Serías tan amable de poner el código completo en PHP para que funcione sin el dichoso calculo.c? Te esparía enormemente agradecido y creo que la comunidad también. Saludos

Power
05/04/2010, 16:36
Hola jj_bierzo,

Me alegra que ya lo tengas resuelto.

En cuanto a lo que comentas sobre Paypal, efectivamente, a través de Paypal se puede pagar con tarjeta.
El problema es la comisión tan alta que cobran.

Por eso es por lo que mi cliente prefirió independizar el pago con tarjeta y hacerlo a través de BBK: (comisión del 1%, ingreso del dinero en la cuenta bancaria en el mismo día del pago y posibilidad de securizar el pago mediante Visa Securized a partir del importe que él desee fijar en cada momento).

Saludos

jj_bierzo
05/04/2010, 15:19
¡Ya está operativo el módulo de pago con tarjeta para la CECA! En concreto para Caja Duero, aunque es compatible con cualquier caja de la Confederación Española de Cajas de Ahorro.

Os dejo algunas imágenes:

http://img683.imageshack.us/img683/1753/modosdepago.png

http://img717.imageshack.us/img717/4...contarjeta.png

Esperemos que este tema sirva a que más gente pueda instalar su sistema de pago con tarjeta en sus webs. De todas formas si no lo conseguís sabed que ahora paypal permite pagar con tarjeta de crédito aunque los clientes no tengan cuenta de paypal.

Muchísimas gracias a todos por ayudar :-)

jj_bierzo
01/04/2010, 18:23
En efecto, cada banco luego pone su "apariencia" para ese formulario. El mio aparecía en blanco porque aún no lo habían activado. Escribí al correo de soporte de la ceca y me lo activaron.

Seguiré informado

Power
31/03/2010, 17:09
Hola,

En mi caso, BBK-CECA me envió las páginas modelo (con sus imágenes) del servidor.
Yo las adorné a mi gusto, se las envié a CECA y me las instalaron.

Saludos

jj_bierzo
31/03/2010, 13:16
Gracias Chencho, eso lo haré de manera sencilla con javascript.

Sin embargo no sé dónde tengo que cambiar eso ya que este formulario se encuentra alojado en el servidor de la ceca al cual no tengo acceso.

En el manual habla de un panel de administración al que se accede a través de:


http://tpv.ceca.es000/admincomercios/inicio.html (Para pruebas)

https://www.ceca.es/comercio/identificacion.html (Real)

Sin embargo ya he probado a poner varios de los datos que me dieron en Comercio y Contraseña y no consigo entrar. Avisaré al soporte técnico de la Ceca.

chencho
31/03/2010, 12:56
Lo que te dacía Power es usar un select para el año y otro para el mes, para que no lo escriban; puede poner un select con los años, a partir del actual y otro con los meses, de forma numérica o con el nombre (enero, febrero, ...)

Una vez que el cliente selecciona el año y mes ya creas tu la variable que sea en el formato adecuado, por ejemplo haciendo caducidad=anyo+mes (siempre que no sean tratados como datos numéricos, claro) según el lenguaje que uses para programar será de una forma u otra

jj_bierzo
31/03/2010, 12:48
Muchas gracias Chencho y Power

Había probado de muchas formas distintas. Fallaba en la fecha de cacudidad que primero es el año y luego el mes.

el formato sería el siguiente:

http://img101.imageshack.us/img101/8741/formulario2.png

Tarjeta de Crédito:xxxxxxxxxxxxxxxx
Fecha de Caducidad: aaaamm
CVC2/CVV2: xxx

____________________________________

Respecto a la personalización como podéis comprobar no lo he hecho. Está el formulario básico. Y no sé como editarlo para personalizarlo. Me leo cosas del manual pero supongo que con las prisas y los nervios no encuentro las cosas.

Power
31/03/2010, 08:42
Hola de nuevo,

Veo que Chencho ya te ha contestado mientras yo escribía.

Saludos

Power
31/03/2010, 08:41
Hola,

Te recomiendo que leas lo que indica sobre el tema el manual de TPV de CECA.

El campo PAN (tarjeta) del formulario debe contener los 16 dígitos de la tarjeta sin espacios ni otros caracteres intermedios.

El campo Caducidad del formulario debe contener 6 caracteres seguidos (sin "/") con formato AAAAMM
Es muy cómodo usar un par de Select para que el usuario seleccione año y mes sin necesidad de escribirlo.

En las páginas de personalización que nos enviaron viene una función Javascript que pone en serie ambos campos de select (año y mes) y con ellos crea el campo Caducidad.

Saludos

chencho
31/03/2010, 08:38
Has probado a no poner espacios en la tarjeta y/o no poner la / en la fecha de caducidad como separador?

jj_bierzo
31/03/2010, 00:30
Hola de nuevo. Una vez envío una firma correcta y establezco la conexión ...

Segunda parte

Me aparece un formulario con tres campos (Tarjeta, Fecha de caducidad y CVC2/CVV2)
Admiten 19, 6 y 3 caracteres de longitud máxima respectivamente.

Yo pondría:
Tarjeta: 1234 1234 1234 1234
Fecha de Caducidad: 10/13
CVC2/CVV2: 111
Sin embargo me da errores por incluir datos no numéricos, espacios,etc.

1. ¿Qué formato es el correcto para cada uno de los campos?
2. ¿Se puede modificar esa página que inicialmente aparece con un fondo blanco?

http://img33.imageshack.us/img33/4231/formularioi.png

Muchas gracias

Power
30/03/2010, 18:40
Muchas gracias por responde tan rápido.
¡Perfecto! Muchísimas gracias. Parece que ya funciona la conexión con la Confederación Española de Cajas de Ahorros.
De nada.
Me alegro de que te funcione.

Saludos

jj_bierzo
30/03/2010, 18:23
Muchas gracias por responde tan rápido.

Añadiré entonces los parámetros tal y cómo tú indicas y en ese orden y los cifraré con SHA1.

También añadiré el campo oculto de Cifrado con el valor SHA1.
__________________________________________________ ___________
Editado:

¡Perfecto! Muchísimas gracias. Parece que ya funciona la conexión con la Confederación Española de Cajas de Ahorros.


Código:
$Firma = sha1($Clave.$MerchantID.$AcquirerBIN.$TerminalID.$Num_operacion.$Importe.$TipoMoneda.$Exponente.$Referencia.$Cifrado.$url_OK.$url_NOK);

//siendo $Cifrado='SHA1', $Referencia='', y los demás datos los que nos proporciona la Ceca y nuestra web

Power
30/03/2010, 17:44
Hola,

Es vital, si se usa la modalidad de cálculo de la firma con el algoritmo SHA1, que se indique esa circunstancia en los datos que se pasan:

Código:

Y el valor calculado de la fórmula debe ser el resultado de aplicar SHA1 a:
Código:
Clave_encriptacion+MerchantID+AcquirerBIN+TerminalID+Num_operacion+Importe+Tipo_Moneda+Exponente+Referencia+Cifrado+URL_OK+URL_NOK
(Veo que en tu fórmula omites algunos de estos campos)

A mí así me funciona de maravilla.
Eso sí, tuve que llamarles al principio a CECA porque no me funcionaba.
Tuvieron que activar algo porque no tenían, para mi cliente, activado el modo SHA1

Saludos

jj_bierzo
30/03/2010, 17:17
Hola Power,

puedes explicar como haces esa operación, porque me sale un mensaje desde el servidor de la ceca que pone "ERROR AL CALCULAR FIRMA"

Yo hago esto:

Código:
$cadena = $Clave.$MerchantID.$AcquirerBIN.$TerminalID.$Num_operacion.$Importe.$TipoMoneda.$Exponente.$Referencia;

$firma = sha1($cadena);
Muchas gracias

Power
02/03/2010, 09:50
Hola,

Acaban de enviarme un nuevo manual para TPV virtual de CECA.

Resulta que el programa "calculo" para obtener la Firma es, simplemente, el algoritmo de la función SHA1.

Así que con la función sha1() de PHP resuelto el problema.
(Y sin necesidad de habilitar la función exec() que me daba más miedo)

Saludos

Power
02/03/2010, 08:42
Hola,

Muchas gracias Chencho por la información.

He seguido estudiando el tema y veo que lo más sencillo es instalar el binario del programa "calculo" (u obtener ese binario compilando las fuentes que te envían).

Pero, efectivamente, no va a haber otra solución que volver a habilitar la función exec() de PHP para llamar a ese programa.
(No me gusta nada tener exec() habilitado)

¿Alguien sabe alguna opción para habilitar exec() sólo para un usuario?

Saludos

chencho
02/03/2010, 08:38
He mirado lo de CECA y hay varios módulos de oscommerce, magento, etc que lo usan; podrías ver el código y adaptarlo.

Hablan de un ejecutable llamado "calculo" que es el que genera la firma, supongo que es el que necesitas ejecutar.

De todas formas hablan de un ejecutable en .c

Creo que si tienes que ejecutar exec si o si para el cálculo de la firma.

Código:
string = "./calculo  $Clave $MerchantID $AcquirerBIN $TerminalID $Num_operacion $Importe $Tipomoneda $Exponente \"\" ";
$resultado = exec($string);

Power
01/03/2010, 14:32
Hola,

Para una tienda online de un cliente, voy a ponerle acceso a la pasarela de pago de TPV virtual de CECA (Confederación Española de Cajas de Ahorro).

Parece todo sencillo, salvo el tema del cálculo de la Firma.
Al parecer, Firma es un código que debe generar el servidor a partir de algunos datos y a través de una librería suministrada.

Por lo que leo, se puede simplificar instalando la máquina virtual JAVA en el servidor.
Mi servidor es CentOS 5.4 y veo que hay varias formas de instalar la máquina virtual JAVA:
http://wiki.centos.org/es/HowTos/JavaOnCentOS

¿Me podéis recomendar alguna de las formas de instalarla?

Tampoco me queda muy claro como llamarla desde PHP (y menos si tengo que utilizar la función exec)

¿Alguien que lo haya hecho, me podría contar un poco?

Gracias

Saludos