Skip to content

IF Transactions

Endpoint para adicionar transações do fã ao sistema (compras, devoluções, cupons).

URLs

MétodoURLAçãoDescrição
POST/api/IF_TransactionsCadastrarAdiciona transações do fã ao sistema

Produção:

{connect-producao}/api/IF_Transactions

Homologação:

{connect-homologacao}/api/IF_Transactions

Autenticação

Todas as requisições requerem um token de acesso obtido no endpoint de Security. O token deve ser enviado no header AccessToken.

AccessToken: {seu_token}

Adicionar Transações

Requisição

Endpoint: POST {connect-producao}/api/IF_Transactions

Headers:

AccessToken: {access_token}
Content-Type: application/json

Estrutura do Body

O body é um array de objetos, onde cada objeto representa um comprador e suas transações.

json
[
  {
    "userCode": "string",
    "userCodeType": 0,
    "system": 0,
    "name": "string",
    "email": "string",
    "emailVerified": true,
    "cpf": "string",
    "gender": "string",
    "birthday": "string",
    "mobile": "string",
    "phone": "string",
    "addr1": "string",
    "addr2": "string",
    "addrNumber": 0,
    "addr3": "string",
    "addrCity": "string",
    "addrState": "string",
    "addrZip": "string",
    "addrCountry": "string",
    "transactions": [ ... ]
  }
]

Campos do Comprador

CampoTipoObrigatórioDescrição
userCodestringSimCPF ou Email do comprador (usado para identificação)
userCodeTypenumberSimTipo do código: 1 (CPF), 4 (Email)
systemnumberSimSistema de origem (a ser definido pela Fanbase)
namestringSimNome do comprador
emailstringSimEmail do comprador
emailVerifiedbooleanSimSe o email foi previamente verificado
cpfstringSimCPF do comprador (sem formatação)
genderstringNãoGênero: M / F / O / null
birthdaystringNãoData de nascimento (formato DD/MM/YYYY)
mobilestringNãoTelefone celular
phonestringNãoTelefone alternativo
addr1stringNãoRua
addr2stringNãoComplemento
addrNumbernumberNãoNúmero da casa
addr3stringNãoBairro
addrCitystringNãoCidade
addrStatestringNãoEstado (2 dígitos: SP/DF/RJ/etc)
addrZipstringNãoCEP
addrCountrystringNãoCódigo numérico do país (ver tabela auxiliar de Countries)

Campos das Transações

json
{
  "transactions": [
    {
      "externalCode": "string",
      "date": "2025-09-20T18:41:31.219Z",
      "type": 0,
      "productType": 0,
      "productDesc": "string",
      "productPrice": 0,
      "productExternalCode": "string",
      "qty": 0,
      "value": 0,
      "channel": "string",
      "deliveryMode": "string",
      "priceType": "string",
      "cupon": "string",
      "paymentMode": "string",
      "complement": "string",
      "discount": "string",
      "discountValue": 0
    }
  ]
}
CampoTipoObrigatórioDescrição
externalCodestringSimCódigo único da transação no sistema de origem
datedatetimeSimData da transação (ISO 8601)
typenumberSimTipo da transação (ver tabela abaixo)
productTypenumberSimTipo de produto (ver tabela abaixo)
productDescstringSimDescrição do produto
productExternalCodestringSimCódigo do produto no sistema de origem
qtynumberSimQuantidade
valuenumberSimValor unitário do produto
channelstringSimCanal de venda (ex: Nome da loja)
deliveryModestringNãoModo de entrega
priceTypestringNãoTipo de preço
cuponstringNãoCódigo do cupom de desconto
paymentModestringSimModo de pagamento (Cartão de crédito, Pix, etc)
complementstringNãoDados complementares (aceita JSON string). Ex: número da linha do pedido
discountstringNãoMotivo do desconto
discountValuenumberNãoValor do desconto

Tipos de Transação (type)

CódigoTipo
1Venda
2Devolução
161Cupom usado
162Cupom não usado

Tipos de Produto (productType)

CódigoTipo
1Produto
2Serviço

Exemplo Completo

json
[
  {
    "userCode": "12345678900",
    "userCodeType": 1,
    "system": 0,
    "name": "João da Silva",
    "email": "joao@exemplo.com",
    "emailVerified": true,
    "cpf": "12345678900",
    "gender": "M",
    "birthday": "15/08/1990",
    "mobile": "+5511999999999",
    "phone": "+5511888888888",
    "addr1": "Rua Exemplo",
    "addr2": "Apto 101",
    "addrNumber": 123,
    "addr3": "Centro",
    "addrCity": "São Paulo",
    "addrState": "SP",
    "addrZip": "01234567",
    "addrCountry": "31",
    "transactions": [
      {
        "externalCode": "PEDIDO-2025-001",
        "date": "2025-09-20T18:41:31.219Z",
        "type": 1,
        "productType": 1,
        "productDesc": "Camisa Oficial 2025",
        "productExternalCode": "PROD-CAM-001",
        "qty": 2,
        "value": 299.90,
        "channel": "Loja Online",
        "deliveryMode": "Entrega",
        "priceType": "Normal",
        "cupon": "DESCONTO10",
        "paymentMode": "Cartão de Crédito",
        "complement": "{\"linha\": 1}",
        "discount": "Cupom de desconto",
        "discountValue": 29.99
      },
      {
        "externalCode": "PEDIDO-2025-001",
        "date": "2025-09-20T18:41:31.219Z",
        "type": 1,
        "productType": 1,
        "productDesc": "Boné Oficial",
        "productExternalCode": "PROD-BON-001",
        "qty": 1,
        "value": 89.90,
        "channel": "Loja Online",
        "deliveryMode": "Entrega",
        "priceType": "Normal",
        "paymentMode": "Cartão de Crédito",
        "complement": "{\"linha\": 2}"
      }
    ]
  }
]

Pedidos com múltiplos itens

Quando um pedido tiver mais de um item, envie cada item como uma transação separada dentro do array transactions, usando o campo complement para identificar a linha do pedido (ex: {"linha": 1}, {"linha": 2}).


Resposta de Sucesso

Status: 200 OK

json
{
  "header": {
    "codigo": 1,
    "msg": "Transações processadas com sucesso"
  },
  "data": {
    "total": 1,
    "processadas": 2,
    "erros": 0
  }
}

Campos da Resposta

CampoTipoDescrição
totalnumberTotal de compradores processados
processadasnumberTotal de transações processadas
errosnumberTotal de transações com erro

Exemplo de Implementação

javascript
async function adicionarTransacoes(transacoes, accessToken) {
  const response = await fetch('{connect-producao}/api/IF_Transactions', {
    method: 'POST',
    headers: {
      'AccessToken': accessToken,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(transacoes)
  });

  if (!response.ok) {
    throw new Error(`Erro ${response.status}: ${response.statusText}`);
  }

  return await response.json();
}

// Exemplo de uso
const transacoes = [
  {
    userCode: "12345678900",
    userCodeType: 1,
    system: 0, // Será definido pela Fanbase
    name: "João da Silva",
    email: "joao@exemplo.com",
    emailVerified: true,
    cpf: "12345678900",
    transactions: [
      {
        externalCode: "PEDIDO-001",
        date: new Date().toISOString(),
        type: 1, // Venda
        productType: 1, // Produto
        productDesc: "Camisa Oficial",
        productExternalCode: "CAM-001",
        qty: 1,
        value: 299.90,
        channel: "Loja Online",
        paymentMode: "Cartão de Crédito"
      }
    ]
  }
];

adicionarTransacoes(transacoes, accessToken)
  .then(result => console.log(result))
  .catch(error => console.error(error));

Casos de Uso Comuns

Registrar Venda de E-commerce

json
{
  "type": 1,
  "productType": 1,
  "channel": "E-commerce",
  "paymentMode": "Cartão de Crédito"
}

Registrar Devolução

json
{
  "type": 2,
  "productType": 1,
  "channel": "E-commerce"
}

Registrar Uso de Cupom

json
{
  "type": 161,
  "cupon": "DESCONTO20",
  "discountValue": 50.00
}

Documentação da API Fanbase