Saques
No momento em que um usuário efetuar um saque, os dados do saque deverão ser enviados para a QI Tech. Deste modo, será possível realizar uma análise do risco envolvido na operação, baseado naquele conjunto de dados.
Definição do Objeto de Saque
Request Body
{
"id": "082373263",
"amount": 12979,
"withdrawal_date": "2020-10-07T15:06:25-03:00",
"service_description": "SAQUE EM CAIXA 24H",
"source_account": {
"participant": "17315359",
"branch": "0000",
"account_number": "10442",
"account_digit": "6",
"account_type": "CACC",
"opening_date": "2020-01-15T18:00:00-03:00"
},
"client": {
"id": "182373263",
"type": "natural_person",
"document_number": "023.456.789-01",
"name": "John Payer",
"email": "john@payer.com",
"address": {
"street": "Av. Eng. Luis Carlos Berrini",
"number": "105",
"neighbourhood": "Brooklin",
"city": "São Paulo",
"uf": "SP",
"complement": "Cj 303",
"postal_code": "04501-140"
},
"phone": {
"international_dial_code": "55",
"area_code": "11",
"number": "998861708",
"type": "mobile"
},
"sales_channel": "inbound_sales",
"segment": "Personalité"
},
"terminal": {
"id": "1234566",
"latitude": -45.2753548,
"longitude": -15.24587,
"address": {
"street": "Av. Eng. Luis Carlos Berrini",
"number": "105",
"neighbourhood": "Brooklin",
"city": "São Paulo",
"uf": "SP",
"complement": "Cj 303",
"postal_code": "04501-140"
},
"type": "atm"
},
"authentication": {
"used_password": true,
"used_card": true,
"used_fingerprint": true,
"typed_account_number": false
}
}
Um saque deve ser enviado para a API antes de ser encaminhada para o sistema de processamento, a fim de realizar uma validação prévia de fraude.
O status do saque representa a decisão retornada pelo modelo sobre aquela conta. Os seguintes status são utilizados na flag analysis_status:
automatically_approved
automatically_reproved
Abaixo estão listados os significados de cada uma das decisões, devolvida na flag analysis_status:
status | descrição |
---|---|
automatically_approved | Recomenda-se que este saque seja aprovado. |
automatically_reproved | Recomenda-se que este saque seja reprovado. |
nome | tipo | descrição |
---|---|---|
id | string | Identificador do saque no sistema do cliente. É essencial que este número seja único para cada saque |
amount | inteiro | Valor do saque em centavos - conforme descrição da seção "Padrões". |
withdrawal_date | datetime | Data e hora da realização do saque - conforme descrição da seção "Padrões" |
source_account | account | Objeto que determina a conta de origem do recurso a ser sacado |
client | client | Objeto com os dados do cliente detentor da conta de origem |
terminal | terminal | Objeto com os dados do terminal onde o saque está sendo realizado |
authentication | authentication | Objeto com as informações de autenticação |
Objetos do Saque
Object Terminal
Request Body
{
"id": "1234566",
"latitude": -45.2753548,
"longitude": -15.24587,
"address": {
"street": "Av. Eng. Luis Carlos Berrini",
"number": "105",
"neighbourhood": "Brooklin",
"city": "São Paulo",
"uf": "SP",
"complement": "Cj 303",
"postal_code": "04501-140"
},
"type": "atm"
}
Objeto que representa o terminal que foi utilizado para o saque.
nome | tipo | descrição |
---|---|---|
id | string | Identificador do terminal no sistema do cliente |
latitude | number | Latitude, em graus, da localização do terminal |
longitude | number | Longitude, em graus, da localização do terminal |
address | address | Endereço do terminal |
type | enum | Tipo do terminal, possíveis valores: "atm", "counter" |
Object Authentication
Request Body
{
"used_password": true,
"used_card": true,
"used_fingerprint": true,
"typed_account_number": false
}
Objeto que define os parâmetros da autenticação utilizada no momento do saque.
nome | tipo | descrição |
---|---|---|
used_password | boolean | Determina se o usuário utilizou senha |
used_card | boolean | Determina se o usuário está com o cartão presente na autenticação |
used_card_chip_and_pin | boolean | Determina se o usuário utilizou o chip e senha do cartão |
used_card_magnetic_stripe | boolean | Determina se o usuário utilizou a tarja magnética do cartão |
used_fingerprint | boolean | Determina se o usuário utilizou fingerprint |
typed_account_number | boolean | Determina se o usuário digitou os dados da conta |
Enviar um Saque
Request Body
{
"id": "12345",
...
}
Response Body
{
"withdrawal_key": "13d680ef-4b72-4cb2-a63d-cf3d790abaaf",
"status": "automatically_approved",
"reason": "rule_decision_enum"
}
Para realizar a avaliação de um pagamento de conta, basta enviar um objeto do tipo withdrawal ao seguinte endpoint:
POST https://api.caas.qitech.app/withdrawal/withdrawal
Recuperar um Saque
Request Body
{
"id": "082373263",
"amount": 12979,
...
}
Para recuperar os dados de um saque, basta enviar uma requisição ao seguinte endpoint:
GET https://api.caas.qitech.app/withdrawal/withdrawal/{withdrawal_id}
Onde withdrawal_id é o identificador da transação no sistema do cliente utilizado no envio do saque.
Atualizar um saque
Request Body
{
"withdrawal_status": "completed",
"event_date": "2020-10-07T15:06:25-03:00"
}
Response Body
{
"withdrawal_key": "13d680ef-4b72-4cb2-a63d-cf3d790abaaf",
"withdrawal_status": "completed"
}
Após um saque ser criada e analisada, o dinheiro será disponibilizado ao usuário. Este processo pode ser interrompido por alguma outra regra de negócio. Deste modo, é necessário que seja informada a atualizações de status do saque quando este for finalizado, através do endpoint:
PUT https://api.caas.qitech.app/withdrawal/withdrawal/{withdrawal_id}
Deste modo, garante-se que nossa base de dados seja atualizada e sejamos capazes de identificar os saques que estejam realmente sucetíveis a fraude.