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âmetroDescriçãoTipoValoresExemplos
pageDefine a página de buscanumber ?page=2
limitDefine o número de registros por páginanumber ?limit=150
sortDefine a ordenação da buscastring ?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âmetroDescriçãoTipoValoresExemplos
idID do registroString ?id=5aeb5179-0545-471a-ba27-bb8f30eda2c1
customer_idID do clientenumber ?customer_id=2
user_idID do usuário que fez a criação do lançamentonumber ?user_id=2
calculation_idID do cálculo que gerou o lançamentostring ?calculation_id=5aeb5179-0545-471a-ba27-bb8f30eda2c1
typeTipo do lançamentostring‘credit’ | ‘debit’?type=credit
statusStatus do lançamentostring‘pending’ | ‘approved’ | ‘canceled’ | ‘expired’?status=approved
releasedApenas lançamentos liberadosboolean1 | 0?released=1
expiredApenas lançamentos expiradosboolean1 | 0?expired=1
remaining_usageApenas lançamentos que ainda tem saldo restanteboolean1 | 0remaining_usage=1
already_usedApenas lançamentos que já utilizaram pelo menos um pouco do valorboolean1 | 0already_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.