Saltar al contenido
Codifíca.me | Desarrollo web | Programación

REST APIs y Opencart 2 | Solución problemas de validación de APIs

14 octubre, 2016

Opencart 2.x utiliza REST APIs para realizar algunas operaciones de “gestión” dentro del administrador.

Para habilitarlo tienes que ir a Sistema->Usuarios->API , crear un API generando una Key, y añadir tu IP o las IPs desde las que vas a permitir hacer esos cambios.
Después tienes que ir a Sistema->Configuración->Opciones , buscar el nombre del API que acabas de crear y seleccionarlo en la lista desplegable que te permite seleccionar un API.

Opencar solucion

Por lo general funciona correctamente, aunque puede dar problemas con las urls seguras tipo SSL.

Si esto ocurre y no tienes SSL , tienes que cambiar la configuración en el config.php , dónde pone esto:

HTTPS_CATALOG https://tu-dominio.com

Hay que cambiarlo a:
HTTPS_CATALOG http://tu-dominio.com

Lo mismo sin la ‘s’.

También da problemas si no tienes instalado CURL en tu servidor, puedes mirar la configuración de php para saber si lo tienes instalado, o si lo prefieres puedes crear este script y lanzarlo, te dirá si tienes o no CURL instalado en tu servidor.

<?
 
// Script para saber si tienes o no CURL instalado en tu servidor
 
 
function _is_curl_installed() {
    if  (in_array  ('curl', get_loaded_extensions())) {
        return true;
    }
    else {
        return false;
    }
}
 
// Ejecutamos la funcion
if (_is_curl_installed()) {
  echo "cURL esta <span style=\"color:blue\">instalado</span> en tu servidor";
} else {
  echo "cURL no esta <span style=\"color:red\">instalado</span> en tu servidor";
}
?>

Por último, si no consigues hacer funcionar correctamente tu API , o si tienes alguna extensión antigua que no quieras cambiar puedes quitar la validación del API, dependiendo de lo que quieras modificar tendrás que editar un fichero u otro, aunque la modificación que tendrás que hacer es igual en todos los ficheros, los ficheros están en esta ruta:

/catalog/controller/api/*.php

y la modificación que debes de hacer para quitar la validación sería simple.

Habría que comentar o quitar esta parte:

if (!isset($this->session->data['api_id'])) {

y cambiarla por esta:

if (false==true) {

Algo así:

        	if (false==true) {
		//if (!isset($this->session->data['api_id'])) {