7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. Shopify

Crear una Sencilla App para Shopify

Scroll to top
Read Time: 14 mins

Spanish (Español) translation by Eva Collados Pascual (you can also view the original English article)

Shopify es una plataforma para eCommerce que está experimentando un crecimiento muy rápido, añadiendo miles de comerciantes cada mes.

Lo mejor de la plataforma Shopify es que la misma plataforma ha proclamado que no están preocupados en resolver cada problema de sus vendedores.  Por el contrario, han creado sus APIs y una Tienda App de forma que desarrolladores independientes puedan construir (y cobrar por ello) funciones que deseen los comerciantes.

Esto significa que hay opciones para extender y personalizar Shopify mediante Apps creadas ex profeso para Shopify, ya sea porque tengas tu propia tienda Shopify que desees mejorarla o porque estés pensando en crear un negocio basado en una app de Shopify.

Además las apps de Shopify no tienen porque ser complicadas. Una app de Shopify es simplemente una pieza de software que se integra con la REST APIs de Shopify. Shopify crea herramientas y kits de software de desarrollo (SDKs) disponibles para construir las apps con mayor facilidad, pero cualquier programa se puede convertir en una app de Shopify con un poco de integración.

En este artículo, te voy a enseñar como crear una sencilla app para Shopify, y haré algunas cosas mediante el "método duro" para mostrarte el funcionamiento de las APIs y las apps de Shopify. Asegúrate de revisar los recursos al final para encontrar las mejores fórmulas para ahorrarte esfuerzos.

Comparativa Entre Apps Privadas y Apps Públicas

Antes de empezar, hay un concepto importante relativo a Shopify que deberías aprender. Tu elección determinará todo el desarrollo de la app que realices.

En Shopify existen dos tipos de apps:

  1. Apps Públicas, las cuales funcionan con múltiples tiendas, y pueden ser incluidas en los listados de la Tienda de Apps de Shopify, y tienen acceso a la mayoría de las APIs.
  2. Apps Privadas, las cuales funcionan en una única tienda, no son listadas en la Tienda de Apps de Shopify, no pueden ser incluidas en el panel de Administración de Shopify, y tienen un acceso limitado a las APIs.

La gran diferencia técnica entre las dos radica en que las apps públicas son autentificadas mediante OAuth, lo cual requiere más ajustes de configuración y un confuso "ajuste de nuevo usuario". Las apps privadas se autentifican empleando dos claves para una sola tienda, las cuales funcionan como el nombre de usuario y contraseña para esa app en concreto.

Como la autentificación de la tienda será una de las primeras cosas que tendrás que hacer, tomar la decisión más adecuada al inicio es muy importante.

Para evitar complicaciones, vamos a crear nuestra app como una app privada. Así no tendremos que preocuparnos sobre la configuración de OAuth y las complicaciones que ésta conlleva.

Crear una App para Etiquetar a Clientes Recurrentes 

En nuestro ejemplo de app para Shopify, vamos a crear una app de línea de comandos que ayudará a que una tienda pueda identificar a los usuarios que hayan comprado en más de una ocasión.  Lo conseguirá empleando la API de Clientes (Customer API).

Después esta app etiquetará estos clientes reincidentes de forma que los podamos encontrar con facilidad desde el panel de administración de Shopify. Los scripts de la línea de comandos como éste son estupendos para automatizar y realizar funciones administrativas. Normalmente se programan para ejecutarse automáticamente, así que no existe realmente un UI o datos proporcionados por los usuarios.

También usaremos Ruby para esta app. Mientras que puedes usar cualquier lenguaje que admita las solicitudes HTTP REST, el propio Shopify usa Ruby y Ruby on Rails, y conserva las librerías oficiales para Ruby.

1. Registra Tu Nueva App Con Shopify

El primer paso para crear una app es registrarla en Shopify. Desde el momento en que esta es una app privada, nos dirigiremos a nuestra tienda en Shopify, iremos a la sección de Apps, pulsaremos sobre Private Apps, y después haremos clic en Create a New Private App.

Setting up the Shopify appSetting up the Shopify appSetting up the Shopify app

El nombre de la app solo se usa como referencia para nosotros, y no se emplea en absoluto dentro del código.

Una vez creada, obtendremos algunas claves de API para usar.

  • clave API: es el identificador de la API y funciona a modo de nombre de usuario para la API.
  • Contraseña de la app: esta es la contraseña secreta que autentifica nuestra app.
  • Secreto compartido: esto lo emplea Shopify para firmar algunas APIs. Esto no lo vamos a usar en esta app.

(Puedes suscribirte al programa Shopify Partner, el cual te proporciona la habilidad de crear apps públicas y tiendas de desarrollo gratuitas. Lo recomiendo efusivamente para todos, incluso aunque únicamente estés planeando integrarlo con solo una tienda de Spotify, ya que te permitirá comprobar tu app de forma externa, sin interferir con tu tienda pública.)

Con la app ya registrada, podemos empezar a escribir código.

2. Ajustando las Gemas de Ruby

Siendo este un proyecto Ruby, queremos empezar creando un Gemfile que ennumera todas las RubyGems que usaremos. Dos importantes son shopify_api y dotenv.

La gema shopify_api incluye clases ActiveResource para la API de Shopify. Esto significa que no tienes porque preocuparte de escribir código para las peticiones y respuestas HTTP; la librería realizará las llamadas de la API por ti y devolverá tus objetos Ruby con los que trabajar. Shopify proporcionará también las librerías que no sean de Ruby; comprueba los recursos al final de este artículo indicados para tu lenguaje.

La gema dotenv es importante porque nos permitirá crear un archivo especial (.env) que contiene la configuración de nuestra app y que se carga en la app cuando ésta se ejecuta. El propósito de esto es que podamos publicar la app y su código sin incluir datos sensibles como la clave y la contraseña de nuestra API.

Este archivo .env define varias variables que serán exportadas a nuestra app como parte del entorno de ejecución (accesible en el ENV de Ruby).

Ahora que las gemas ya están configuradas, pueden ser instaladas mediante el paquete con bundle install.

3. Interfaz de la Línea de Comandos

La forma en la que querríamos que funcionase esta app es el siguiente: un usuario puede ejecutar el script en la línea de comandos como bundle exec ruby tag_customers.rb, y éste automáticamente etiquetará a todos los clientes reincidentes en Shopify.

Comencemos creando un script vacío y cargando las librerías que necesitamos.

Observa como llamamos Dotenv.load directamente. Esto exporta la variable desde nuestro archivo .env de forma que en adelante podamos usar esta configuración.

También vamos a crear una sencilla clase para sostener la lógica y después, al final, invocaremos esta clase  para ejecutarla usando la característica de Ruby __FILE__ == $PROGRAM_NAME.

4. Conexión de la API de Shopify

Ahora que ya tenemos todo lo necesario para ejecutar nuestra app, añadamos una conexión con la API de Shopify.  Desde el moemnto en que todo está basado en la tienda, la recogida de sus datos funciona genial como prueba para la conexión. Para esto, necesitamos hacer unas pocas cosas: 

  1. Configurar la shopify_api para usar nuestra tienda Shopify y la autentificación.
  2. Hacer la solicitud de la API a Shopify.
  3. Comprobar los resultados.

Cuando trabajamos con apps privadas en shopify_api, podemos configurar la autentificación de nuestra tienda en la URL base mediante HTTP Básico.  La URL base se construye así:

  • https
  • nombre de usuario HTTP Básico, el cual se corresponde con la clave API de nuestra app
  • contraseña HTTP Básico, es la contraseña de nuestra app
  • el subdominio SHOP_NAME.myshopify.com, que es único para cada tienda
  • subdirectorio /admin, en donde residen todas las APIs

Si colocamos todo esto junto, obtenemos los siguiente:

https://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb@example.myshopify.com/admin

Para configurar esto en nuestro script, hemos ensamblado esta URL base y la hemos asignado a la clase ShopifyAPI::Base.

Advierte como se usa ENV nuevamente para conservar los datos sensibles fuera del código actual. Esto también permite a los usuarios cambiar la variable SHOP, lo cual es útil si tienes más de una tienda en la que quieras ejecutar este script. 

Finalmente, añadamos un método para capturar los detalles de la tienda desde Shopify.

Empleando ShopifyAPI::Shop.current, permitiremos a la shopify_api lo siguiente:

  1. construir una solicitud HTTP para los datos de la tienda en https://123456:abcdef@your-shop-name.myshopify.com/admin/shop.json
  2. obtener la respuesta 
  3. si es exitosa, convierte la respuesta JSON en un objeto ShopifyAPI::Shop

Si la respuesta obtuvo éxito, nuestro script mostrará el resultado final en la línea de comando. Si existía un error, por ejemplo en la autentificación o en la API, entonces shopify_api crearía una excepción y cerraría nuestra app con un mensaje de error.

5. Listado de Clientes

Ahora que funciona la conexión, podemos usar otra API para capturar una lista de clientes de la tienda. Una vez más, shopify_api consigue que esto resulte fácil:

En este caso queremos todos los clientes de la tienda, así que usaremos ShopifyAPI::Customer.all, que en la trastienda invocará la Customer API (API de Clientes) de Shopify y devolverá una cadena de objetos de clientes. 

6. Etiquetar a los Clientes Reincidentes

Como solo queremos etiquetar a los clientes que han realizado más de un pedido, necesitamos añadir otro método para etiquetar a los clientes reincidentes.

Si observas los objetos Customer o miras en los documentos de la API de Shopify, verás que Shopify tiene un campo llamado orders_count que ya registra cuantos pedidos ha realizado cada cliente.  Esto son noticias estupendas para nuestra app porque en los sistemas de eCommerce normalmente hay miles o millones de pedidos. Si quisiéramos buscar a los clientes con varios pedidos, necesitaríamos descargar y contar todas esas órdenes.  Desde el momento en que Shopify dispone de este campo, podemos centrarnos por completo en los Clientes.

Siempre que estés trabajando con una API, te será útil leer la documentación de la API y ver los datos que podrias obtener de la misma. A veces encontrarás una forma mejor de conseguir los que estás intentando hacer.

Añadamos un método para comprobar el orders_count (cantidad de órdenes) y realizar el etiquetado.

Estas son las tripas de la app, vamos a descomponerla parte a parte. 

Lo primero de todo, creamos una cadena de tagged_customers (clientes etiquetados). Si saltas al final del método, podrás ver que eso es lo que nos es devuelto. Queremos que nuestra app nos permita saber qué clientes están etiquetados como clientes reincidentes, de forma que podamos hacerles un seguimiento y descubrir cualquier problema potencial posterior (p. ej. ser omitido).

Proseguimos invocando nuestro método customers de antes, el cual usa la API de Shopify para procesar todos los clientes de la tienda.

Inmediatamente empezamos a repetirlo sobre cada registro de cliente que nos devuelve (each).

Desde el momento en que shopify_api ha convertido el JSON del cliente en un objeto Ruby, podremos comprobar customer.orders_count y ver cuantas órdenes han realizado. Solo nos interesan los clientes que han realizado más de un pedido, así que usando el if condicional podremos ignorar a los clientes con 0 o 1 órden.

Para los clientes reincidentes, estamos añadiendo la etiqueta "repeat" y después invocamos el método save en el objeto Ruby.  Este método, a través de shopify_api, realiza la llamada a la API para actualizar los registros de clientes.

Alrededor del etiquetado y llamada save existe otra condicional. Antes de que gastemos nuestro tiempo y llamemos a la API para actualizar los clientes con una nueva etiqueta, deberíamos comprobar si ya tienen la etiqueta "repeat" asignada.  Si es así, podríamos obviarlos y proceder con el siguiente cliente. Limitar las llamadas de la API únicamente a grabaciones que necesitan ser actualizadas hará que nuestra app se ejecute más rápidamente y además evitará que supere el límite de llamadas a la API de Shopify.

Finalmente, para los clientes reincidentes, los incluimos en la cadena de tagged_customers que hemos creado al principio para que el método nos la devuelva.

7. Invocar la Clase Desde la Línea de Comandos

Todo lo que queda por hacer es invocar nuestro nuevo tag_repeat_customers cuando nuestro script se ejecute.  Incluso añadimos aquí un poco de contenido para imprimir en la línea de comandos cuantos clientes reincidentes han sido etiquetados.

Código Final


App Shopify Completa para Etiquetar a los Clientes

En escasas 50 líneas de código, hemos creado una app privada de Shopify que encuentra clientes que hayan realizado más de un pedido y los etiqueta con "repeat".  Contando con nuestra parte test_connection, estamos usando tres APIs Shopify individuales. 

  • GET Shop
  • GET Customers
  • PUT Customers

Próximas Mejoras 

Este script es genial y resuelve fácilmente un problema, pero siempre queda espacio para mejoras.

Una mejora destacada sería convertir el script en una app que fuese ejecutada en un servidor. La interfaz podría tener un botón para ejecutar los métodos de etiquetado, o el etiquetado podría realizarse de forma automática. La app web podría incluso registrar qué clientes tienen la etiqueta añadida cada vez, y podríamos navegar a través de ejecuciones pasadas para ver las adquisiciones de los clientes.

Si decides iniciar este camino, asegúrate de consultar shopify_app project. Este proyecto es una librería que recoge la gema de shopify_app y la íntegra en Ruby on Rails junto con OAuth. Es la estructura básica que querrías usar si te propusieses crear una app de Shopify pública basada en Rails.

Otra mejora a la app podría ser el etiquetado de los clientes basándonos en qué contienen sus pedidos. Por ejemplo, podrías querer etiquetar a los clientes que compraron un producto particular o que han gastado una determinada cantidad.

 Esta mejora requeriría la obtención de las ordenes de pedidos y los elementos adquiridos por cada cliente, lo que la convertiría en una app más compleja debido al volumen de datos a procesar. 

Librerías de Desarrollo y Recursos para Shopify

Shopify mantiene varias librerías diferentes para su API, y existen además algunas no oficiales, librerías de terceras partes que también puedes usar. Aquí tienes una pequeña selección de ellas:

Ahora deberías tener una mejor comprensión sobre como construir una app para Shopify. Has visto como conectar con Shopify desde Ruby usando shopify_api y la autentificación de la App Privada. También has aprendido a comprobar la conexión con una llamada a la API así como una técnica para limitar el uso de tu API. Y por último, has aprendido lo fácil que es actualizar los objetos Shopify y disponer de vuelta a Shopify de dichos cambios. 

Aunque la app es sencilla en su concepto, todas estas técnicas implican a apps más extensas y complejas. 

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.