Como conectar o Paddle ao Shopify Flow

A Paddle é uma plataforma de processamento de pagamentos para produtos digitais e assinaturas. Ela o notifica sobre transações, assinaturas, reembolsos e alterações relacionadas aos clientes. O Workflow Webhooks transforma essa notificação em um gatilho do Shopify Flow, para que sua loja possa reagir a ela: marcar um cliente, adicionar uma nota ao pedido, enviar um e-mail interno, atualizar um metacampo - tudo o que o Shopify Flow permite fazer.

Este guia define todo o fluxo - o Paddle envia, Workflow Webhooks recebe e verifica, Shopify Flow executa - com a assinatura HMAC do Paddle verificada em cada solicitação, de modo que somente o Paddle possa iniciar seu fluxo de trabalho.

O que o senhor pode construir

  • Marque um cliente do Shopify que também tenha uma assinatura do “Paddle”, para que ele veja os preços ou o conteúdo corretos.
  • Envie um e-mail à sua equipe quando uma assinatura for cancelada e o cliente tiver pedidos recentes no Shopify.
  • Registre o plano atual no registro do cliente como um metacampo.

Eventos típicos a serem enviados: transaction.completed, subscription.canceled, adjustment.created (reembolso), customer.updated.

Antes de começar

  • Workflow Webhooks instalado na sua loja do Shopify.
  • Shopify Flow instalado, que está disponível gratuitamente na App Store da Shopify.
  • Uma conta no Paddle com permissão para criar webhooks.

Etapa 1 - Crie o webhook em Workflow Webhooks

  1. Acesse Workflow Webhooks -> Webhooks -> Criar webhook e atribua a ele um nome que você reconheça no Shopify Flow, como Paddle events.
  2. Na seção “Autenticação”, selecione HMAC.
  3. Em “Provedor de assinatura”, selecione “Paddle”. O aplicativo preenche automaticamente o cabeçalho, o algoritmo, o payload assinado e a janela de repetição para você - não há mais nada a configurar.
  4. Deixe o campo “segredo” em branco por enquanto e clique em “Salvar”. Copie a URL do webhook exibida na página.

Consulte Autenticação para conhecer os outros modos de autenticação e Mapeamento de payload e variáveis de fluxo para escolher quais campos serão enviados ao Shopify Flow.

Etapa 2 - Adicione o endpoint no Paddle

No Paddle, abra Ferramentas do desenvolvedor -> Notificações, adicione um destino com a URL que você copiou e selecione os eventos. A chave secreta é exibida no destino.

Como descobrir seu segredo de assinatura do Paddle

A chave secreta do destino da notificação (Paddle -> Ferramentas do desenvolvedor -> Notificações).

A própria documentação do Paddle sobre assinaturas de webhooks contém o texto exato e as capturas de tela referentes à sua conta.

Cole essa chave secreta no campo “Secret” do webhook em Workflow Webhooks e salve. A partir desse momento, todas as entregas do Paddle serão verificadas antes de chegarem ao Shopify Flow.

O que isso verifica

O que Valor
Cabeçalho de assinatura Paddle-Signature
Onde fica a assinatura No valor h1 desse cabeçalho, que contém pares key=value separados por ponto-e-vírgula
O que foi assinado {timestamp}:{body}
Assinatura HMAC-SHA256, codificado em hexadecimal
Data e hora O valor de ts do cabeçalho da assinatura, expresso em segundos do Unix
Proteção contra reprodução As solicitações cujo carimbo de data e hora assinado esteja a mais de 5 minutos do momento atual são rejeitadas
O segredo Utilizado como texto simples. Cole-o exatamente como o remetente o apresenta

Na payload assinada, {body} é o corpo da solicitação em formato bruto, byte por byte, e {timestamp} é o carimbo de data/hora mencionado acima.

Uma solicitação que não atenda a qualquer um desses requisitos é rejeitada com o código de erro 401, é registrada em Histórico e solução de problemas e nunca inicia um fluxo de trabalho.

Etapa 3 - Criar o fluxo de trabalho Shopify Flow

  1. No “Shopify Flow”, crie um fluxo de trabalho e selecione o gatilho “Workflow Webhooks”.
  2. Clique em “Gravar eventos” e, em seguida, envie um evento de teste pelo Paddle (ou use a opção “Enviar teste” em Workflow Webhooks) para que o Shopify Flow aprenda o formato dos seus dados.
  3. Cada webhook de que o senhor possui aciona o mesmo gatilho do Shopify Flow; portanto, adicione uma primeira condição com base no ID do webhook para que esse fluxo de trabalho se limite apenas ao Paddle. O ID é exibido na página do webhook.
  4. Adicione suas ações - marque um cliente, adicione uma nota, envie um e-mail interno, atualize um metacampo.
Shopify Flow
Em Shopify Flow, selecione “Select a trigger”, acesse Workflow Webhooks e escolha “Webhook Trigger”.
Condição do Shopify Flow: o ID do webhook é igual ao ID de um webhook
O primeiro passo de todo fluxo de trabalho: uma condição relacionada ao ID do webhook, para que o fluxo de trabalho seja executado apenas para esse webhook.
O fluxo de trabalho finalizado: Gatilho de webhook, uma condição baseada no ID do webhook e, em seguida, o envio de um e-mail interno na ramificação “Verdadeiro”
O fluxo de trabalho finalizado: gatilho, condição com base no ID do webhook e, em seguida, sua ação no ramo “True”.

Etapa 4 - Teste de ponta a ponta

Gatilho para um evento real no Paddle. Em Workflow Webhooks -> Histórico, o(a) senhor(a) deverá ver a invocação com o status “Sucesso”. Caso a assinatura esteja incorreta, o(a) senhor(a) receberá, em vez disso, uma entrada com status de falha e o motivo correspondente; e Verificação de webhooks assinados explica o verificador de assinatura, que mostra exatamente em qual etapa ocorreu a falha.

Uma invocação foi aberta no History com seus cabeçalhos de solicitação, payload, status, duração e identificadores
Um evento registrado no History com o status “Sucesso” significa que Shopify Flow o aceitou.
A assinatura não corresponde▾

Nesta ordem: o segredo (a causa mais comum - um espaço a mais ou uma chave do ambiente errado), se o remetente está utilizando o segredo de um endpoint diferente e se algum elemento entre o Paddle e o aplicativo reescreve o corpo da mensagem. As assinaturas abrangem os bytes brutos; portanto, um proxy que reformata o JSON as invalida. O verificador de assinaturas na página do webhook mostra o texto exato que foi assinado.

Recebo um erro 401 em todas as solicitações▾

Verifique se a autenticação do webhook está configurada como HMAC com o provedor Paddle selecionado, se o segredo está preenchido e se o Paddle está enviando a solicitação para a URL exatamente como o aplicativo a exibe, incluindo o código no final.

Não há nada no Histórico▾

A solicitação nunca foi recebida. Verifique novamente a URL no Paddle e consulte o próprio registro de entrega do Paddle para ver a resposta recebida. Um erro do tipo 404 indica um webhook incorreto ou excluído; um erro do tipo 429 significa que você ultrapassou o limite de invocações do seu plano - consulte Planos e uso.

O fluxo de trabalho é executado para os eventos errados▾

Cada webhook da sua loja aciona o mesmo gatilho do Shopify Flow. Adicione uma condição com base no ID do webhook como o primeiro passo do fluxo de trabalho ou restrinja os eventos que você envia do Paddle.

As solicitações falham com a mensagem “carimbo de data/hora fora da tolerância”▾

O Paddle assina um carimbo de data/hora e o aplicativo rejeita qualquer evento com mais de 5 minutos. Normalmente, trata-se de um problema de relógio no lado do remetente ou de uma entrega que o Paddle tentou novamente muito mais tarde com o carimbo de data/hora original. Novas tentativas da mesma solicitação original não são permitidas; solicite ao Paddle que envie um novo evento.

Relacionado