Pular para o conteúdo principal

Introdução

🎯 O que este módulo faz?

O módulo Orders permite que você crie, gerencie e acompanhe pedidos de clientes - desde o checkout do carrinho de compras até o processamento de pagamento e a execução do pedido - lidando com todo o ciclo de vida do pedido de e-commerce.

Pense nisso como seu sistema de gerenciamento de pedidos - os clientes adicionam itens ao carrinho, fazem pedidos, realizam pagamentos e você acompanha tudo, desde a criação do pedido até a entrega, tudo dentro do OneEntry.


📖 Explicação Simples

Toda aplicação de e-commerce precisa de gerenciamento de pedidos:

  • 🛒 Carrinho de Compras - Usuários adicionam produtos, prosseguem para o checkout
  • 📋 Criação de Pedido - Converter carrinho em pedido com os detalhes do cliente
  • 💳 Processamento de Pagamento - Aceitar pagamentos (cartão de crédito, PayPal, etc.)
  • 📦 Rastreamento de Pedido - Acompanhar status (pendente, em processamento, enviado, entregue)
  • 📊 Gerenciamento de Pedidos - Ver todos os pedidos, filtrar por status, pesquisar
  • 🧾 Detalhes do Pedido - Ver itens, totais, informações do cliente

Problemas:

  • 🔒 Sem integração de pagamento - Acompanhamento manual de pagamentos
  • 📊 Rastreamento ruim - Difícil encontrar pedidos, filtrar por status
  • 🔄 Sem automação - Atualizações de status manuais, sem notificações
  • 💸 Sem cálculo de impostos/frete - Calcular manualmente

A solução Orders:

Benefícios:

  • 🔒 Pagamentos integrados - Stripe, PayPal, outros gateways
  • 📊 Rastreamento avançado - Filtrar, pesquisar, exportar pedidos
  • 🔄 Fluxos de trabalho automatizados - Atualizações de status, notificações
  • 💸 Cálculos automáticos - Impostos, frete, descontos

✨ Conceitos Chave

O que é um Pedido?

Um Pedido é uma transação de compra do cliente contendo:

  • Itens do Pedido - Produtos/serviços sendo comprados (quantidade, preço)
  • Informações do Cliente - Nome, e-mail, telefone
  • Endereço de Entrega - Local de entrega
  • Endereço de Cobrança - Informações de cobrança do pagamento
  • Detalhes do Pagamento - Método de pagamento, ID da transação
  • Totais do Pedido - Subtotal, imposto, frete, total
  • Status do Pedido - Estado atual (pendente, em processamento, concluído)
  • Carimbos de Data/Hora - Datas de criação, atualização, conclusão

Estrutura do Pedido

Cada pedido tem esta estrutura:

{
id: 179,
storageId: 1,
createdDate: '2025-07-03T00:43:02.908Z',
statusIdentifier: 'inProgress',
formIdentifier: 'orderForm',
formData: [
{
marker: 'order_name',
type: 'string',
value: 'Ivan'
}
],
attributeSetIdentifier: 'order_form',
totalSum: '300.00',
currency: 'USD',
paymentAccountIdentifier: 'cash',
paymentAccountLocalizeInfos: { title: 'Cash' },
products: [
{
id: 2957,
title: 'Cosmo',
sku: null,
previewImage: null,
price: 150,
quantity: 2,
},
],
isCompleted: true,
}

Ciclo de Vida do Pedido

1. O cliente adiciona itens ao carrinho

2. Prossegue para o checkout

3. Insere informações de entrega/cobrança

4. Seleciona o método de pagamento

5. Pedido criado (status: pendente)

6. Pagamento processado (status: em processamento)

7. Pedido confirmado (status: confirmado)

8. Itens preparados (status: em processamento)

9. Pedido enviado (status: enviado)

10. Pedido entregue (status: concluído)

Exemplos de Status de Pedido

StatusSignificadoQuando Usar
pendentePedido criado, aguardando pagamentoAcabou de ser feito, pagamento não processado
em processamentoPagamento recebido, preparando itensPagamento confirmado, embalando itens
confirmadoPedido confirmado, pronto para envioPagamento liberado, pedido verificado
enviadoPedido despachado para o clientePacote enviado via transportadora
entreguePedido recebido pelo clienteEntrega confirmada
concluídoPedido finalizado, nenhuma ação necessáriaTransação completa
canceladoPedido canceladoCliente/admin cancelou
reembolsadoPagamento devolvido ao clienteReembolso processado
falhouPagamento ou processamento falhouPagamento recusado

Operações Comuns de Pedido

OperaçãoDescriçãoExemplo de Caso de Uso
Criar PedidoConverter carrinho em pedidoBotão de checkout clicado
Obter PedidosListar todos os pedidos (paginados)Painel de administração
Obter Pedido por IDBuscar pedido específicoVer detalhes do pedido
Atualizar StatusMudar status do pedidoMarcar como enviado
Calcular TotaisCalcular imposto, frete, totalResumo do checkout
Cancelar PedidoCancelar pedido pendenteCliente solicita cancelamento
Reembolsar PedidoRetornar pagamento ao clienteDevolução de produto

Por que usar o módulo Orders?

BenefícioDescrição
Gerenciamento de Pedidos AutomatizadoSem acompanhamento manual, tudo automatizado
Integração de PagamentoStripe, PayPal, outros gateways integrados
Rastreamento de StatusAtualizações de status de pedido em tempo real
Notificações ao ClienteEnvio automático de confirmações de pedido, atualizações de envio
Gerenciamento de EstoqueDedução automática de estoque ao fazer o pedido
Análise e RelatóriosRelatórios de vendas, acompanhamento de receita
SegurançaProcessamento de pagamento em conformidade com PCI

📋 O que você precisa saber

Pedidos são Criados a partir de Dados do Carrinho

Você precisa fornecer:

  1. Informações do cliente - Nome, e-mail, telefone
  2. Itens do pedido - Produtos, quantidades, preços
  3. Endereço de entrega - Local de entrega
  4. Método de pagamento - Como o cliente pagará

Gerenciamento de Status do Pedido

Acompanhe o progresso do pedido através dos status:

Fluxos de status comuns:

  • Produtos digitais: pendente → em processamento → concluído
  • Produtos físicos: pendente → em processamento → enviado → entregue → concluído
  • Cancelado: qualquer status → cancelado
  • Reembolsado: concluído → reembolsado

Processamento de Pagamento

Os pedidos se integram com gateways de pagamento


💡 Notas Importantes

Pedidos são Criados no OneEntry

O módulo Orders lida com todo o ciclo de vida do pedido:

  • ✅ Criar pedidos a partir de dados do carrinho
  • ✅ Processar pagamentos
  • ✅ Atualizar status do pedido
  • ✅ Acompanhar envio
  • ❌ NÃO lida com a interface do carrinho de compras (você constrói isso)

Sua responsabilidade:

  • Construir a interface do carrinho de compras
  • Coletar informações do cliente
  • Exibir confirmação do pedido

Processamento de Pagamento

Os pedidos se integram com gateways de pagamento:

  • Stripe (recomendado)
  • PayPal
  • Gateways personalizados

Importante:

  • Nunca armazene detalhes do cartão de crédito diretamente
  • Use tokenização (Stripe.js, PayPal SDK)
  • O OneEntry lida com o processamento seguro de pagamentos

Gerenciamento de Estoque

Os pedidos automaticamente:

  • ✅ Deduzem o estoque na criação do pedido
  • ✅ Restauram o estoque no cancelamento
  • ✅ Acompanham os níveis de estoque

Melhor prática: Verifique o estoque antes de criar o pedido

Segurança

Os pedidos contêm dados sensíveis:

  • Informações pessoais do cliente
  • Detalhes do pagamento
  • Endereços de entrega

Sempre:

  • Use HTTPS para páginas de checkout
  • Valide os dados antes de criar pedidos
  • Implemente autenticação adequada
  • Siga a conformidade PCI DSS para pagamentos

📊 Tabela de Referência Rápida

MétodoDescrição
createOrder()Criar novo pedido
getAllOrdersByMarker()Obter todos os pedidos (paginados)
getOrderByMarker()Obter um objeto de armazenamento de pedido específico por marcador.
getAllOrdersStorage()Obter todos os objetos de armazenamento de pedidos.
getOrderByMarkerAndId()Obter um pedido por marcador e id do objeto de armazenamento de pedidos criado pelo usuário.
updateOrderByMarkerAndId()Atualizar um pedido por marcador e id do objeto de armazenamento de pedidos criado pelo usuário.

❓ Perguntas Comuns (FAQ)

Como faço para criar um pedido com vários produtos?

Passe um array de objetos de produtos nos dados do pedido. Cada produto deve incluir id, quantidade e preço. O total é calculado automaticamente com base nas quantidades e preços dos produtos.


Posso atualizar um pedido depois que ele foi criado?

Sim, use updateOrderByMarkerAndId() para modificar detalhes do pedido, como status, endereço de entrega ou dados do pedido. No entanto, uma vez que o pagamento é processado, tenha cuidado ao modificar itens ou totais do pedido.


Como faço para acompanhar as mudanças de status do pedido?

Use o campo statusIdentifier para acompanhar o estado atual do pedido. Você também pode configurar webhooks ou usar o módulo Events para receber notificações quando o status do pedido mudar.


Qual é a diferença entre armazenamento de pedidos e pedidos individuais?

O armazenamento de pedidos é um contêiner que agrupa pedidos relacionados (como pedidos de um formulário específico ou canal de vendas). Os pedidos individuais são as transações de compra reais dentro desse armazenamento. Use marcadores para identificar e organizar diferentes armazenamentos de pedidos.


Como faço para lidar com cancelamentos e reembolsos de pedidos?

Atualize o status do pedido para 'cancelado' usando updateOrderByMarkerAndId(). Para reembolsos, use o módulo Payments para processar a transação de reembolso e, em seguida, atualize o status do pedido para 'reembolsado'.


Posso recuperar o histórico de pedidos de um cliente?

Sim, use getAllOrdersByMarker() com filtros apropriados para buscar todos os pedidos de um cliente específico. Você pode filtrar por ID de usuário, intervalo de datas ou outros critérios.


🎓 Melhores Práticas

  • Valide o carrinho antes de criar o pedido - Verifique a disponibilidade do estoque
  • Calcule os totais no servidor - Nunca confie em cálculos do lado do cliente
  • Envie confirmações de pedido - Envie e-mails para os clientes após o pedido ser feito
  • Acompanhe o status do pedido - Atualize o status à medida que o pedido avança
  • Lide com falhas de pagamento - Lógica de repetição, mensagens de erro claras
  • Implemente a busca de pedidos - Permita que os clientes encontrem seus pedidos facilmente
  • Armazene o histórico de pedidos - Mantenha registros para atendimento ao cliente
  • Use paginação - Não carregue todos os pedidos de uma vez

Mais informações sobre a interface do usuário do módulo https://doc.oneentry.cloud/docs/category/orders


Definição do módulo Orders


const { Orders } = defineOneEntry(
"your-project-url", {
"token": "your-app-token"
}
);


🔗 Documentação Relacionada