Clientes que iniciaram sessão na sua loja virtual

Clientes que iniciaram sessão na sua loja virtual

Copiar página

Restrinja um webhook a clientes com sessão iniciada na sua loja virtual e receba no Shopify Flow o ID do cliente verificado e assinado pelo Shopify.

Ative um webhook a partir da sua própria loja virtual e saiba qual o cliente que o enviou. Um formulário de pedido por grosso, um botão de repetição de pedido numa página de conta B2B ou um formulário de pedido para clientes com sessão iniciada podem iniciar um fluxo de trabalho do Shopify Flow, e o fluxo de trabalho recebe o ID do cliente que está com sessão iniciada. O Shopify assina esse ID, para que ninguém possa fazer-se passar por outro cliente.

Isto baseia-se no URL do proxy da aplicação; consulte CORS, o URL do proxy da aplicação e as chamadas do navegador.

Configure-o

  1. Abra o webhook e aceda às «Definições avançadas».
  2. Na secção «Definições de URL», ative a opção «Utilizar URL de proxy da aplicação». A URL do webhook encontra-se agora no domínio da sua loja, por exemplo, https://your-store.com/apps/webhooks/abc123.
  3. Na secção «Quem pode aceder a este webhook», selecione uma das três opções:
Opção URL do proxy da aplicação URL direta da aplicação
Qualquer pessoa que tenha o URL Funciona para todos Obras
Apenas através do domínio da sua loja Funciona para todos, incluindo os convidados Recusado com o código 403
Apenas os clientes que tenham iniciado sessão na sua loja Funciona para clientes que tenham iniciado sessão; os visitantes recebem o erro 401 Recusado com o código 403
  1. Guardar. A configuração aplica-se ao próximo pedido.
Definições avançadas, Definições de URL: a opção «Utilizar URL de proxy da aplicação» está ativada e a opção «Quem pode aceder a este webhook» está definida como «Apenas clientes com sessão iniciada na sua loja»
Esta opção encontra-se em «Definições avançadas» > «Definições de URL», logo abaixo do botão de ativação/desativação do URL do proxy da aplicação.

O que a aplicação verifica

Cada pedido enviado através do URL do proxy da aplicação inclui uma assinatura da Shopify. A aplicação verifica, por esta ordem:

  • A assinatura. Um pedido sem uma assinatura válida do Shopify é recusado com o código de erro 401. Ninguém pode falsificá-la, porque o Shopify a gera com o segredo da sua aplicação.
  • A sua loja. Um pedido assinado em nome de outra loja é recusado com o código 403.
  • O cliente com sessão iniciada. Com a opção «Apenas clientes com sessão iniciada na sua loja», um pedido sem um cliente com sessão iniciada é recusado com o código de erro 401 (customer_login_required). O ID do cliente provém da assinatura, nunca do corpo do pedido.
  • O URL direto. Independentemente da restrição aplicada, o URL direto da aplicação devolve um código de erro 403 (proxy_required), pelo que ninguém pode contornar estas verificações.

Um pedido recusado nunca chega ao Shopify Flow e não é contabilizado no seu plano.

O que o Shopify Flow recebe

O «Webhook Trigger» e o «Sync Webhook Trigger» dispõem de um campo «customerId»: o ID numérico do cliente que iniciou sessão, por exemplo, 7350001. Este campo fica vazio no caso de visitantes e em todas as solicitações que não tenham sido enviadas através do URL do proxy da aplicação. Os seus campos mapeados são recebidos como habitualmente; consulte Mapeamento da carga útil e variáveis de fluxo.

Faça a chamada a partir da sua loja virtual

O pedido tem de ser enviado a partir de uma página da sua loja enquanto o cliente estiver com a sessão iniciada, para que passe pelo domínio da sua loja. Copie o URL do webhook da aplicação: o Shopify permite-lhe alterar o caminho do proxy, pelo que o seu pode diferir do exemplo. Este trecho de código, inserido numa secção do tema, envia a localização da empresa para a qual o cliente B2B está a efetuar a 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>

Mapeie o Campo 1 para companyLocationId, de modo a que o fluxo de trabalho receba a localização como fieldOne.

Registe o cliente no Shopify Flow

O Shopify Flow consegue aceder a todas as informações sobre o cliente, pelo que a verificação deve ser integrada no fluxo de trabalho:

  1. Gatilho: Gatilho de Webhook da secção Workflow Webhooks. Caso tenha vários webhooks, adicione uma condição: o ID do webhook é igual ao ID apresentado na aplicação.
  2. Obtenha os dados do cliente através da consulta id:{{customerId}}. O Shopify Flow carrega o cliente que está a iniciar sessão, incluindo tags e funções na empresa.
  3. Condição: o cliente possui a etiqueta wholesale e um dos perfis de contacto da sua empresa tem uma atribuição de função cujo ID de localização da empresa é igual a fieldOne e cuja função é Ordering only ou Location admin.
  4. Nesse caso: as suas ações, por exemplo, criar um pedido provisório para esse local. Caso contrário: interrompa o processo ou responda à Loja virtual com um Resposta síncrona, para que a página possa explicar ao cliente o motivo.

É bom saber

  • O URL do proxy da aplicação requer que a sua loja virtual esteja acessível. No caso de uma loja protegida por palavra-passe, só responde após a introdução da palavra-passe da loja.
  • Os visitantes recebem o erro 401, pelo que deve apresentar um link para iniciar sessão nessa página.
  • O histórico apresenta o ID do cliente de cada pedido, e uma repetição reenvia-o.
  • Quando um cliente solicita que os seus dados sejam apagados, os registos do histórico que enviou são eliminados.