Usuário Provisório

Permite o cadastro de usuários de forma simplificada facilitando a captura de dados de usuários.

Feito para:  Estabelecimentos ComerciaisEmissoresAdquirentesFacilitadores

Como funciona

Primeiros passos

  1. Leia Introdução ao GraphQL, com exemplos reais da nossa API.

  2. Crie um usuário no portal do desenvolvedor.

  3. Cadastre sua primeira aplicação.

  4. Utilize o dashboard para acessar suas configurações de acesso.

  5. Para explorar rapidamente as APIs aqui na página de documentação, use o console de GraphQL, na seção de referências. Nele, você pode ver as consultas de exemplo, executá-las e alterá-las.

Primeiros passos na plataforma de Desenvolvedores Elo

Jaydson GomesDesenvolvedor Evangelista

Disponibilizando interfaces de entrada mais simplificadas com campos não obrigatórios, esta API fornece um conjunto de mutations GraphQL para o cadastro rápido das informações de um usuário ou portador de cartão.

A captura desses dados pode auxiliar a área de negócios trazendo mais insumos para as tomadas de decisões estratégicas visando sempre a melhor experiência dos usuários dentro do ecossistema de APIs da Elo.

Para criação de um usuário provisório deve-se utilizar a mutation createProvisionedUser. Forneça o maior número de informações do usuário possível e para especificar a origem do cadastro utilize o campo origin. A mutation abaixo mostra a criação de um usuário provisório.

mutation {
    createProvisionedUser(
        input: {
        clientMutationId: "123", 
        name: "name", 
        legalIds: {
          cpf: "123456789", 
          rg: {
            number: "0978654322", 
            issuerOrganization: "SSP", 
            issuerState: "SP", 
            issueDate: "2018-04-24"
          }
        }, 
        birthday: "1993-08-09", 
        gender: MALE, 
        maritalStatus: SINGLE, 
        income: {
          personal: 1000.01, 
          family: 1000.01, 
          currency: "BRL"
        }, 
        contacts: {
          type: PHONE, 
          context: "context",
          value: "+5527999365103"
        }, 
        addresses: {
          context: "Casa", 
          country: "BRA", 
          city: "Campinas", 
          state: "São Paulo", 
          stateAbbrev: "SP", 
          zip: "2343434", 
          district: "district", 
          kind: "AV.", 
          number: 123, 
          place: "Sao Jose dos baurus", 
          complement: "complement", 
          reference: "reference", 
          instructions: "Instructuions", 
          lon: 1232, 
          lat: 12121
        }
        origin: "Campanha USE Elo",
        originUrl: "www.dev.elo.com.br/promocao",
        originChanneRaw: "utm_campaing=sales_event",
        originChannel: "Facebook",
        localEvent: "Campinas"
        event: "RIR",
        ticket: "20191010"
        transaction: {
          dateTime: "2019-10-10T11:41:59.787Z"
          amount : {
            currency: "EUR",
            value: "12.00"
          }
        }
          }) 
    {
        clientMutationId
        id
        name
    }
}

Para alterar os dados de um usuário já existente dentro do ecossistema de APIs, é possível utilizar a mutation updateProvisionedUser informando apenas os campos que devem ser alterados.

mutation {
  updateProvisionedUser(
        input: {
            clientMutationId: "232", 
            id: "5d83bdde-99bd-4ab7-bc5c-a1e5f8f8c244", 
            legalIds: {
                cpf: "1234567890", 
                rg: {
                    number: "0987654321", 
                    issuerOrganization: "SSP", 
                    issuerState: "SP", 
                    issueDate: "2018-04-24"
                }
            }, 
            birthday: "1993-08-09", 
            addresses: {
                number: 321, 
                country: "BRA", 
                state: "São Paulo", 
                city: "Campinas", 
                zip: "12312312", 
                place: "place"
            }, 
            contacts: {
                type: PHONE, 
                value: "+5527999365103"
            }
            event: "RIR",
            ticket: "20191010"
            transaction: {
              dateTime: "2019-10-10T11:41:59.787Z"
              amount : {
                currency: "EUR",
                value: "12.00"
              }
            }
        }
    ) 
    {
        clientMutationId
        user {
            id
            name
            legalIds {
                cpf { number }
            }
            contacts {
                type
                context
                value
                verified
            }
            addresses {
                context
                country
                city
                state
                zip
                district
                kind
                number
                place
                complement
                reference
                instructions
                lon
                lat
            }
            cards {
                id
                last4
                status { status }
            }
        }
        cards { id }
    }
}

A API oferece a opção da criação de um cartão para um usuário provisório. Para criar um cartão é necessário utilizar a mutation createProvisionedCard. Ela é responsável por criar um novo cartão associado ao usuário. Para poder fazer uso dessa função o usuário provisório deve estar criado e ter cadastrado uma chave pública.

Para cadastrar uma chave pública use a mutation addPublicKeyToProvisionedUser.

mutation {
  addPublicKeyToProvisionedUser(
        input: {
            clientMutationId: "123", 
            userId: "5d83bdde-99bd-4ab7-bc5c-a1e5f8f8c244", 
            key: "{\"kty\":\"EC\", \"kid\":\"my-public-key-id-1\", \"x\":\"g_Sr4WwVDt5Qy3KonZyXqFwWykTR9KVMCt8Sx-dXSB8\",\"y\":\"ydSE-mUMtuhBTI_txDpd2ivb7e6FNzxq4e_18iHFZ2U\",\"crv\":\"P-256\"}", 
            format: JWK
        }
    ) 
    {
        clientMutationId
        user {
            id
            verified
            username
            name
            firstName
            lastName
            displayName
            legalIds {
                cpf { number }
            }
            birthday
            age
            gender
            maritalStatus
            income {
                personal
                family
                currency
            }
            contacts {
                type
                context
                value
                verified
            }
            addresses {
                context
                country
                city
                state
                zip
                district
                kind
                number
                place
                complement
                reference
                instructions
                lon
                lat
            }
        }
        publicKey {
            id
            key
            fingerprint
        }
    }
}

Para criar um cartão é necessário primeiro obter os dados sensíveis. O campo sensitive é o conteúdo sensível (Número do cartão, Nome do portador, Vencimento, etc) gerado a partir de um processo de assinatura e criptografia, cujo payload foi assinado a partir do uso de uma a chave privada do usuário e na sequência criptografado fazendo uso de uma chave pública do servidor. Saiba como obter o sensitive.

Após obtido os dados sensíveis do cartão, é necessário utilizar a mutation createProvisionedCard. Essa mutation cria um cartão para o usuário em questão. Nela, são informados os campos identificadores do usuário userId, o campo hashCard (hash do cartão cadastrado pelo usuário), as informações contidas no cartão através dos campos sensitive, bin e last4, e o endereço de cobrança do cartão, com o campo billingAddress.

mutation {
    createProvisionedCard(input: {
      clientMutationId: "1232", 
      userId: "5d83bdde-99bd-4ab7-bc5c-a1e5f8f8c244", 
      hashCard: "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad", 
      sensitive: "eyJhbGciOiJFQ0RILUVTIiwiZW5jIjoiQTEyOENCQy1IUzI1NiIsImVwayI6eyJ", 
      bin: "655500", 
      last4: "6378", 
      billingAddress: {
        context: "Casa",
        country: "BRA",
        city: "São Paulo",
        state: "São Paulo",
        stateAbbrev: "SP",
        zip: "13040-735",
        kind: "Av.",
        number: 3297,
        place: "São José dos Campos",
        complement: "Bloco F, Apt 304",
        reference: "próximo ao parque das águas",
        instructions: "Autorização do receptor",
        district: "Distrito" 
      } 
    }) {
    clientMutationId
    card {
      id
      last4
      bin {
        number
      }
      expiry {
        month
        year
      }
      status {
        status
      }
    }
  }
}

Para consultar os dados de um usuário provisório basta utilizar a query informando os dados desejados como mostra o exemplo abaixo:

query {
    provisionedUsers(filter: {name: "name", legalId: {cpf: ""}, bin: "", last4: ""}) {
        edges {
            node {
                id
                age
                name
                birthday
                gender
                maritalStatus
                income {
                    personal
                    family
                    currency
                }
                origin
            }
        }
    }
}