Clientes que han iniciado sesión en su tienda online

Clientes que han iniciado sesión en su tienda online

Copiar página

Active un webhook solo para clientes que han iniciado sesión en su tienda online y reciba en Shopify Flow el ID de cliente verificado por Shopify.

Active un webhook desde su propia tienda online y sepa qué cliente lo ha enviado. Un formulario de pedido al por mayor, un botón de repetición de pedido en la página de una cuenta B2B o un formulario de solicitud para clientes que hayan iniciado sesión pueden iniciar un flujo de trabajo de Shopify Flow, y dicho flujo de trabajo recibe el ID del cliente que ha iniciado sesión. Shopify firma ese ID, de modo que nadie pueda hacerse pasar por otro cliente.

Esto se basa en la URL del proxy de la aplicación; consulte CORS, la URL del proxy de la aplicación y las llamadas del navegador.

Configúrelo

  1. Abra el webhook y vaya a «Configuración avanzada».
  2. En «Configuración de URL», active la opción «Utilizar URL de proxy de la aplicación». La URL del webhook se encuentra ahora en el dominio de su tienda, por ejemplo, https://your-store.com/apps/webhooks/abc123.
  3. En «¿Quién puede llamar a este webhook?», seleccione una de las tres opciones:
Opción URL del proxy de la aplicación URL directa de la aplicación
Cualquier persona que disponga de la URL Funciona para todo el mundo Obras
Únicamente a través del dominio de su tienda Funciona para todos, incluidos los invitados Rechazado con el código 403
Solo los clientes que hayan iniciado sesión en su tienda Funciona para los clientes que hayan iniciado sesión; los visitantes reciben el error 401. Rechazado con el código 403
  1. Guardar. La configuración se aplicará a la próxima solicitud.
Configuración avanzada, Configuración de URL: la opción «Utilizar la URL del proxy de la aplicación» está activada y la opción «Quién puede llamar a este webhook» está configurada en «Solo los clientes que hayan iniciado sesión en su tienda»
Esta opción se encuentra en «Configuración avanzada» > «Configuración de URL», justo debajo del interruptor de la URL del proxy de la aplicación.

Qué comprueba la aplicación

Cada solicitud que se realiza a través de la URL del proxy de la aplicación incluye una firma de Shopify. La aplicación comprueba, en este orden:

  • La firma. Una solicitud que no incluya una firma válida de Shopify se rechaza con el código de error 401. Nadie puede falsificarla, ya que Shopify la genera utilizando el secreto de su aplicación.
  • Su tienda. Se rechaza con el código 403 una solicitud firmada para otra tienda.
  • El cliente que ha iniciado sesión. Con la opción «Solo clientes que hayan iniciado sesión en su tienda», cualquier solicitud que no incluya un cliente que haya iniciado sesión se rechaza con el código de error 401 (customer_login_required). El ID del cliente procede de la firma, nunca del cuerpo de la solicitud.
  • La URL directa. Independientemente de la restricción que se aplique, la URL directa de la aplicación devuelve un código de error 403 (proxy_required), por lo que nadie puede eludir estas comprobaciones.

Una solicitud rechazada nunca llega a Shopify Flow y no se contabiliza en su plan.

Lo que recibe Shopify Flow

El «Webhook Trigger» y el «Sync Webhook Trigger» cuentan con un campo «customerId»: el identificador numérico del cliente que ha iniciado sesión, por ejemplo, 7350001. Este campo aparece vacío en el caso de los usuarios invitados y en todas aquellas solicitudes que no se hayan realizado a través de la URL del proxy de la aplicación. Sus campos asignados se reciben como de costumbre; consulte Asignación de la carga útil y variables de flujo.

Haga la llamada desde su tienda online

La solicitud debe proceder de una página de su tienda mientras el cliente haya iniciado sesión, de modo que se realice a través del dominio de su tienda. Copie la URL del webhook desde la aplicación: Shopify le permite modificar la ruta del proxy, por lo que la suya puede diferir del ejemplo. Este fragmento de código, situado en una sección del tema, envía la ubicación de la empresa para la que el cliente B2B está realizando la compra:

sections/wholesale-request.liquidhtml
<script>
  fetch('/apps/webhooks/abc123', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      companyLocationId: 'gid://shopify/CompanyLocation/{{ customer.current_location.id }}'
    })
  })
</script>

Asigne el campo 1 a companyLocationId, de modo que el flujo de trabajo reciba la ubicación como fieldOne.

Registre al cliente en Shopify Flow

Shopify Flow puede acceder a toda la información sobre el cliente, por lo que la comprobación debe incluirse en el flujo de trabajo:

  1. Activador: Activador de webhook de Workflow Webhooks. Si dispone de varios webhooks, añada una condición: el ID del webhook es igual al ID que se muestra en la aplicación.
  2. Obtenga los datos del cliente mediante la consulta id:{{customerId}}. Shopify Flow carga la información del cliente que ha iniciado sesión, incluidas las etiquetas y los roles de la empresa.
  3. Condición: el cliente tiene la etiqueta wholesale y uno de los perfiles de contacto de su empresa tiene asignado un rol cuyo ID de ubicación de la empresa es igual a fieldOne y cuyo rol es Ordering only o Location admin.
  4. En ese caso: realice las acciones pertinentes, por ejemplo, cree un pedido preliminar para esa ubicación. De lo contrario: deténgase o responda a la Tienda online con un Respuesta síncrona, de modo que la página pueda explicar al cliente el motivo.

Es bueno saberlo

  • La URL del proxy de la aplicación requiere que se pueda acceder a su tienda online. En el caso de una tienda online protegida con contraseña, solo responde una vez introducida la contraseña de la tienda online.
  • Los visitantes reciben el mensaje de error 401, por lo que debe mostrarse un enlace de inicio de sesión en esa página.
  • El historial muestra el ID de cliente de cada solicitud, y al volver a enviarla, se reenvía dicho ID.
  • Cuando un cliente solicita que se borren sus datos, se eliminan las entradas del historial que haya enviado.