Introdução
O módulo Discounts permite que você gerencie e aplique descontos a produtos e pedidos.
Mais informações sobre a interface do usuário do módulo https://doc.oneentry.cloud/docs/category/discounts
🎯 O que este módulo faz?
O módulo Discounts permite que você recupere descontos e valide códigos de cupom — reduções em porcentagem ou valor fixo, acúmulo de pontos bônus e descontos pessoais. Você define as regras de desconto no painel de administração do OneEntry; este módulo as recupera, valida cupons no checkout e lê o saldo e o histórico de bônus do usuário atual.
O SDK é somente leitura: os descontos são criados e configurados no painel de administração.
🚀 Início Rápido
Inicialize o módulo a partir de defineOneEntry:
const { Discounts } = defineOneEntry( "your-project-url", { "token": "your-app-token" });
Valide um código de cupom no checkout e leia o resultado:
// Validate a coupon code entered by the customer.
const result = await Discounts.validateDiscountsCoupon("SUMMER20");
if (result.valid) {
console.log("Coupon applied:", result.coupon);
} else {
console.log("Invalid coupon:", result.error);
}
✨ Conceitos Chave
O que é um Desconto?
Um Desconto (IDiscountsEntity) é uma regra de precificação que reduz o custo de produtos ou pedidos:
type—DISCOUNT,BONUSouPERSONAL_DISCOUNTdiscountValue— como a redução é calculada:discountType(PERCENTouFIXED_AMOUNT), umvaluenumérico, umaapplicability(TO_PRODUCTouTO_ORDER), e ummaxAmountopcionalidentifier— marcador único para filtragem e referênciastartDate/endDate— período de validade opcionalconditions— regras que decidem quando o desconto se aplica (por produto, categoria, valor do carrinho, usuário, …)
Estrutura do Desconto
{
id: 1,
identifier: 'summer_sale',
localizeInfos: {
title: 'Summer Sale'
},
type: 'DISCOUNT',
startDate: '2025-06-01T00:00:00.000Z',
endDate: '2025-08-31T23:59:59.999Z',
discountValue: {
applicability: 'TO_ORDER',
discountType: 'PERCENT',
value: 20,
maxAmount: 100
},
conditionLogic: 'AND',
conditions: [
{ type: 'MIN_CART_AMOUNT', value: '50' }
]
}
Tipos de Desconto
O campo type classifica o desconto:
type | Descrição |
|---|---|
| DISCOUNT | Desconto padrão aplicado a produtos/pedidos |
| BONUS | Acúmulo de pontos bônus (fidelidade) |
| PERSONAL_DISCOUNT | Desconto direcionado a usuários ou grupos específicos |
Como a redução é calculada está em discountValue.discountType:
discountValue.discountType | Descrição | Exemplo |
|---|---|---|
| PERCENT | Reduz o preço por uma porcentagem | 20% de desconto em todos os itens de verão |
| FIXED_AMOUNT | Reduz o preço por um valor fixo | $10 de desconto em pedidos acima de $50 |
📋 O que você precisa saber
Descontos são criados no painel de administração
Você não pode criar descontos via SDK — eles são criados no painel de administração do OneEntry. Ao criar um, você fornece um Nome, um Marcador (identifier), um tipo (DISCOUNT, BONUS ou PERSONAL_DISCOUNT), um discountValue (PERCENT ou FIXED_AMOUNT mais o value numérico), um período de validade opcional (startDate / endDate), e condições opcionais.
O que o módulo faz
- ✅ Recupera todos os descontos —
getAllDiscounts() - ✅ Recupera um desconto específico por marcador —
getDiscountByMarker() - ✅ Valida códigos de cupom no checkout —
validateDiscountsCoupon() - ✅ Lê o saldo e o histórico de bônus do usuário atual
- ❌ Não cria ou modifica descontos (use o painel de administração)
📊 Tabela de Referência Rápida
| Método | Descrição |
|---|---|
| getAllDiscounts() | Obter todos os descontos |
| getDiscountByMarker() | Obter um único desconto por marcador |
| validateDiscountsCoupon() | Validar um código de cupom de desconto |
| getBonusBalance() | Obter o saldo de bônus do usuário atual |
| getBonusHistory() | Obter o histórico de transações de bônus do usuário atual |
❓ Perguntas Comuns (FAQ)
Como aplico um desconto no checkout?
Recupere o desconto com getDiscountByMarker() ou valide um cupom com validateDiscountsCoupon(), em seguida, use o valor de desconto retornado para calcular o preço reduzido.
Um desconto pode ter uma data de expiração?
Sim. Os descontos podem ter campos opcionais startDate e endDate — verifique-os antes de exibir um desconto para garantir que ele esteja ativo no momento.
Como mostro distintivos de desconto em produtos?
Recupere todos os descontos com getAllDiscounts(), combine-os com produtos de acordo com sua lógica de negócios e renderize um distintivo a partir de localizeInfos.title e discountValue.value.
O que acontece se um código de cupom for inválido?
validateDiscountsCoupon() retorna um ICouponValidationResult — { valid: boolean; coupon?; error? }. Quando o cupom não existe ou expirou, valid é false e uma mensagem de error é fornecida. Verifique result.valid e mostre uma mensagem apropriada.
🎓 Melhores Práticas
- Cache os descontos ao carregar — eles mudam com pouca frequência; evite chamadas repetidas à API.
- Valide cupons antes de aplicar — sempre chame
validateDiscountsCoupon()antes de precificar um pedido. - Lide com descontos expirados — verifique
endDateantes de exibir um desconto. - Use marcadores descritivos —
summer_sale_2025, nãodiscount1. - Localize os nomes dos descontos — use
localizeInfospara suporte a múltiplos idiomas.
🔗 Documentação Relacionada
- Módulo de Produtos - Gerencie produtos aos quais os descontos são aplicados
- Módulo de Pedidos - Visualize e crie pedidos com descontos aplicados
- Módulo de Pagamentos - Processar pagamentos para pedidos com desconto
- Módulo de Locales - Nomes de desconto em múltiplos idiomas