Jump to content

Web Services han dejado de funcionar


Recommended Posts

Buenas!

Tengo un problema que ha surgido de repente en una App que tenemos publicada desde hace 3 años, y es que las web services han dejado de funcionar, y ni siquiera muestran ningún error cuando activamos el modo debug.

No sé si habrá cambiado algo estos últimos meses que sea significativo, en el uso de la librería PSWebServiceLibrary.php, he estado buscando información pero no encuentro nada.

Este es un código de ejemplo de una de las llamadas a la web service:

function crear_carrito ($datos) {
    
    // CREACION DEL CARRITO
    try
    {
        // Construcción del xml a enviar, a partir del XML vacio de un carrito
        $webService = new PrestaShopWebservice(PS_SHOP_PATH, 'XXXXX', DEBUG_PRESTASHOP);
        
        $postXml = "
            <prestashop>
                <cart>
                    <id_address_delivery>".$datos->id_address_delivery."</id_address_delivery>
                    <id_address_invoice>".$datos->id_address_invoice."</id_address_invoice>
                    <id_currency>".$datos->id_currency."</id_currency>
                    <id_lang>".$datos->id_lang."</id_lang>
                    <id_customer>".$datos->id_customer."</id_customer>
                </cart>
            </prestashop>
        ";
        
        $xml = new SimpleXMLElement($postXml);
        
        // Definimos las opciones a enviar a la webservice y la llamamos
        $opt = array(
            'resource' => 'carts',
            'postXml' => $xml->asXML()
        );
        $xml = $webService->add($opt);
        
        // Obtenemos el id del carrito recien creado, que hay que pasar antes a array ya que es xml
        $id_carrito = $xml->cart->id;
        $id_carrito = (array) $id_carrito;
        $id_carrito = $id_carrito[0];
    }
    catch (PrestaShopWebserviceException $e)
    {
        $id_carrito = false;
    }
    
    return $id_carrito;
    
}

Un ejemplo de datos que recibe la función anterior (para un usuario sin logear), sería:

$datos = (object) [
    "id_address_delivery" => 0,
    "id_address_invoice" => 0,
    "id_currency" => 1,
    "id_lang" => 1,
    "id_customer" => 0
];

El resultado que da la web service por pantalla en el navegador, con el modo debug activo, lo adjunto a continuación.

webservice.JPG

Edited by Joaquín Calderón (see edit history)
Link to comment
Share on other sites

11 hours ago, gusman126 said:

¿puede ser por instalar un certificado SSL y ahora las URL son https en vez de http ? las ordenes  curl no deberian tener problemas, pero me parece que hay una opción para que no verifique el certificado.

o cambia a https las llamadas a ver si puede ser por eso

Gracias por contestar

Acabo de caer en otra cosa que podía ser al comentarme lo del https, y efectivamente eso era.

Se ve que cuando cambiaron a https, además de una redirección para forzar el https, pusieron una redirección para forzar la web sin www. En las webservices yo tenía la URL de la tienda definida como https://www.mi-tienda.com, así que ahí está el tema, parece que tiene que ser la URL exacta sin redirecciones.

Esto siempre ha funcionado porque claro, la web aceptaba ambos casos, no-www y www

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...