> Faqs > Cómo activar los hook de stripe en desarrollo de una aplicación Laravel con Homestead

Cómo activar los hook de stripe en desarrollo de una aplicación Laravel con Homestead

Tengo una aplicación en modo desarrollo, basada en el framework Laravel. La desarrollo usando Homestead, la máquina virtual oficial de Laravel para correr aplicaciones en desarrollo.

Estoy usando el API de Cashier para Stripe y necesito hacer pruebas en local. Tengo un problema con los hook de Stripe, que no sé cómo hacer que me lleguen a local, para que se activen los procesos que se realizan en el sitio de stripe en mi base de datos local.

Como tengo el sitio en Homestead no sé cómo conseguirlo, ya que no está siquiera en mi ordenador local.

¿Cómo activo los Hook de stripe en mi sitio web corriendo en una máquina homestead?

Respuestas

El proceso para activar los webhooks en Homestead requiere unos cuantos pasos, pero es bastante sencillo, porque la mayoría son simples comandos que debes lanzar entrando en la máquina virtual.

Haces SSH contra la máquina virtual

Te metes en la carpeta donde tienes homestead instalado y lanzas el comando para conectarte por ssh con la máquina virtual.

cd Homestead
vagrant ssh

Por supuesto, la máquina virtual debe estar iniciada y ejecutándose. Si no, tienes que hacer antes el arranque de la máquina con vagrant.

vagrant up

Abres un túnel ssh con Ngrok

Luego tienes que abrir una conexión por túnel ssh con el sitio web que estás desarrollando, para lo cual tienes ngrok instalado ya de casa en Homestead.

El comando para levantar el túnel ssh es este:

share example.test

Por supuesto tendrás que cambiar "example.test" por el nombre del sitio que quieras que se levante a través del túnel ssh. Ese nombre del sitio es el mismo que diste de alta en la configuración de Homestead (archivo "Homestead.yaml" que tienes en la carpeta "Homestead")

Configuras el authoken de Ngrok

Aquí podría pedirte que des de alta un "authoken" que tienes que obtener en el panel de control de tu usuario de Ngrok. Si es así te saldrá un mensaje con este texto:

You must signup for ngrok and add your authtoken to perform this operation.

Si no has hecho este proceso antes y te pide que crees ese authtoken, el proceso es bastante sencillo.

Te das de alta un usuario en el servicio de Ngrok:

https://dashboard.ngrok.com/signup

Una vez creado el usuario apareces en el panel (dashboard) de Ngrok. Aquí tienes que ir a la sección "Your Authtoken", que encuentras en el navegador vertical de la parte izquierda.

Dentro de la página que apareces, encuentras escrito el Authtoken y el procedimiento para configurarlo.

Escribir el Authtoken en la configuración de Ngrok de Homestead

Aquí tienes que estar dentro de la máquina Homestead (comando vagrant ssh). Entonces te metes en la carpeta ".ngrok2", que está en el directorio donde apareces cuando haces la conexión ssh.

cd ~/.ngrok2

Aquí debes encontrar un archivo llamado "ngrok.yml". Tendrás que editar el archivo con tu editor de línea de comandos preferido.

vim ngrok.yml

O si lo prefieres...

nano ngrok.yml

Luego tienes que introducir en el archivo este código:

authtoken: XXXX_ESTE_ES_TU_AUTHTOKEN

Lógicamente, pondrás el valor de Authtoken que has copiado de la página de Ngrok. En el propio dashboard de Ngrok te dan el código exacto que debes colocar en el ngrok.yml.

Una vez que has configurado el authtoken ya no te debería dar problemas hacer el túnel ssh

share example.test

Al levantarse el túnel SSH con Ngrok nos mostrará la URL donde está el proyecto que estamos compartiendo públicamente.

La dirección pública será algo como esto:

http://0000.000.000.000.ngrok.io

Crear el webhook en el panel de stripe con la URL del túnel SSH

Ahora tienes que hacer que el dashboard de stripe (el que usas para tu aplicación en modo "datos de prueba") se entere de la url donde está el webhook de Laravel configurado con Cashier.

La manera más cómoda de hacer esto es mediante un comando de Artisan. Ese comando Artisan le tienes que indicar cuál es la URL donde se encuentra público tu sitio web, es decir, la URL que se ha generado al levantar el túnel SSH.

php artisan cashier:webhook --url "http://0000.000.000.000.ngrok.io/stripe/webhook"

Ojo en el anterior comando, porque vas a tener que sustituir http://0000.000.000.000.ngrok.io por la URL que se ha generado al compartir tu proyecto con el túnel SSH.

Copiar la clave del webhook en el archivo .env

Te queda un último paso que consiste en escribir la clave secreta del webhook en el archivo de configuración de tu aplicación, que en laravel está en el .env.

Para obtener ese "secreto de firma" del webhook tienes que hacer estos pasos:

  1. Entrar en el dashobard de stripe
  2. Ir a la zona de desarrolladores (el enlace lo tienen en la esquina superior derecha actualmente)
  3. Ir a la sección "Webhooks", que puedes entrar con el navegador vertical de la izquierda
  4. Abir las propiedades del webhook que se ha creado
  5. Pulsar el enlace "Revelar" que hay al lado del texto "Secreto de firma"

Ese código lo tienes que pegar en tu aplicación de Laravel, en el .env, creando una variable como esta:

STRIPE_WEBHOOK_SECRET=whsec__tu_webhook_stripe_secreto_de_firma

Probar el webhook

Una vez tienes todo esto puedes probar el webhook con el enlace "Enviar un evento de prueba". Todo deberia ir bien.

Si va bien, entonces simplemente vas a tener que experimentar ya tu propia aplicación, para ver si se comunica bien con stripe.

Ten en cuenta que el túnel ssh tiene una duración limitada, si es que usas la parte gratuita de ngrok, por lo que este proceso de crear el webhook lo tienes que hacer cada vez que caduque la URL de tu túnel SSH.

Si no te funciona alguna cosa, tendrías que ver las recomendaciones de esta página Cómo solucionar un error 403 en los webhooks de Stripe usando Laravel Cashier

Espero que tengas éxito en tu proyecto!!

Julian
499 17 39 31