Pular para conteúdo

SHOPIFY ORDER GET - Buscar Pedido do Shopify

O que é este Node?

O SHOPIFY ORDER GET é o node responsável por buscar dados de um pedido específico no Shopify usando seu ID, retornando informações completas como itens, cliente, status de pagamento e entrega.

Por que este Node existe?

Consultar pedidos é essencial para atendimento e logística. O SHOPIFY ORDER GET existe para:

  1. Rastreamento: Verificar status de pedido para informar cliente
  2. Atendimento: Buscar detalhes do pedido durante suporte
  3. Validação: Confirmar pagamento antes de processar
  4. Integração: Sincronizar pedidos com sistemas de logística/ERP
  5. Relatórios: Analisar dados de vendas específicas

Como funciona internamente?

Quando o SHOPIFY ORDER GET é executado, o sistema:

  1. Valida credenciais (shopName e accessToken)
  2. Extrai orderId do parâmetro ou variável
  3. Envia requisição GET para /admin/api/{version}/orders/{orderId}.json
  4. Recebe dados completos do pedido
  5. Salva resultado na variável especificada
  6. Continua flow para próximo node

Código interno (shopify.executor.ts:60-64):

case 'get': {
  const orderId = this.replaceVariables(node.data.orderId, context.variables);
  const response = await axios.get(`${baseUrl}/orders/${orderId}.json`, { headers });
  result = response.data;
  break;
}

Quando você DEVE usar este Node?

Use SHOPIFY ORDER GET quando precisar consultar dados de pedido:

Casos de uso:

  1. Rastreamento: "Cliente pergunta: 'Onde está meu pedido #1234?'"
  2. Confirmação: "Verificar se pagamento foi confirmado"
  3. Status: "Checar se pedido foi enviado/entregue"
  4. Detalhes: "Ver itens comprados em pedido específico"
  5. Suporte: "Buscar informações para resolver problema do cliente"

Quando NÃO usar:

Parâmetros

Campo Tipo Obrigatório Descrição
config.shopName string Sim Nome da loja (sem .myshopify.com)
config.accessToken string Sim Token de acesso da API
config.apiVersion string Não Versão da API (padrão: 2025-01)
orderId string/number Sim ID do pedido no Shopify
responseVariable string Não Nome da variável (padrão: shopifyResult)

Exemplo 1: Rastreamento de Pedido via WhatsApp

Objetivo: Cliente informa número do pedido e recebe status de entrega.

JSON para Importar

{
  "name": "Shopify - Rastreamento de Pedido",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Boas-vindas",
        "parameters": {
          "message": "Olá! Vou consultar o status do seu pedido."
        }
      }
    },
    {
      "id": "input_1",
      "type": "input",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Número do Pedido",
        "parameters": {
          "message": "Digite o número do pedido:",
          "variable": "orderId"
        }
      }
    },
    {
      "id": "shopify_1",
      "type": "shopify",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Buscar Pedido",
        "operation": "get",
        "resource": "orders",
        "config": {
          "shopName": "minhaloja",
          "accessToken": "shpat_xxxxxxxxxxxxx",
          "apiVersion": "2025-01"
        },
        "orderId": "{{orderId}}",
        "responseVariable": "order"
      }
    },
    {
      "id": "message_2",
      "type": "message",
      "position": { "x": 900, "y": 100 },
      "data": {
        "label": "Status",
        "parameters": {
          "message": "📦 STATUS DO PEDIDO #{{order.order.order_number}}\n\n🛍️ Itens: {{order.order.line_items.length}} produto(s)\n💰 Total: R$ {{order.order.total_price}}\n💳 Pagamento: {{order.order.financial_status}}\n📮 Envio: {{order.order.fulfillment_status}}\n📅 Data: {{order.order.created_at}}\n\n✉️ Cliente: {{order.order.customer.first_name}} {{order.order.customer.last_name}}\n📧 Email: {{order.order.email}}"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 1100, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "message_1" },
    { "source": "message_1", "target": "input_1" },
    { "source": "input_1", "target": "shopify_1" },
    { "source": "shopify_1", "target": "message_2" },
    { "source": "message_2", "target": "end_1" }
  ]
}

Saída esperada:

Sistema: Olá! Vou consultar o status do seu pedido.
Sistema: Digite o número do pedido:
Usuário: 5234567890123
Sistema: 📦 STATUS DO PEDIDO #1234

🛍️ Itens: 2 produto(s)
💰 Total: R$ 349.80
💳 Pagamento: paid
📮 Envio: fulfilled
📅 Data: 2025-01-10T14:30:00-03:00

✉️ Cliente: João Silva
📧 Email: joao@example.com

Exemplo 2: Verificar Pagamento Antes de Processar

Objetivo: Confirmar que pagamento foi aprovado antes de enviar pedido.

JSON para Importar

{
  "name": "Shopify - Verificar Pagamento",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "variable_1",
      "type": "variable",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "ID do Pedido",
        "parameters": {
          "assignments": [
            { "variable": "orderId", "value": "5234567890123" }
          ]
        }
      }
    },
    {
      "id": "shopify_1",
      "type": "shopify",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Buscar Pedido",
        "operation": "get",
        "resource": "orders",
        "config": {
          "shopName": "minhaloja",
          "accessToken": "shpat_xxxxxxxxxxxxx",
          "apiVersion": "2025-01"
        },
        "orderId": "{{orderId}}",
        "responseVariable": "orderData"
      }
    },
    {
      "id": "condition_1",
      "type": "condition",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Pagamento OK?",
        "parameters": {
          "conditions": [
            {
              "variable": "orderData.order.financial_status",
              "operator": "==",
              "value": "paid"
            }
          ],
          "operator": "AND"
        }
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 900, "y": 50 },
      "data": {
        "label": "Pagamento Aprovado",
        "parameters": {
          "message": "✅ PAGAMENTO CONFIRMADO\n\nPedido #{{orderData.order.order_number}}\nCliente: {{orderData.order.customer.first_name}}\nValor: R$ {{orderData.order.total_price}}\n\nPedido pode ser processado!"
        }
      }
    },
    {
      "id": "message_2",
      "type": "message",
      "position": { "x": 900, "y": 150 },
      "data": {
        "label": "Pagamento Pendente",
        "parameters": {
          "message": "⚠️ PAGAMENTO PENDENTE\n\nPedido #{{orderData.order.order_number}}\nStatus: {{orderData.order.financial_status}}\n\nAguardar confirmação do pagamento antes de processar."
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 1100, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "variable_1" },
    { "source": "variable_1", "target": "shopify_1" },
    { "source": "shopify_1", "target": "condition_1" },
    { "source": "condition_1", "target": "message_1", "label": "true" },
    { "source": "condition_1", "target": "message_2", "label": "false" },
    { "source": "message_1", "target": "end_1" },
    { "source": "message_2", "target": "end_1" }
  ]
}

Saída esperada (pago):

Sistema: ✅ PAGAMENTO CONFIRMADO

Pedido #1234
Cliente: João
Valor: R$ 349.80

Pedido pode ser processado!

Saída esperada (pendente):

Sistema: ⚠️ PAGAMENTO PENDENTE

Pedido #1234
Status: pending

Aguardar confirmação do pagamento antes de processar.

Exemplo 3: Exibir Itens do Pedido

Objetivo: Mostrar lista detalhada de produtos comprados no pedido.

JSON para Importar

{
  "name": "Shopify - Itens do Pedido",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "input_1",
      "type": "input",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Número",
        "parameters": {
          "message": "Digite o número do pedido:",
          "variable": "orderId"
        }
      }
    },
    {
      "id": "shopify_1",
      "type": "shopify",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Buscar",
        "operation": "get",
        "resource": "orders",
        "config": {
          "shopName": "minhaloja",
          "accessToken": "shpat_xxxxxxxxxxxxx",
          "apiVersion": "2025-01"
        },
        "orderId": "{{orderId}}",
        "responseVariable": "order"
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Cabeçalho",
        "parameters": {
          "message": "📦 PEDIDO #{{order.order.order_number}}\n\nCliente: {{order.order.customer.first_name}} {{order.order.customer.last_name}}\nData: {{order.order.created_at}}\n\n🛍️ ITENS COMPRADOS:"
        }
      }
    },
    {
      "id": "loop_1",
      "type": "loop",
      "position": { "x": 900, "y": 100 },
      "data": {
        "label": "Loop Itens",
        "parameters": {
          "items": "{{order.order.line_items}}",
          "itemVariable": "item",
          "indexVariable": "i"
        }
      }
    },
    {
      "id": "message_2",
      "type": "message",
      "position": { "x": 1100, "y": 100 },
      "data": {
        "label": "Item",
        "parameters": {
          "message": "{{i + 1}}. {{item.title}}\n   Qtd: {{item.quantity}}x\n   Preço: R$ {{item.price}}\n   Subtotal: R$ {{item.quantity * item.price}}"
        }
      }
    },
    {
      "id": "merge_1",
      "type": "merge",
      "position": { "x": 1300, "y": 100 },
      "data": { "label": "Próximo" }
    },
    {
      "id": "message_3",
      "type": "message",
      "position": { "x": 1500, "y": 100 },
      "data": {
        "label": "Total",
        "parameters": {
          "message": "━━━━━━━━━━━━━━━\n💰 TOTAL: R$ {{order.order.total_price}}"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 1700, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "input_1" },
    { "source": "input_1", "target": "shopify_1" },
    { "source": "shopify_1", "target": "message_1" },
    { "source": "message_1", "target": "loop_1" },
    { "source": "loop_1", "target": "message_2" },
    { "source": "message_2", "target": "merge_1" },
    { "source": "merge_1", "target": "loop_1", "label": "next" },
    { "source": "loop_1", "target": "message_3", "label": "done" },
    { "source": "message_3", "target": "end_1" }
  ]
}

Saída esperada:

Sistema: Digite o número do pedido:
Usuário: 5234567890123
Sistema: 📦 PEDIDO #1234

Cliente: João Silva
Data: 2025-01-10T14:30:00-03:00

🛍️ ITENS COMPRADOS:
Sistema: 1. Camiseta Básica Preta
   Qtd: 2x
   Preço: R$ 49.90
   Subtotal: R$ 99.80
Sistema: 2. Tênis Nike Air
   Qtd: 1x
   Preço: R$ 299.90
   Subtotal: R$ 299.90
Sistema: ━━━━━━━━━━━━━━━
💰 TOTAL: R$ 399.70

Resposta do Node

{
  "order": {
    "id": 5234567890123,
    "order_number": 1234,
    "email": "joao@example.com",
    "created_at": "2025-01-10T14:30:00-03:00",
    "updated_at": "2025-01-10T15:00:00-03:00",
    "total_price": "349.80",
    "subtotal_price": "319.80",
    "total_tax": "0.00",
    "currency": "BRL",
    "financial_status": "paid",
    "fulfillment_status": "fulfilled",
    "customer": {
      "id": 6234567890,
      "email": "joao@example.com",
      "first_name": "João",
      "last_name": "Silva",
      "phone": "+5511999999999"
    },
    "billing_address": {
      "first_name": "João",
      "last_name": "Silva",
      "address1": "Rua Exemplo, 123",
      "city": "São Paulo",
      "province": "SP",
      "country": "Brazil",
      "zip": "01234-567"
    },
    "shipping_address": {
      "first_name": "João",
      "last_name": "Silva",
      "address1": "Rua Exemplo, 123",
      "city": "São Paulo",
      "province": "SP",
      "country": "Brazil",
      "zip": "01234-567"
    },
    "line_items": [
      {
        "id": 12345678901234,
        "title": "Camiseta Básica Preta",
        "quantity": 2,
        "price": "49.90",
        "sku": "CAM-BASIC-P",
        "product_id": 8234567890123,
        "variant_id": 44567890123456
      },
      {
        "id": 12345678901235,
        "title": "Tênis Nike Air",
        "quantity": 1,
        "price": "299.90",
        "sku": "TEN-NIKE-42",
        "product_id": 8234567890456,
        "variant_id": 44567890456789
      }
    ],
    "shipping_lines": [
      {
        "title": "Correios PAC",
        "price": "30.00",
        "code": "PAC"
      }
    ]
  }
}

Boas Práticas

SIM: - Sempre valide se pedido existe antes de acessar dados - Verifique financial_status antes de processar envio - Use order_number (legível) ao invés de id nas mensagens - Trate casos onde fulfillment_status é null (ainda não enviado) - Armazene dados importantes em variáveis para uso posterior

NÃO: - Não assuma que pedido sempre terá fulfillment_status - Não exponha dados sensíveis do cliente sem autorização - Não ignore erros 404 (pedido não encontrado) - Não acesse line_items[0] sem verificar se array existe

Dicas

Dica 1 - Status de Pagamento: Valores possíveis: pending, authorized, paid, partially_refunded, refunded, voided.

Dica 2 - Status de Envio: Valores possíveis: null (não enviado), partial, fulfilled.

Dica 3 - Order Number: Use order_number (1234) ao invés de id (5234567890123) para exibir ao cliente.

Dica 4 - Endereços: Pedidos têm billing_address (cobrança) e shipping_address (entrega) separados.

Dica 5 - Line Items: Itens do pedido estão em array line_items - use loop para processar todos.

Dica 6 - Moeda: Campo currency indica a moeda (BRL, USD, EUR, etc.).

Próximo Node

SHOPIFY ORDER LIST - Listar múltiplos pedidos → SHOPIFY ORDER CANCEL - Cancelar pedido → SHOPIFY ORDER FULFILL - Marcar como enviado