Integraciones

Claves API, widget de reserva y alcances

Claves API

Una clave API permite que otro sitio web o programa se comunique con su cuenta de FullClass. Necesita una para poner el widget de reserva en su propio sitio web, o para conectar una herramienta como Zapier. Si solo usa su página de reservas de FullClass, no la necesita. Hay dos tipos, y van en sitios distintos.

Prefijo Dónde se usa Cómo se protege
pk_
Pública
Navegadores, el widget de reserva, inserciones y aplicaciones móviles. La limitan sus alcances (lo que puede hacer) y una lista de orígenes permitidos (qué sitios web pueden usarla). Es segura en el código de su sitio web siempre que ambos sean estrictos.
sk_
Secreta
Solo en código de servidor. Trátela como una contraseña. No la ponga nunca en el código de un sitio web, repositorios de código públicos, capturas de pantalla, tickets de soporte ni creadores de sitios web. Una clave secreta tiene acceso completo, salvo que elija Restringido al crearla y marque solo lo que puede hacer. Elija eso para una clave que pegue en otro servicio.
  • Cree y revoque claves en Configuración → Claves API.
  • Cree claves nuevas cuando cambie una agencia, un proveedor o alguien del personal.
  • Cada clave muestra cuándo se usó por última vez, así puede detectar las claves que nadie necesita.
Seguridad de las claves. Una clave pk_ está hecha para verse. Está en el código fuente de su página, y la limitan sus alcances, así que concédale solo lo que necesita su sitio web. También vale la pena fijar una lista de orígenes permitidos, pero sepa lo que hace. Impide que otro sitio web use su clave en un navegador. No impide que alguien use la clave desde su propio software, porque un programa que no es un navegador no envía el origen que comprobamos. Ningún ajuste hace segura una clave sk_ en un navegador.

Widget de reserva

El widget pone su página de reservas completa, con el pago, dentro de su propio sitio web. Solo lo necesita si quiere que los clientes reserven sin salir de su sitio. Pase esta parte a la persona que lleva su web. Añade un contenedor, carga el script y lo inicia con una clave pública:

<div id="booking-widget"></div>
<script src="https://app.fullclass.io/sdk/v1/booking.min.js"></script>
<script>
  FullClassBooking.init({
    apiKey: "pk_your_public_api_key",
    container: "#booking-widget"
  });
</script>
  • Idioma: el widget usa el idioma de su página de reservas, definido en Configuración → Widget de reserva. No hay que añadir nada al código. Para dejar una inserción en otro idioma, añada data-fullclass-locale="en" (o locale: "en" en init).
  • Una categoría por página: si cada actividad tiene su propia página en su sitio, abra Configuración → Categorías y haga clic en Copiar código del widget junto a la categoría. Péguelo dentro del <div> del widget en esa página, junto a data-fullclass-apikey. Ese widget muestra entonces solo esa categoría y oculta las pestañas de categorías.
  • Personalización: idiomas integrados, sus propias palabras para cualquier texto, colores del tema, más de 100 propiedades CSS personalizadas, y sus propias pantallas de carga, de lista vacía y de error.
  • Modo simple: pase injectStyles: false para mantener la estructura del widget sin nada de su CSS, así se aplican los estilos de su sitio.
  • Control desde código: el código de su página puede abrir la compra de tarjetas regalo, o el formulario de reserva de una clase concreta.
  • Orígenes permitidos: indique el origen exacto, con protocolo, subdominio y puerto. https://www.example.com es un origen distinto de https://example.com, así que indique los dos si usa los dos. Para la clave del código de inserción ya preparado, el sitio más rápido para hacerlo es Configuración → Widget de reserva, justo debajo del código. Si se equivoca, el widget deja de cargarse para sus clientes. Para deshacerlo, vacíe el campo y guarde.

Alcances y funciones de la API

Los alcances son los permisos de una clave. Deciden lo que puede hacer la clave. Conceda a cada clave solo lo que necesita. Esta parte es sobre todo para la persona que lleva su web.

Alcance Qué permite
events:read Listar eventos y leer los detalles de un evento.
bookings:write Crear reservas nuevas. Reservar a nombre de un cliente existente (purchaser_type: account) también necesita una clave secreta.
bookings:read Leer los detalles de reservas existentes (desde código de servidor).
bookings:cancel Cancelar una reserva. Con una clave pública, la solicitud también debe enviar el cancellation_token de la reserva.
customers:write Registrar fichas de cliente.
giftcards:read Consultar el saldo o las clases restantes de una tarjeta regalo.
giftcards:write Comprar tarjetas regalo.

La API pública puede listar eventos y leer sus detalles. Puede obtener exenciones y complementos, y crear, leer y cancelar reservas. También puede crear y registrar clientes, comprobar códigos promocionales, y consultar o comprar tarjetas regalo. No hay ninguna API para usar una tarjeta regalo. El pago acepta el código dentro de la reserva, y el personal usa Aplicar tarjeta regalo en la página de la reserva.

Idempotencia. Envíe siempre una clave de idempotencia cuando su código de servidor cree reservas, así un reintento no reserva dos veces.

Tarjetas regalo que vendió en otro sitio

Algunos estudios cobran un bono de clases o una tarjeta regalo fuera de FullClass, por ejemplo con un enlace de pago de Stripe, un terminal de tarjetas o una transferencia bancaria. Su servidor puede entonces pedir a FullClass que emita la tarjeta sin volver a cobrar al comprador. Envíe una petición a /v1/giftcards con un bloque external_purchase en lugar de los datos de la tarjeta:

{
  "type": "class_pass",
  "class_pass_count": 5,
  "purchased_by_email": "[email protected]",
  "external_purchase": {
    "reference": "pi_3RxAbCdEfGhIjKlM",
    "amount_cents": 8000
  }
}
  • Solo con clave secreta. Esto emite una tarjeta de pago sin cobrar nada, así que una clave pk_ se rechaza. Llámelo desde su servidor, nunca desde una página web.
  • La referencia evita duplicados. Ponga en reference el identificador del pago en su propio sistema. Si el mismo llega dos veces (un webhook se reenvía, o un script se ejecuta de nuevo), la segunda llamada se rechaza y no se emite una segunda tarjeta.
  • Usted fija el precio. amount_cents es lo que cobró realmente. No se compara con el precio de su bono de clases, así que puede vender el mismo bono a más de un precio.
  • Envíe el importe con impuestos incluidos. Envíe el importe total que pagó el comprador. Para un bono de clases, FullClass lo trata como si incluyera el impuesto que cobra por los bonos, a los tipos de la configuración de sus bonos de clases.
  • Cuenta como una venta. El comprador recibe los correos habituales con el código y el recibo, y usted recibe el aviso de nueva venta. En sus informes, la tarjeta aparece como Pagada fuera de FullClass, no como un regalo.