hola,
A ver si podéis darme por lo menos una idea de qué es lo que tengo que utilizar.
Os cuento.
Tengo una web normal con su propia base de datos (BBDD A) a la que quiero añadir una pequeña tienda magento (con su base de datos BBDD B). Necesito:
1.- cuando un usuario se registra en la tienda y compra un pdto x tengo que grabar cierta información del usuario y del pedido en la BBDD A.
2.- Cuando se modifican los datos personales y de suscripción a la newsletter en la BBDD A tengo que actualizarlo en la base de datos de Magento (BBDD B)
3.- Cuando se modifica la suscripción a la newsletter sobre la base de datos de Magento (BBDD B) tengo que actualizarlo tambien en la BBDD A
4.- Cuando un usuario se valide (email y password) contra la BBDD A tengo que darlo como validado contra la base de datos de Magento (BBDD B).
5.- En la web normal necesitaría mostrar el historico de pedidos de magento.
En un principio había pensado en crear triggers asociados a las tablas de la BBDD A y BBDD B que insertaran la información en las correspondientes tablas de la otra base de datos. Pero después de leer cosas del Dataflow, webservices y api pues imagino que lo más elegante seria utilizar eso pero no se hasta que punto me sirve
A ver si podéis orientarme un poquito
muchas gracias
Un saludo
Eva
una pequeña ayuda??
En primer lugar no te recomiendo tocar directamente las tablas de Magento. Tocar las tablas de Magento puede significar futuros errores y olvidarte de actualizaciones.
Tendrás que utilizar la API de Magento para insertar usuarios o modificar sus registros y datos.
Pero además tendrás que modificar el código para que cuando se produzca un alta o modificación se llame a estos scripts.
Soporte profesional para Magento: www.estatiko.com
gracias Xarlie por responder!
no, tocar directamente las tablas de magento no tenia intencion. Entonces, según dices, cuando modifque algo en la bbdd A que necesite que se modifique tambien en la bbdd de Magento lo que tengo que utilizar es la API de Magento? Voy a ver si busco información al respecto porque estoy un poco perdida.
Y respecto al tema de validarse contra magento como lo hago? Me explico se valida en la web inicial con email y password que son los mismos datos que existen en magento como hago para que magento reconozca que ya esta validado contra él??
de nuevo muchas gracias!!
Eso es.
En realidad tienes que decidirte por un sistema de los 2 para darte de alta a los usuarios. No es lógico tener dos sistemas y los datos duplicados porque al final fallará alguno.
Lo ideal (dependiendo del sistema A) es que lo lleve Magento (porque es más complicado) y cuando quieras tener un dato del usuarios en la aplicación A generas una llamada al API de Magento para sacar los datos 🙂
Soporte profesional para Magento: www.estatiko.com
A ver si me entero 😉
- El sistema A es un portal montado en Java y con bbdd Mysql. Los usuarios pueden registrarse y subir ciertos datos, informacion, fotos ... etc
- El tema es que ahora necesito crear tambien una tienda magento para vender ciertos productos x.
El punto de union entre el sistema A y magento es que los usuarios son los mismos y tengo que mantener de alguna forma una relacion.
Entonces según los puntos que comentaba al principio:
1.- cuando un usuario se registra en la tienda y compra un pdto x tengo que grabar cierta información del usuario y del pedido en la BBDD A.
En cuanto este usuario se registra, compra y paga, el sistema A tiene que reconocer a ese usuario y que ha comprado el pdto X ¿como lo hago?
Habia pensado en:
a.- triggers sobre las tablas de magento de forma que cuando se inserten datos en ellas se inserten tambien las tablas del sistema A
b.- encontrar en el codigo de magento el punto donde el pedido se da por finalizado correctamente y justo aquí invocar por ejemplo a un action de struts de java del sistema A pasandolo los datos que necesite y que sea el encargado de actualizar su bbdd
c.- ¿tu propones utilizar aqui el api de magento?? ¿como??
2.- Cuando se modifican los datos personales y de suscripción a la newsletter en la BBDD A tengo que actualizarlo en la base de datos de Magento (BBDD B)
Los usuarios pueden modificar su suscripcion al boletin de noticias directamente contra la bbdd el sistema A para actualizarlo en magento ¿como lo haría? aquí si podría utilizar el api de magento para que me cambie ese campo en su bbdd no?
3.- Cuando un usuario se valide (email y password) contra la BBDD A tengo que darlo como validado contra la base de datos de Magento (BBDD B).
El usuario se puede validar en el portal web (sistema A) con login y password, si una vez validado quiere comprar algo, quiero que magento reconozca que ya esta validado contra el ¿como lo hago?
Cuando se valida en el sistema A puedo invocar a algun API de magento que fuerza una validacion contra magento???
5.- En la web normal necesitaría mostrar el historico de pedidos de magento.
En el portal web (sistema A) tengo que mostrar un historico de pedidos ¿invocaria al api de magento que me devuelve toda la información de sus pedidos??
como ves ando un poco perdida 🙁
Yo te proponía modificar el sistema A de forma que cada petición que necesites del usuario se haga mediante API a Magento, de forma que sólo tendrás una tabla de datos con los del usuario. La de MAgento.
De forma que el sistema A no tendrá tabla de usuarios, sino que esa tabla es la de MAgento (aunque son varias).
Por ejemplo el usuario quiere modificar su foto.
El usuario se loguea contra el servidor de la API de MAgento. En caso positivo se graba la cookie o las funciones que se haría en la operativa habitual.
Es decir, sustituyes sólo las consultas sobre las tablas de usuarios en la aplicación A por llamadas a la API de user de Magento.
Lo mismo para la newsletter. En lugar de hacer un UPDATE en la tabla del usuario de la aplicación A, realizar una llamada a la API de Magento para modificar ese parámetro.
¿Qué un usuario se quiere dar de alta en la aplicación A? Reenvías al usuario a la página de alta de MAgento (modificas el theme y listo).
Todo lo resumo en tener un único sistema de alta/modificación y validación de usuarios, en este caso de Magento.
Creo que no hay histórico de pedidos por usuario en el API... pero siempre podrás maquetas una página en MAgento con estos pedidos y redirigir al usuario desde la aplicación A a la B.
Soporte profesional para Magento: www.estatiko.com
buff pero eso es una movida no? porque mmmm muchas tablas de la bbdd A tienen Foreign keys a la tabla usuarios y muuuuchas consultas la utilizan para selects, inserts, joins ... en fin que habría que modificar muchas , muchas cosas ... lo voy a pensar pero creo que es inviable 🙁
ves imposible, algo malo problemático en la forma de hacerlo que yo comento??
No, no, por supuesto que no.
Pero como programador ya sabes que la duplicidad de datos es algo que me mata 😀
Pero tu idea está bien. Buscar el punto en el que se realizar la llamada y modificar/añadir el código necesario.
Soporte profesional para Magento: www.estatiko.com
jeje si a mi tambien me mata tener datos duplicados y se que si no lo hacemos bien nos puede traer muchos problemas pero buff es que en este caso me temo que no hay otra forma.
muuuuuuchas gracias Xarlie!!