Skip to main content
A BonifiQ já oferece uma solução nativa para integrar diretamente ao Checkout da VTEX no modelo Web. No modelo Mobile, no entanto, requer que seja realizada a integração com as APIs da BonifiQ diretamente. As integrações abrangem login seguro, consulta e aplicação de recompensa, além de gerenciamento de objetivos (missões) de fidelidade. As chamadas são projetadas para garantir uma experiência segura e eficiente para o consumidor.

Principais Etapas

  1. Login seguro: Autenticação do usuário e obtenção de token de segurança.
  2. Configuração do checkout: Obtenção das configurações do programa de fidelidade.
  3. Consulta de pontos da compra: Verificação de quantos pontos o cliente ganhará na compra.
  4. Consulta de recompensas: Verificação do saldo e regras para utilização da recompensa.
  5. Aplicação de recompensa: Resgate de recompensa no carrinho.
  6. Consulta de recompensa aplicada: Verificação do estado da recompensa no carrinho.
  7. Remoção de recompensa: Remover a recompensa aplicada a um carrinho.
  8. Objetivos: Consultar e interagir com missões de fidelidade (compra, aniversário, indicação, review, redes sociais, quiz, etc.).

Guia Visual: Como Construir as Interfaces

Cada endpoint retorna dados que precisam ser traduzidos em interfaces. Abaixo está um guia prático de como o widget BonifiQ utiliza esses dados para construir cada tela.

Tela de Recompensas

A lista de recompensas deve exibir cards com as informações retornadas pela API. Cada tipo de recompensa tem um tratamento visual diferente: Mapeamento de dados → interface:

Tela de Detalhe da Recompensa

Ao clicar em uma recompensa, exibir detalhes e botão de resgate: Lógica do botão de resgate:
  • Se customer == null → mostrar “Participar do Programa” (redirecionar para cadastro)
  • Se PointsBalance < reward.Points → desabilitar botão
  • Se já resgatou → desabilitar botão
  • Ao resgatar: chamar POST /rewards/redeem/{id} → exibir cupom gerado

Tela de Objetivos (Missões)

Cada tipo de objetivo tem um card com ícone e comportamento diferentes: Comportamento por tipo de objetivo ao clicar:

Tela de Aniversário (Birthday)

A tela muda completamente baseado no BenefitStatus:

Tela de Indicação (Referral)

Fluxo:
  1. Email: POST /objectives/referral/refer com email
  2. Link/WhatsApp: POST /objectives/referral/friend → gera link para compartilhar
  3. O campo WhatsAppShareText do objetivo contém o texto pré-formatado

Tela de Quiz

Renderização por tipo de questão:
  • Type = 0 (Multiple) → Checkboxes (múltipla seleção)
  • Type = 1 (Selection) → Radio buttons (seleção única)
  • Type = 2 (Open) → Campo de texto livre

Checkout: Cashback

Mapeamento de dados → interface:

Estados de Interface

Toda tela deve considerar estes estados:

1. Fazer Login Seguro

O primeiro passo é realizar o login do usuário e obter o seu token de segurança. Esse token de segurança será utilizado em todas as chamadas subsequentes. O sessionToken e o segmentToken deverão ser obtidos mediante login na VTEX.
O SecureToken tem validade limitada e deve ser atualizado periodicamente.

Requisição

POST /pub/widget/vendors/vtex/securelogin Headers
string
required
Identificador público da loja.
Body
string
required
Gerado pela plataforma de e-commerce após o login do consumidor.
string
required
Gerado pela plataforma de e-commerce.

Exemplo

Resposta

boolean
Indica se houve erro na requisição.
object

2. Obter Configuração do Checkout

Essa etapa é utilizada para obter as configurações do programa de fidelidade para o checkout, como cores, nome do programa e se utiliza pontos ou cashback.

Requisição

GET /pub/widget/rewards/checkout/configuration Headers
string
required
Identificador da loja.
string
required
Token do usuário obtido no login seguro.

Exemplo

Resposta

string
Texto customizado para exibição no checkout.
string
Nome do programa de fidelidade.
string
Cor principal do programa (hexadecimal).
boolean
Indica se o programa está ativo.
boolean
Indica se o programa utiliza cashback.
boolean
Indica se o programa utiliza pontos.

3. Consultar Pontos da Compra

Essa etapa é utilizada para exibir ao cliente quantos pontos (ou cashback) ele ganhará na compra atual. Ideal para exibir mensagens como “Você ganhará X pontos nesta compra”.

Requisição

GET /pub/widget/rewards/checkout/purchase-points Headers
string
required
Identificador da loja.
string
required
Token do usuário obtido no login seguro.
Query Parameters
number
required
Valor da compra.
string
Identificador do carrinho (order_form_id). Opcional.

Exemplo

Resposta

number
Valor mínimo da compra para receber pontos.
integer
Quantidade de pontos que o cliente ganhará nesta compra.
number
Valor de cashback que o cliente ganhará nesta compra (se aplicável).
boolean
Indica se existe um objetivo de compra configurado.

4. Buscar Recompensas

Essa etapa será utilizada para a listagem de recompensas disponíveis para o usuário logado.

Requisição

GET /pub/widget/rewards/checkout Headers
string
required
Identificador da loja.
string
required
Token do usuário obtido no login seguro.
Query Parameters
number
required
Valor da compra. É utilizado para determinar quais recompensas (e valores) são válidos para o carrinho.

Exemplo

Resposta

string
Nome do programa de fidelidade.
integer
Saldo de pontos do cliente.
boolean
Indica se houve erro na requisição.
array
Lista de recompensas.

Enumeração UseReason


4.1. Buscar Recompensas já Resgatadas

Essa etapa será utilizada para a listagem de recompensas já resgatadas e não utilizadas pelo consumidor.

Requisição

GET /pub/widget/rewards/checkout/redeemed Headers
string
required
Identificador da loja.
string
required
Token do usuário obtido no login seguro.
Query Parameters
number
required
Valor da compra.

Exemplo

Resposta


5. Aplicar Recompensa

Essa etapa será utilizada para a aplicação de recompensas ainda não resgatadas.

Requisição

POST /pub/widget/rewards/redeem/{reward_id} Headers
string
required
Identificador da loja.
string
required
Token do usuário obtido no login seguro.
Path Parameters
integer
required
ID da recompensa a ser resgatada.
Body (Opcional)
string
Identificador do carrinho (order_form_id).

Exemplo

Resposta


5.1. Aplicar Recompensa já Resgatada

Essa etapa será utilizada para a aplicação de recompensas já resgatadas.

Requisição

POST /pub/widget/rewardredeemed/checkout/redeem/{reward_redeemed_id}
O valor de reward_redeemed_id deverá ser o valor retornado na propriedade RedeemedId da seção “Buscar Recompensas já Resgatadas”.
Headers
string
required
Identificador da loja.
string
required
Token do usuário obtido no login seguro.
Path Parameters
integer
required
ID da recompensa resgatada.
Body (Opcional)
string
Identificador do carrinho (order_form_id).

Exemplo


6. Validar Cashback

Essa etapa é utilizada para verificar se o cliente pode utilizar cashback e qual o valor disponível. Deve ser chamada antes de aplicar o cashback.

Requisição

GET /pub/widget/rewards/checkout/cashback/{ORDER_FORM_ID} ou POST /pub/widget/rewards/checkout/cashback Headers
string
required
Identificador da loja.
string
required
Token do usuário obtido no login seguro.
Path Parameters (GET)
string
required
Identificador do carrinho.
Body (POST)
string
required
Identificador do carrinho (order_form_id).

Exemplo (GET)

Exemplo (POST)

Resposta

number
Saldo total de cashback do cliente.
number
Valor de cashback que pode ser utilizado nesta compra.
number
Valor máximo de cashback permitido para esta compra.
string
Regras de utilização do cashback (texto para exibição).
boolean
Indica se o cliente pode usar cashback nesta compra.
string
Texto informando quanto cashback o cliente receberá.
string
Texto informando quanto falta para usar o cashback.
boolean
Indica se o cashback está disponível.
number
Valor restante para usar todo o cashback.
number
Valor restante para atingir o mínimo necessário.
boolean
Indica se há produtos no carrinho que não são elegíveis para cashback.
number
Valor mínimo do carrinho para usar cashback.

6.1. Aplicar Cashback

Essa etapa será utilizada para a aplicação de cashback.

Requisição

POST /pub/widget/rewards/checkout/cashback/{ORDER_FORM_ID}/redeem ou POST /pub/widget/rewards/checkout/cashback/redeem Headers
string
required
Identificador da loja.
string
required
Token do usuário obtido no login seguro.
Path Parameters (primeira opção)
string
required
Identificador do carrinho.
Body
string
Identificador do carrinho (order_form_id). Obrigatório na segunda opção (sem path param).
number
required
Valor do cashback a ser resgatado.
integer
required
Origem do resgate. Use 3 para checkout mobile.
number
required
Valor do carrinho (sem descontos ou frete).

Exemplo (com path param)

Exemplo (com body)

Resposta


6.2. Consultar Cashback Aplicado

Essa etapa é utilizada para verificar se há cashback aplicado ao carrinho.

Requisição

GET /pub/widget/rewards/checkout/cashback/{ORDER_FORM_ID}/redeemed ou POST /pub/widget/rewards/checkout/cashback/redeemed Headers
string
required
Identificador da loja.
string
required
Token do usuário obtido no login seguro.
Path Parameters (GET)
string
required
Identificador do carrinho.
Body (POST)
string
required
Identificador do carrinho (order_form_id).

Exemplo (GET)

Resposta


6.3. Atualizar Cashback (Refresh)

Essa etapa é utilizada para recalcular o cashback quando o carrinho é alterado (itens adicionados/removidos).

Requisição

POST /pub/widget/rewards/checkout/cashback/{ORDER_FORM_ID}/refresh ou POST /pub/widget/rewards/checkout/cashback/refresh Headers
string
required
Identificador da loja.
string
required
Token do usuário obtido no login seguro.
Path Parameters (primeira opção)
string
required
Identificador do carrinho.
Body (segunda opção)
string
required
Identificador do carrinho (order_form_id).

Exemplo

Resposta

boolean
Indica se o cashback foi removido (por exemplo, se o carrinho ficou abaixo do mínimo).
string
Mensagem para exibir ao cliente.

7. Consultar Recompensa Aplicada

Esta etapa será utilizada para o caso do cliente sair da tela do checkout e seja necessário reaplicar o estado de recompensa resgatada a ele.

Requisição (GET)

GET /pub/widget/rewards/checkout/{checkoutCode}

Requisição (POST)

POST /pub/widget/rewards/checkout Headers
string
required
Identificador da loja.
string
required
Token do usuário obtido no login seguro.
Path Parameters (GET)
string
required
Identificador do carrinho (order_form_id).
Body (POST)
string
required
Identificador do carrinho (order_form_id).

Exemplo (GET)

Exemplo (POST)

Resposta


8. Remover Recompensa Aplicada

Esta etapa será utilizada para remoção de uma recompensa que foi aplicada ao carrinho.
Este método apenas remove a recompensa resgatada do carrinho. Ele não realiza o estorno dos pontos para a carteira do consumidor e nem cancela o resgate da recompensa.

Requisição

POST /pub/widget/rewards/checkout/{reward_redeemed_id}/reverse Headers
string
required
Identificador da loja.
string
required
Token do usuário obtido no login seguro.
Path Parameters
integer
required
ID da recompensa resgatada a ser removida do carrinho.

Exemplo


8.1. Remover Cashback Aplicado

Esta etapa será utilizada para remoção de um cashback que foi aplicado ao carrinho.
Este método remove o cashback do carrinho e também realiza o estorno dos pontos de volta à carteira do consumidor, diferentemente da remoção de recompensa.

Requisição

DELETE /pub/widget/rewards/checkout/cashback/{ORDER_FORM_ID}/redeem ou POST /pub/widget/rewards/checkout/cashback/redeem/remove Headers
string
required
Identificador da loja.
string
required
Token do usuário obtido no login seguro.
Path Parameters (DELETE)
string
required
Identificador do carrinho.
Body (POST)
string
required
Identificador do carrinho (order_form_id).
number
Valor do carrinho (sem descontos ou frete). Opcional.

Exemplo (DELETE)

Exemplo (POST)

Resposta

boolean
Indica se a operação foi bem sucedida.
string
Mensagem para exibir ao cliente.

9. Consultar Objetivos

Essa etapa é utilizada para listar os objetivos (missões) disponíveis para o cliente no programa de fidelidade. Objetivos são formas de ganhar pontos como compras, indicações, aniversário, etc.

Requisição

GET /pub/widget/objectives Headers
string
required
Identificador da loja.
string
required
Token do usuário obtido no login seguro.

Exemplo

Resposta

boolean
Indica se houve erro na requisição.
array
Lista de objetivos disponíveis.

Enumeração ObjectiveType


9.1. Objetivo de Compra (Purchase)

O objetivo de compra informa ao cliente quantos pontos ele ganhará ao realizar compras. Os pontos são atribuídos automaticamente quando a compra é confirmada.
Este objetivo é informativo. Os pontos são creditados automaticamente pela plataforma ao confirmar o pedido. Não é necessário chamar nenhum endpoint para “completar” este objetivo.
Campos específicos: Exemplo de exibição:
“Ganhe de 10 a 500 pontos a cada compra realizada”

9.2. Objetivo de Aniversário (Birthday)

O objetivo de aniversário permite ao cliente cadastrar sua data de nascimento e receber um bônus. O bônus pode ser em pontos ou em recompensa (cupom de desconto).

Fluxo

  1. Verificar o BenefitStatus do objetivo
  2. Se BenefitStatus = 0, exibir formulário para cadastrar data
  3. Chamar endpoint para salvar aniversário
  4. Se BenefitStatus = 2, o bônus está disponível para resgate

Enumeração BenefitStatus

Cadastrar Aniversário

POST /pub/widget/customer/setbirthday Query Parameters
string
required
Data de aniversário no formato dd/MM ou yyyy-MM-dd.

Exemplo

Campos específicos do objetivo de aniversário:
A data de aniversário só pode ser cadastrada uma vez. Após definida, não pode ser alterada.

9.3. Objetivo de Indicação (Referral)

O objetivo de indicação permite que o cliente indique amigos e ganhe pontos quando o amigo indicado realiza uma compra.

9.3.1. Indicar Amigo por Email

POST /pub/widget/objectives/referral/refer Body
string
required
E-mail do amigo a ser indicado.

Exemplo

POST /pub/widget/objectives/referral/friend Gera um link de indicação que pode ser compartilhado via WhatsApp, redes sociais ou copiado. Body
string
Canal de compartilhamento (ex: whatsapp, copy).

Exemplo

9.3.3. Gerar Cupom para Amigo

POST /pub/widget/objectives/referral/coupon Gera um cupom de desconto que será utilizado pelo amigo indicado na primeira compra.

Exemplo

9.3.4. Consultar Indicações Enviadas

GET /pub/widget/objectives/referral/sent Retorna a lista de indicações feitas pelo cliente e o status de cada uma.

Exemplo

Campos específicos do objetivo de indicação:

9.4. Objetivo de Review (Review)

O objetivo de review recompensa o cliente por avaliar produtos ou a loja.

Consultar URLs de Avaliação

GET /pub/widget/objectives/review/urls Retorna as URLs de avaliação disponíveis para o cliente (ex: avaliações de pedidos recentes).

Exemplo

Resposta

Campos específicos do objetivo de review: Exemplo de exibição:
“Avalie sua compra e ganhe 50 pontos + 20 pontos extras por comentário + 30 pontos extras por foto”

9.5. Objetivos de Redes Sociais

Esses objetivos recompensam o cliente por seguir a loja nas redes sociais.

Registrar Follow

POST /pub/widget/objectives/createpointsfollowsocialmedia Body
integer
required
Tipo da rede social (ver tabela abaixo).

Tipos de Rede Social

Exemplo

Resposta

Os pontos de redes sociais são baseados na confiança — a plataforma registra que o cliente clicou para seguir, mas não verifica automaticamente se ele realmente seguiu.

9.6. Quiz

Quizzes são enquetes interativas que recompensam o cliente por responder perguntas.

9.6.1. Listar Quizzes

GET /pub/widget/quiz

Exemplo

Resposta

Tipos de Questão

9.6.2. Obter Quiz Específico

GET /pub/widget/quiz/{uid} Path Parameters
string
required
Identificador único do quiz.

9.6.3. Responder Quiz

POST /pub/widget/answer Body Array de respostas, onde cada item contém:
integer
required
ID da questão sendo respondida.
array
IDs das opções selecionadas (para questões Multiple e Selection).
string
Resposta em texto livre (para questões Open).

Exemplo


9.7. Objetivo Customizado (Custom)

Objetivos customizados são configurados pela loja e podem representar qualquer ação personalizada. Eles possuem um botão de ação que redireciona o cliente para uma URL externa. Campos específicos: Exemplo de exibição:
“Participe do evento exclusivo e ganhe 300 pontos” [Botão: “Participar” → redireciona para URL]

9.8. Resgatar Objetivo

Para objetivos que permitem resgate manual (como aniversário ou signup), utilize este endpoint.

Requisição

GET /pub/widget/objectives/{objectiveType}/redeem Headers
string
required
Identificador da loja.
string
required
Token do usuário obtido no login seguro.
Path Parameters
integer
required
Tipo do objetivo a ser resgatado (ver tabela ObjectiveType).

Exemplo

Resposta