Cashback

Tiago Assis
Tiago Assis
  • Atualizado

Para uso das promoções de cashback, temos endpoints para consulta de saldos de clientes e lançamentos, onde é possível visualizar os valores, datas de expiração/liberação, etc.

 

Paginação

 

Parâmetro Descrição Tipo Valores Exemplos
page Define a página de busca number   ?page=2
limit Define o número de registros por página number   ?limit=150
sort Define a ordenação da busca string   ?sort=-id
?sort=id

 

Com isso, já é possível realizar toda a paginação e ordenação de resultados, segue o mesmo padrão da nossa api principal.

O retorno segue essa interface:

 

export interface Pagination<T = any

    data: T[]
meta: {
from: number
to: number
total: number
per_page: number
current_page: number
last_page: number
}
}

 

Saldos

Para busca dos saldos, temos os seguintes endpoints:

 

/cashbacks/customers/balances

/cashbacks/customers/balances/:customer_id

 

A interface de retorno para os saldos é essa:

 

export interface CashbackCustomerBalance

    customer_id: number
balance: number
next_expiration: string
next_release: string
}

 

Lançamentos

Para dados de lançamentos, temos também dois endpoints:

 

POST /cashbacks/entries

GET /cashbacks/entries

GET /cashbacks/entries/:id

 

A interface é essa:

 

export interface CashbackEntry {

    id: string
user_id: number
calculation_id: number
customer_id: number
customer_name: string
user_name: string
type: CashbackEntryAction
value: number
used: number
status: CashbackEntryStatus
expires_at: string
release_at: string
is_expired?: boolean
created_at: string
updated_at: string
}

 

Atualização de saldos

Para atualizar o salvo pode ser utilizado a rota POST

 

POST /cashbacks/entries

 

Exemplo de payload:

{
"customer_id": 321,
"customer_name": "joão testador",
"type": "credit", // "credit" ou "debit"
"value": 123.99,
"status": "approved", //pending, approved, canceled, expired
"expires_at": null, // data de expiração, opcional, sem expiração sem não enviado
"release_at": null //data de liberação, opcional, imediato se não enviado
}

 

Os filtros disponíveis para esse endpoint, são esses:

 

Parâmetro Descrição Tipo Valores Exemplos
id ID do registro String   ?id=5aeb5179-0545-471a-ba27-bb8f30eda2c1
customer_id ID do cliente number   ?customer_id=2
user_id ID do usuário que fez a criação do lançamento number   ?user_id=2
calculation_id ID do cálculo que gerou o lançamento string   ?calculation_id=5aeb5179-0545-471a-ba27-bb8f30eda2c1
type Tipo do lançamento string ‘credit’ | ‘debit’ ?type=credit
status Status do lançamento string ‘pending’ | ‘approved’ | ‘canceled’ | ‘expired’ ?status=approved
released Apenas lançamentos liberados boolean 1 | 0 ?released=1
expired Apenas lançamentos expirados boolean 1 | 0 ?expired=1
remaining_usage Apenas lançamentos que ainda tem saldo restante boolean 1 | 0 remaining_usage=1
already_used Apenas lançamentos que já utilizaram pelo menos um pouco do valor boolean 1 | 0 already_used=1

 

Webhooks

Está em desenvolvimento novos webhooks para as alterações de saldo de cashback, funcionarão da seguinte maneira:

Toda e qualquer alteração de saldo, será enviado um webhook de update de cashback balance, com esse payload:

 

export interface Webhook

    id: string
event: cashback_balance
data: CashbackBalance
}

 

Quando for criado/atualizado um lançamento, será enviado um webhook de criação ou atualização de lançamento, com esse payload:

 

export interface Webhook {

    id: ID
event: cashback_entry.updated | cashback_entry.created
data: CashbackEntry
}

 

Quando uma entry já existente tiver mudança de status, for aprovada, cancelada, etc, será enviado esse Webhook:

 

export interface Webhook> {

    id: ID
event: cashback_entry_status.updated
data: CashbackEntry
}

 

E durante a noite, teremos duas rotinas, para monitoramento das datas de cashback.

À meia noite, uma rotina será disparada para procurar todos os lançamentos que expiram nos próximos dois dias, e será disparado um webhook para cada uma delas, com essas informações:

 

export interface Webhook>

    id: ID
event: cashback_entry.expiring
data: CashbackEntry
}

 

E também à meia noite, vamos buscar todos os lançamentos que liberam no dia atual, e agendar para efetuar um disparo de webhook, exatamente no momento da liberação, com esse payload:

 

export interface Webhook>

    id: ID
event: cashback_entry.released
data: CashbackEntry

Esse artigo foi útil?

Usuários que acharam isso útil: 0 de 0

Tem mais dúvidas? Envie uma solicitação

Comentários

0 comentário

Por favor, entre para comentar.