entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Como consumir un API

Hola que tal resulta que tengo un problema a resolver y la verdad es que no se mucho sobre de ello, resulta que requiero consumir los datos de un API, seguí las instrucciones de desarrollador que nos da el sitio, antes no podía obtener ningún parámetro pero ahora ya los tengo lo que seria un api key y un HD_id que pide el api, el problema ahora es que no se como consumir o como llamarla con mi script en php.

Esta es la dirección https://developers.hotelrunner.com/custom-apps/

No espero una solución completa, pero si que me pudieras orientar sobre ello, ya que nunca he consumido un api desde un script, por que consumirla con el navegador igual y si cuando hago consultas a google maps. Pero en esta ocación lo requiero hacer con código. Ojala me puedan dar un hilo ya que ya no se con que mas proseguir. gracias.

3votos

Leonardo-Tadei comentado

Cual de las API vas a consumir? La REST o la XML?

La documentación da ejemplos en JavaScript y con llamdas CURL. El lenguaje PHP tiene interfaz con CURL, o en el peor de los casos podés invocar a CURL vía la función exec() de PHP...

2votos

versce123mx comentado

Hola Leonardo muchas gracias por averte tomado el tiempo y revisar la api.
Pues basicamente ahorita me da igual si es por xml o rest. ya que lo que mas me importa es como hacer la conexion y traer los datos.

Yo segui las instrucciones de desarrollador y tengo que crear una cuenta como partner lo cual ya cree, luego dice que tienes que crear una custom app ya tambien la cree y cuando creo esa custom app me da la opccion de crear digamos hoteles o camas (un producto), luego en el consumo de ella por xml o por rest indica que se requiere un api key y un hd_id que son los parametros requeridos para validar al usuario que esta consumiendo la informacion. pues esos datos se crearon cuando yo cree un custom app.

Resulta que en el apartado de developers hay ejemplo de como consumir esa api mediante rest y devuelve un json, pues ya intente hacer ese ejmplo metiendo mis credenciales y no me funciona nada, no me trae ningun valor y pues como nunca he consumido un servicio de esta forma no se que me este fallando. no se si pueda ser por que estoy en mi localhost no tengo una idea clara.
Por ello acudo al foro para ver si me pueden orientar.
muchas gracias.

Este es el ejmplo que intente hacer para extraer la data y colocando mis credenciales pero no me funciona

var data = null;

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === 4) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://app.hotelrunner.com/api/v2/apps/rooms?token={TOKEN}&hr_id={HR_ID}");
xhr.setRequestHeader("cache-control", "no-cache");

xhr.send(data);

1voto

versce123mx comentado

Hola que tal ya pude conectarme al api el problema era con mis credenciales, ahora como puedo llamarla desde un script php. ya que consulta por la url y si funciona ya me trae un json, pero requiero ejecurtarla desde un script con php.
alguna sugerencia de que es lo que se hace.
gracias.

2votos

Leonardo-Tadei comentado

Tal vez si puesieras en tu pregunta el código PHP que estás usando...

1voto

versce123mx comentado

Ya lo he conseguido hacer hice un json_decode el cual me genera un array. ya tambien pude acceder a los elementos.

Tengo una ultima pregunta, la llamada a la api la puedo pasar a un metodo y llamarlo en otro archivo (vista)?

1 Respuesta

2votos

versce123mx Puntos1990

ya logre hacer lo que requeria

Este es el codigo en la clase

<?php
    class HotelRunner{

        private $api;
        private $response;

        public function __construct(){
            $this->api;
            $this->response;
        }

        public function getHotelRunner(){
            $this->api="https://app.hotelrunner.com/api/v2/apps/reservations?token=xozXYTH5kRLXGLycq1voxu52VDOqo2a9RfwMN&hr_id=5804806";

            $this->response = file_get_contents($this->api);
            return $this->response = json_decode($this->response);
        }
    }

y en la vista

<?php
  require_once 'hotelrunner_api.php';
  $obj = new HotelRunner();
  $call = $obj->getHotelRunner();
?>
<!DOCTYPE html>
<html lang="es">
  <head>
    <meta charset="UTF-8">
    <title></title>
    <meta name="description" content="">
    <link rel="icon" href="">
    <link rel="stylesheet" href="">
  </head>
  <body>
    <?php //var_dump($call);?>
    <?php echo $call->reservations[0]->guest;?>
  </body>
</html>

En conclusión mi problema era que no avía yo creado los datos de ejemplo en el sanbox, por ello no avía podido acceder a los elementos, las credenciales estaban bien, ya después de a ver ingresado registros pude consultarlos.

Muchas gracias por su ayuda.

1voto

Peter comentado

Gracias por compartir la solución.

Saludos.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta