Jump to content

Crear clientes en remoto con el Webservice de PrestaShop


indianricardo

Recommended Posts

Estoy desarrollando una aplicación para iOS y Android desde la que se podrán comprar productos de una tienda desarrollada con PrestaShop.

 

La aplicación la estoy desarrollando con Phonegap/Cordova con lo cuál puedo usar HTML y JavaScript. He activado el webservice en el panel de control de PrestaShop y generado una clave para la aplicación.

 

Para conectarme con el servidor realizo peticiones vía ajax y le paso el parámetro ws_key con la clave generada. Cuando realizo estas peticiones a este tipo de url's: http://midominio.com/api/customers/?ws_key=CLAVE&schema=blank la conexión con el servidor es correcta y me devuelve el esquema de un cliente en XML. Con el XML puedo parsearlo a JSON para que sea más fácil su manipulación en JavaScript, hasta aquí sin problemas.

 

El problema viene cuando yo modifico el esquema recibido, lo relleno con los datos de cliente, parseo el JSON a XML. He mirado varias veces si lo que me envía el servidor y lo que yo le envío es igual, tiene la misma estructura. Entonces con jQuery le envío el xml en string (he visto que se le ha de enviar texto plano) pero la respuesta que recibo es 400 Bad Request.

 

El código de jQuery es el siguiente:

$.ajax({
    url: 'http://midominio.com/api/customers/?ws_key=CLAVE_GENERADA',
    data: {
          xml: string // el xml en string con la estructura correcta
    },
    type: 'post',
    dataType: "text",
    success : function( data ) {
       console.log(data);
    },
    error : function (xhr, ajaxOptions, thrownError){
       console.log(xhr.status);
       console.log(thrownError);
    }
});

¿Alguien sabe o a logrado crear clientes/modificar carrito/lo que se desde JavaScript con el webservice de PrestaShop?

 

 

Link to comment
Share on other sites

Yo siguiendo los pasos de la guia mediante PHP no conseguí modificar nada. Al final, opté por hacer una web en php que modificase en mysql los campos en las tablas que quería, siendo hasta más rápido que por webservice.

 

En tu caso, estoy seguro que si has llegado hasta el punto en el que te encuentras estarás a nada de conseguirlo.

Link to comment
Share on other sites

Yo siguiendo los pasos de la guia mediante PHP no conseguí modificar nada. Al final, opté por hacer una web en php que modificase en mysql los campos en las tablas que quería, siendo hasta más rápido que por webservice.

 

En tu caso, estoy seguro que si has llegado hasta el punto en el que te encuentras estarás a nada de conseguirlo.

 

Al final he conseguido crear clientes, rellenaba el parámetro ID y lo ponía a 0 pero luego vi que la llamada por ajax me devolvía XML aún siendo 400 Bad Request y me ponía que el ID no estaba permitido, se lo quité y me creó el contacto correctamente. Ya puedo crear, modificar y eliminar contactos ahora ya solo me queda crear carritos de la compra que entiendo que será parecido a lo que ya he conseguido con los clientes.

Link to comment
Share on other sites

  • 1 month later...

Al final he conseguido crear clientes, rellenaba el parámetro ID y lo ponía a 0 pero luego vi que la llamada por ajax me devolvía XML aún siendo 400 Bad Request y me ponía que el ID no estaba permitido, se lo quité y me creó el contacto correctamente. Ya puedo crear, modificar y eliminar contactos ahora ya solo me queda crear carritos de la compra que entiendo que será parecido a lo que ya he conseguido con los clientes.

 

Tenes algun ejemplo de codigo que haga un put ? porque lo intento desde java y me da error 400, vi que alguien soluciono sacando algun campo que no puede modificarse pero no me anda y tampoco me queda muy claro. Consigo hacerlo con otras entiades mas simples pero con productos me da 400 siempre.

 

Gracias !!

Link to comment
Share on other sites

Tenes algun ejemplo de codigo que haga un put ? porque lo intento desde java y me da error 400, vi que alguien soluciono sacando algun campo que no puede modificarse pero no me anda y tampoco me queda muy claro. Consigo hacerlo con otras entiades mas simples pero con productos me da 400 siempre.

 

Gracias !!

 

Mmmm... En el código de error no te dice cual es el error? Fíjate bien porque yo ignoraba la parte restante del 400 Bad Request y vi que me notificaba de que el id era incorrecto y gracias a ello lo solucioné.

Link to comment
Share on other sites

Mmmm... En el código de error no te dice cual es el error? Fíjate bien porque yo ignoraba la parte restante del 400 Bad Request y vi que me notificaba de que el id era incorrecto y gracias a ello lo solucioné.

 

No me viene pelado el error 400

 

Asi tengo definido en presta para la notificacion por las dudas que me falte algo

 

/* Debug only */

if (!defined('_PS_MODE_DEV_'))

define('_PS_MODE_DEV_', true);

/* Compatibility warning */

define('_PS_DISPLAY_COMPATIBILITY_WARNING_', false);

if (_PS_MODE_DEV_)

{

    @ini_set('display_errors', 'on');

    @error_reporting(E_ALL | E_STRICT);

    define('_PS_DEBUG_SQL_', true);

}

else

{

    @ini_set('display_errors', 'off');

    define('_PS_DEBUG_SQL_', false);

}

Link to comment
Share on other sites

  • 6 months later...
  • 2 months later...

es increible, muchas personas llegan al foro, en algunos casos consiguen la respuesta aqui y no dan ni las gracias, otros preguntan algo, los foristas le indican que tienen el mismo problema, luego solucionan y no aportan nada de la solucion encontrada al foro.

 

se imaginan que todos pensaran igual ? quien ayudaria a quien y como ?

 

:(

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...