arrow-left

Only this pageAll pages
gitbookPowered by GitBook
1 of 35

Portuguese (Brazil)

Loading...

Sobre o IDPay

Loading...

Loading...

Loading...

Loading...

Integração

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

HELP & FAQ

Loading...

Loading...

Unico IDPay

Conheça tudo sobre o produto Unico IDPay

O Unico IDPay é uma solução inovadora da Unico que combina, em uma única verificação, a identificação do shopper e a validação da titularidade do cartão de crédito. Essa abordagem assegura transações mais seguras em compras não-presenciais e ajuda a recuperar vendas que poderiam ser perdidas devido a inconsistências em pagamentos.

Com o IDPay, você garante que:

  • O usuário está ao vivo no momento que realiza a transação;

  • A identidade é do titular do cartão de crédito;

  • O cartão de crédito pertence a pessoa que está realizando a transação no seu estabelecimento;

    • Com a possibilidade de habilitar o uso autorizado e validado de cartões de terceiros.

circle-check

E mais: você tem garantia de liability em caso de erro na validação (consulte mais detalhes na seção "Chargeback").

O funcionamento é simples e eficiente: uma transação é criada a partir do número do cartão de crédito e do CPF do titular, e o IDPay se encarrega de realizar a autenticação dessa transação, seja através da biometria facial ou de uma autenticação com os metadados do device.

Além disso, o IDPay é altamente flexível, podendo ser ajustado para atender a diferentes cenários e necessidades. Sua plataforma oferece uma ampla gama de funcionalidades que suportam os mais variados casos de uso, tornando-o ideal para operações que exigem precisão e segurança.

Para o maior entendimento sobre o IDPay, siga a sequência sugerida no menu abaixo e explore todas as possibilidades que o produto oferece:

Funcionalidades

Nesta seção, você encontrará todas as funcionalidades do produto Unico IDPay

hashtag
Introdução

O Unico IDPay oferece uma ampla variedade de endpoints, módulos e funcionalidades, projetados para se adaptar a diferentes cenários e casos de uso. Abaixo, apresentamos as principais definições e aplicações de cada funcionalidade.

hashtag
Transações de pagamento

A primeira grande funcionalidade do IDPay é validar cada transação feita dentro do estabelecimento, a fim de garantir que a venda pode ser realizada para aquele usuário.

As transações são organizadas em diferentes módulos, cada um projetado para atender a cenários específicos e necessidades variadas. Explore os módulos disponíveis e veja como cada um pode ser aplicado ao seu caso de uso:

hashtag
Onboarding de Cartão de Crédito

Com esta funcionalidade, você pode realizar o onboarding do cartão de crédito dos seus usuários em sua carteira digital, garantindo que o cartão pertence ao titular correto.

O que diferencia esta funcionalidade das Transações de Pagamento são os endpoints e os parâmetros específicos da REST API, que foram desenvolvidos para atender de forma otimizada às necessidades de validação e registro de cartões na sua solução.

É possível realizar o Onboarding do Cartão de Crédito dos seus usuários de duas maneiras distintas:

  • Pode-se realizar o processo solicitando a captura biométrica dos seus usuários;

  • Pode-se reutilizar a biometria coletada em processos de Verificação de Identidade realizados por outros produtos da plataforma Unico IDCloud.

circle-info

Para a reutilizar a biometria do usuário, é necessário que você utilize outro produto da , pois é preciso referenciar um processo de biometria na criação deste tipo de transação (saiba mais na seção ).

Continue a leitura com o link sugerido abaixo:

plataforma IDCloudarrow-up-right
Validação do cartão de créditoarrow-up-right

APIs

Nesta seção, você encontrará tudo relacionado às APIs do Unico IDPay

Chargeback

Nesta seção, você encontrará tudo o que precisa saber sobre o Chargeback

hashtag
Introdução​

Como destacado nas seções anteriores, o Unico IDPay oferece a garantia de liability, assegurando a máxima acurácia nas validações realizadas. O Chargeback da Unico protege você contra possíveis prejuízos em transações onde a identidade do titular do cartão de crédito foi validada incorretamente pelo IDPay.

Caso uma transação validada pelo IDPay resulte em um processo de chargeback oficial, devidamente formalizado junto ao adquirente ou à bandeira, o cliente do IDPay poderá ser ressarcido pela Unico no valor equivalente à transação. Essa garantia é aplicável mediante comprovação, após as devidas apurações, de que houve um erro na validação realizada pelo IDPay e que a Unico foi responsável pela decisão incorreta.

Essa segurança adicional demonstra o compromisso do Unico IDPay em oferecer confiabilidade e proteção nas operações realizadas com sua solução.

circle-exclamation

O Unico IDPay não realiza ressarcimentos em casos de autofraude, ou seja, quando o titular legítimo do cartão de crédito efetua a compra e posteriormente contesta a transação.

hashtag
Quando usar essa opção?​

Quando você tiver recebido uma solicitação de chargeback por fraude e acredita que houve erro por parte do IDPay ao validar a identidade do titular do cartão de crédito.

hashtag
O que é chargeback?​

Chargeback é o processo de apuração de uma contestação de uma compra/transação realizada com cartões de crédito/débito em plataformas online, e que poderá resultar no estorno/cancelamento desta compra/transação. O chargeback pode ser classificado em dois grandes grupos:

  • Chargeback por Desacordo Comercial: Quando a transação precisa ser cancelada por algum problema na relação consumidor x estabelecimento. Exemplos: Mercadoria não entregue, mercadoria com defeito, desistência da compra, compra em duplicidade, serviço não prestado, etc.

  • Chargeback por Fraude: Quando o titular do cartão alega não ter realizado uma compra em seu nome, se inicia então o processo de disputa entre as partes (quem fica com o prejuízo).

A análise de chargeback somente poderá ser solicitada em casos de chargeback por fraude.

hashtag
Pré-requisitos para solicitar análise de chargeback​

A análise de chargeback somente poderá ser solicitada para transações que seguem todas as regras abaixo:

  • A transação deve ter sido aprovada (status approved);

  • A transação deve ter sido criada há menos de 180 dias;

  • A transação não ter sido submetida a outra análise de chargeback;

A transação deve ser do tipo "crédito".

Criando uma Conta de Serviço

Nesta seção, você encontrará como realizar a criação de uma conta de serviço para se autenticar no produto Unico IDPay

Para utilizar interações server-to-server, é preciso solicitar a criação da conta de serviço com o gerente de projetos responsável pela sua empresa enviando os seguintes dados: nome da empresa, nome da aplicação, nome, e-mail e celular do responsável pela aplicação na empresa. É preciso criar contas diferentes para os ambientes de Homologação e Produção.

Após o recebimento desses dados, será criada uma conta de serviço responsável por autenticar a sua aplicação e enviaremos um e-mail para que seja gerado o par de chaves para a conta.

Uma credencial de conta de serviço inclui um nome único de conta, um identificador da empresa (Tenant ID) e ao menos um par de chaves (pública e privada). Ao final da geração das chaves, você recebe apenas a chave privada (arquivo .key.pem), bem como o payload que deve ser utilizado para montar o JWT. Este payload terá o seguinte formato:

Caso precise da chave pública para configurar em seu sistema, contate o gerente de projetos responsável por sua conta. Também é possível gerar uma chave pública através do comando openssl a seguir:

Recursos adicionais

Nesta seção, você encontrará recursos adicionais relacionados à autenticação

Web

Nesta seção, você encontrará como implementar o iFrame e Redirect na sua aplicação web para uso do produto Unico IDPay

API Reference

Nesta seção, você encontrará todos os endpoints disponíveis do produto Unico IDPay

Controlando a experiência

Nesta seção, você encontrará todas as especificações técnicas dos SDK's disponíveis no produto Unico IDPay

openssl req -x509 -new -nodes -sha256 -days 720 \
-key fileName.key.pem -out fileName.cert.pem

Erros de autenticação

Nesta seção, você encontrará os possíveis erros que podem acontecer ao tentar de autenticar no produto Unico IDPay

Os erros retornados na requisição podem ser identificados através dos códigos abaixo e possuem a seguinte estrutura:

{
  "error": "server_error",
  "error_description": "Falha na autenticação x.x.x"
}
Nome
Descrição

1.0.1

Verifique se o ID informado na formação do "iss" é o ID do tenant correto, fornecido na geração da chave privada¹.

1.0.14

Visão geral

Nesta seção, você encontrará a visão geral da integração do produto IDPay

hashtag
Visão geral da integração

1

hashtag
Defina em qual momento do seu funil e como utilizará o IDPay

  • Irá utilizar o IDPay no topo do seu funil antifraude? Então realize nossa integração via Webview ou SDK no seu Checkout.

  • Utilizará o IDPay para recuperar transações que seu antifraude negou? Integre num fluxo via WhatsApp.

  • Está sem tempo e/ou sem recursos para implementar o IDPay de forma integrada? Utilize o produto manualmente na sua operação de mesa de análise e não deixe de recuperar as suas vendas.

triangle-exclamation

Para garantir a melhor conversão, crie a transação somente após concluir qualquer pré-autenticação ou validação que possa encerrar a operação antes da experiência do IDPay.

2

hashtag
Personalize sua experiência

Antes de criar as transações para seu cliente, garanta que a experiência do IDPay tenha a cara do seu negócio.

do seu jeito: utilize o logotipo com sua identidade, personalize os CTAs e suas cores. Garanta que o IDPay fale a mesma "língua" que seu negócio ;).

3

hashtag
Se autentique

O primeiro passo para utilizar o produto Unico IDPay é a Autenticação. Você deve possuir uma conta de serviço e realizar a autenticação OAuth2 para obter um access-token válido.

Saiba mais em .

4

hashtag
Crie uma transação

  • Irá seguir pelo fluxo integrado?

5

hashtag
Aguarde a notificação do Webhook

Para otimizar sua integração, utilize o nosso e saber quando o resultado do seu processo estiver concluído.

6

hashtag
Consulte o resultado da transação

Pronto. Com a transação concluída, da validação e tome a decisão de aprovar ou não a transação.

Autenticação

Nesta seção, você encontrará toda a especificação técnica sobre a forma de autenticação para utilização das APIs REST do produto Unico IDPay


Para utilizar o IDPay é necessário se autenticar via token de acesso, utilizando o sistema de autenticação conhecido como OAuth2.

O sistema de autenticação OAuth2 da unico suporta a interação server-to-server entre uma aplicação web e os serviços da unico.

Para este cenário, você precisará de uma conta de serviço, que é uma conta impessoal que pertence à sua aplicação e não a um usuário individual. Sua aplicação chama as APIs da unico em nome da conta de serviço, portanto usuários não estão diretamente envolvidos. Este cenário é chamado “two-legged OAuth”, ou “2LO”. Tipicamente, uma aplicação utiliza uma conta de serviço quando a aplicação chama as APIs da unico para trabalhar com seus próprios dados ao invés dos dados do usuário.

circle-exclamation

Postman Collection

Nesta seção, você encontrará a collection do Postman com a REST API para realizar a autenticação no produto Unico IDPay

Faça download do arquivo abaixo, importe no Postman e substitua o valor dos parâmetros "service_account", "tenant_id" e "secret_key" para testar a chamada.

Este é o passo zero para iniciar sua implementação, portanto não pule esta etapa.

Dúvidas?​arrow-up-right

Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da Central de Ajudaarrow-up-right.

Verifique com o responsável pelo projeto se a aplicação utilizada está ativa.

1.1.1

Parâmetro "scope" não foi informado no payload do token jwt utilizado na requisição.

1.2.4

O token jwt utilizado na requisição está expirado. Verifique o valor informado no campo "exp" do payload.

1.2.5

O token jwt utilizado na requisição não pode ser validado. Verifique os parâmetros informados e tenha certeza de tê-lo assinado da forma correta.

1.2.6

A chave privada utilizada na assinatura do token jwt utilizado na requisição não é mais aceitável. Solicite novas credenciais para a conta utilizada.

1.2.7

O token jwt utilizado na requisição não é mais aceitável, pois já foi utilizado anteriormente. Gere um novo token para fazer uma nova requisição.

1.2.11

A conta utilizada não está ativa.

1.2.14

A conta utilizada não possui as permissões necessárias.

1.2.18

A conta utilizada foi temporariamente bloqueada por ter excedido a quantidade de tentativas inválidas de autenticação.

1.2.19

A conta utilizada não está autorizada a impersonar outra conta de usuário (remova o parâmetro "sub" do payload).

1.2.20 1.2.21

Falha na decodificação do token jwt utilizado na requisição. Utilize um novo token inserindo somente os campos especificados nas seções "Campos obrigatórios" e "Campos adicionais", obedecendo à nomenclatura, semântica e tipo de cada campo.

1.2.22

O token jwt utilizado na requisição possui campos adicionais no payload que não são permitidos. Utilize um novo token inserindo somente os campos especificados nas seções "Campos obrigatórios" e "Campos adicionais", obedecendo à nomenclatura, semântica e tipo de cada campo.

1.3.1

A conta utilizada possui restrições de IP de origem.

1.3.2

A conta utilizada possui restrições de data/hora de acesso.

Crie uma transaçãoarrow-up-right utilizando nossas APIs;

  • Abra a experiência do IDPay na sua aplicação ou envie um WhatsApp para seu cliente.

  • Irá seguir pelo fluxo manual?

    • Crie uma transação direto pelo portal;

    • Envie o link para seu cliente pelo canal que desejar.

  • Configure a experiênciaarrow-up-right
    Autenticaçãoarrow-up-right
    Webhookarrow-up-right
    consulte o resultadoarrow-up-right
    file-download
    338KB
    oauth2.postman_collection.json
    arrow-up-right-from-squareOpen

    Personalizações

    Nesta seção, você encontrará todas as personalizações disponíveis no produto Unico IDPay

    hashtag
    Personalização da logotipo

    É possível personalizar a logo que é apresentada para o usuário final, conforma imagem abaixo:

    Para solicitar a inclusão desta logo, é necessário enviar ao time Unico uma imagem no formato .PNG no tamanho de 56x56px.

    Requisitos

    Nesta seção, você encontrará todos os requisitos para utilizar o produto Unico IDPay

    Para utilizar o produto Unico IDPay existem alguns pré-requisitos, sendo eles:

    • iOS: A partir da versão 11.0 (caso aberto em webview iOS 13);

    • Android: A partir da versão 5.1 (caso aberto em webview Android 8);

    Android

    O campo link é usado para direcionar o usuário. Esse campo é recebido na resposta de sucesso da criação da transação.

    Aqui você encontrará a melhor forma de gerenciar a experiência do usuário em sua aplicação Android:

    hashtag
    Passo 1: Usando CustomTabs para integração

    1 - Insira no app/build.gradle a dependência necessária para o uso de CustomTabs:

    Exemplo em Javascript

    Nesta seção, você encontrará um exemplo de implementação da autenticação do produto Unico IDPay

    Enumerados

    Nesta seção, você encontrará todos os enumerados referentes ao produto Unico IDPay

    hashtag
    Resultado da Transação​

    Código
    Tipo de status
    Descrição
    const fs = require('fs')
    const path = require('path')
    const jwt = require('jsonwebtoken')
    const request = require('request')
    
    // settings
    const basePath = 'https://identityhomolog.acesso.io'
    
    // entry point
    let options = {
        serviceAccount: 'svcapp1',
        tenant: "9ea3c3bd-4447-4c3b-ae2e-504b795d3733"
    }
    
    requestAnAccessToken(createServiceAccountToken(options), (err, accessToken) => {
        let payload = jwt.decode(accessToken.access_token)
        console.log('Response:')
        console.log(' Access Token: ', accessToken.access_token)
        console.log(' ID: ', payload.jti)
        console.log(' Issuer: ', payload.iss)
        console.log(' Subject: ', payload.sub)
        console.log(' expires_in: ', accessToken.expires_in)
        console.log(' Expiration Date: ', new Date(payload.exp))
        console.log(' Creation Date: ', new Date(payload.iat))
    })
    
    // functions
    function createServiceAccountToken({tenant, serviceAccount, account = ''}) {
        // Reads the service account private key
        let privateKey = fs.readFileSync(path.resolve(`${serviceAccount}.key.pem`))
    
        // Prepare the request
        let payload = {
            iss: `${serviceAccount}@${tenant}.iam.acesso.io`,
            aud: basePath,
            scope: '*',
            exp: Math.floor(Date.now() / 1000) + 3600,
            iat: Math.floor(Date.now() / 1000)
        }
        // Service account is requesting an access token for another user?
        if (account) {
            payload.sub = account
        }
    
        // Create JWS
        return jwt.sign(payload, privateKey, { algorithm: 'RS256' })
    }
    
    function requestAnAccessToken(serviceToken, callback) {
        // Prepare the request
        let options = {
            method: 'POST',
            url: `${basePath}/oauth2/token`,
            headers: {'content-type': 'application/x-www-form-urlencoded'},
            form: {
                grant_type: 'urn:ietf:params:oauth:grant-type:jwt-bearer' ,
                assertion: serviceToken
            }
        }
        console.log('Requesting Access Token with self created token:' )
        console.log('', serviceToken)
    
        // Ask identity and authorization server for an access token
        request(options, (error, response, body) => {
            if (error) {
                callback(new Error(error))
            }
    
            body = JSON.parse(body)
    
            if (body.error) {
                callback(new Error(`${body.error}: ${body.error_description}`))
            }
    
            callback(null, body)
        })
    }

    hashtag
    Passo 2: Abrindo uma CustomTab

    hashtag
    Passo 3: Modificando AndroidManifest

    Coloque no AndroidManifest.xml as permissões e intents necessários na Activity que deseja receber a callback_uri. É necessário incluir o atributo android:launchMode="singleTop" como também a tag <data> informando os dados da URI.

    As seguintes permissões são necessárias para funcionar corretamente:

    • Câmera;

    • Geolocalização.

    hashtag
    Passo 4: Pegando informações de retorno

    Para pegar as informações de redirect com os dados fornecidos, você pode usar o seguinte código no método onNewIntent da sua Activity:

    circle-check

    hashtag
    Também é possível utilizar o link gerado pelo by Unico em frameworks híbridos. Para isso, você pode criar uma bridge entre o framework utilizado com o nativo e seguir como sugerimos na documentação ou utilizar de alguma biblioteca que disponibilize essas opções de integração.

    circle-exclamation

    A integração da WebView na sua aplicação é de total responsabilidade do cliente, uma vez que esta funcionalidade não é oferecida como parte das bibliotecas ou SDKs da Unico. Por conta disso, não oferecemos suporte técnico para dúvidas ou problemas relacionados à implementação da WebView em seu aplicativo. Para obter orientações sobre a configuração, recomendamos consultar a documentação oficial da tecnologia utilizada em seu projeto (por exemplo, React Native, Flutter, etc).

    implementation("androidx.browser:browser:1.5.0")
    import android.net.Uri
    import androidx.activity.ComponentActivity
    import androidx.browser.customtabs.CustomTabsClient
    import androidx.browser.customtabs.CustomTabsIntent
    
    class CustomTabActivity : ComponentActivity() {
        override fun onCreate(savedInstanceState: Bundle?) {
           super.onCreate(savedInstanceState)
    
           openCustomTab(<URL_CBU>)
        }
    
        fun openCustomTab(url: String) {
            val builder = CustomTabsIntent.Builder()
            val customTabsIntent = builder.build()
            customTabsIntent.launchUrl(this, Uri.parse(url))
        }
    }
    <uses-feature android:name="android.hardware.camera" android:required="false"/>
    <uses-permission android:name="android.permission.CAMERA"/> 
    // necessário ter as permissões de câmera e geolocalização 
    
    <activity
        android:name=".CustomTabActivity"
        android:exported="true"
        android:label="@string/app_name"
        android:theme="@style/Theme.Customtabs"
        android:launchMode="singleTop">
    
        <intent-filter android:label="Custom Tab">
            <action android:name="android.intent.action.VIEW" />
    
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
    
            <!-- scheme e host são os dados fornecidos na criação de um processo no campo callback_uri
            callback_uri: "foobar://success?code=1234" -->
            <data android:scheme="foobar" android:host="success"/>
        </intent-filter>
    
    </activity>
    override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent)
    
        val url = intent.data
        val scheme = url.scheme // "foobar"
        val host = url.host // "success"
        val code = url.getQueryParameter("code") // "1234"
    }

    hashtag
    Formatos de logotipo não aceitos

    Formato de logotipo não aceitos
    circle-exclamation

    Regras:

    • Priorize a aplicação do logotipo em planos de fundo que garantam a legibilidade.

    • Não utilize logotipos que não respeitem o grid quadrado.

    • Evite o uso de logotipos em baixa resolução.

    • Não aplique o logotipo em fundos transparentes.

    circle-check

    Recomendações:

    • Priorize cores com contraste legível de no mínimo 4.5:1, seguindo os parâmetros de acessibilidade da WCAGarrow-up-right.

      • Utilize o hexadecimal das cores para verificar a escala de contraste. Exemplo: Foreground ColorPicker: #000000, Background Color: #FFFFFF, Contrast Ratio: 21.00:1.

    hashtag
    Personalização da cor e formato dos botões

    Ao longo do processo de implantação, é possível solicitar a configuração da cor e formato dos botões na interface no IDPay, de acordo com a identidade visual da empresa, conforme imagens abaixo:

    Personalização do botão
    Exemplos de contraste
    circle-check

    Recomendações:

    • Escolha cores acessíveis: Ao personalizar as cores dos botões no by Unico, opte por um esquema de cores acessível, que garanta a visualização para todos os usuários, incluindo aqueles com deficiência visual.

    • Taxas de contraste: Busque uma taxa de contraste superior a 4.51:1 para obter os melhores resultados.

    Cores acessíveis facilitam a navegação para todos, especialmente para pessoas com baixa visão. Utilize o hexadecimal das cores para verificar o contraste e siga as recomendações da .

    • Exemplo: #FFFFFF (texto) em #000000 (fundo) resulta em uma taxa de contraste de 21.00:1.

    hashtag
    Arredondamento dos cantos no botão

    Além das cores do texto e de fundo, você também pode definir o arredondamento dos cantos (border radius) em pixels, conforme a escala abaixo:

    hashtag
    Configurações de personalização

    Para realizar essa configuração, é só enviar as seguintes informações ao time Unico:

    • Código hexadecimal da cor de background no botão.

      • Ex: #000000.

    • Código hexadecimal da cor de texto no botão.

      • Ex: #ffffff.

    • Arredondamento dos cantos no botão em pixels.

      • Ex: 10px.

    Grids de logotipo aceitos

    Desktop: Sem requisitos de versão ou SO.

    O frame de captura disponibilizado por meio do SDK, é compatível com as seguintes combinações de browsers e sistemas operacionais:

    Sistema Operacional
    Chrome
    Firefox
    Safari
    Samsung Internet
    Opera
    Edge

    Windows (desktop)

    N/A

    De forma geral, o SDK da suporte a WebRTC e versões mais recentes dos browsers listados acima. Por questões de compatibilidade e segurança, o funcionamento em versões muito antigas destes browsers não é garantido.

    waiting

    Intermediário

    Aguardando o usuário realizar a validação

    processing

    Intermediário

    Em processamento

    shared

    Intermediário

    Compartilhou a captura e estamos aguardando o envio das informações

    approved

    Final

    Aprovado

    inconclusive

    Final

    Não conseguimos realizar uma validação conclusiva

    expired

    Final

    Transação expirada

    unknown-share

    Final

    A pessoa marcou que não reconhece aquela compra

    fast-inconclusive

    Final

    não conseguimos realizar uma validação conclusiva (pré-aprovação)

    absent-holder

    Final

    Quando o titular não está presente para fazer a captura

    triangle-exclamation

    O desenvolvimento deve contemplar o cenário onde novos status podem aparecer criando uma regra, por exemplo, que se um status diferente dos mencionados neste artigo aparecer, siga por um fluxo manual.

    hashtag
    Resultado do Chargeback​

    Código
    Tipo de status
    Descrição

    waiting

    Intermediário

    Aguardando análise

    analyzing

    Intermediário

    Em processo de análise

    Chargeback

    Nesta seção, você encontrará todos as especificações técnicas das REST APIs do produto IDPay para gerenciar transações de chargeback

    hashtag
    Antes de começar

    Suas requisições de API são autenticadas utilizando um access-token. Qualquer requisição que não inclua um access-token válido retornará um erro.

    Você pode ver mais sobre como gerar um access-token aquiarrow-up-right.

    circle-info

    hashtag
    Base URL:

    • UAT: https://transactions.transactional.uat.unico.app/api/public/v1;

    • Produção: https://transactions.transactional.unico.app/api/public/v1.

    circle-info

    Para ver todos os status possíveis, consulte a seção .

    circle-check

    Para otimizar a performance da sua aplicação, você também pode implementar nosso para saber quando realizar a consulta do status do Chargeback.

    Webhook

    Nesta seção, você encontrará informações sobre o funcionamento do Webhook do produto Unico IDPay

    Os artigos GetProcess desta documentação descrevem uma maneira de obter o status de um processo através de uma chamada a um endpoint. Dessa forma, é realizado um polling para receber informações sobre os processos criados. Isso significa que o endpoint pode ser chamado diversas vezes para um mesmo processo para se obter o status mais recente.

    Com o uso de webhooks é possível notificar um endpoint específico toda vez que o status de um processo for alterado.

    hashtag

    Transações de pagamento

    Nesta seção, você encontrará todos as especificações técnicas das REST APIs do produto IDPay para gerenciar transações de pagamento

    hashtag
    Antes de começar

    Suas requisições de API são autenticadas utilizando um access-token. Qualquer requisição que não inclua um access-token válido retornará um erro.

    Você pode ver mais sobre como gerar um access-token .

    Casos de uso | Unico IDPay - DevCenterdevcenter.unico.iochevron-right

    approved

    Final

    Aprovado

    refused

    Final

    Recusado

    Logo
    O que é um webhook?

    Webhook é um serviço de notificação sistêmica que permite a integração assíncrona entre sistemas, onde um sistema notifica o outro através de um gatilho. Assim, os webhooks podem manter sistemas atualizados com informações mais recentes sem ser necessária a verificação constante por atualizações através de polling.

    hashtag
    Como configurar o Webhook

    Para configurar o webhook, são necessárias as seguintes informações:

    • URL de notificação: É o endpoint usado pelo By Unico para as notificações sobre as atualizações de status.

    • Tipo de autenticação: É o método de autenticação usado para invocar o endpoint. As seguintes opções estão disponíveis:

      • OAuth2;

      • Basic Authorization;

      • API Key;

      • Sem autenticação.

    • Para OAuth2 é necessário enviar as seguintes informações:

      • Endpoint do webhook;

      • URL do provedor OAuth2;

    • Para o Basic Authorization é preciso enviar no formato user:pass;

    • Para API Key, é possível enviar em dois format

      • header:value, quando é desejado que o header tenha um nome específico;

      • value: quando o header desejado é o Authorization.

    • Configurações de retentativas: Indica o número de tentativas para o caso de falha na chamada ao endpoint:

      • Número máximo de tentativas;

      • Intervalo entre tentativas (em segundos);

    • Status a serem notificados: É possível se inscrever em status específicos para receber as notificações. São eles:

      • approved: Transação aprovada;

      • processing: Transação em processamento;

    circle-info

    Sobre a autenticação:

    A API pode ser protegida por um método de autenticação como Basic Authentication ou API Key. Uma lista de IPs válidos para acesso também pode ser definida para proteção complementar.

    hashtag
    Integração com o IDPay​

    Ao configurar um webhook na plataforma, você pode obter informações sobre os processos através de notificações enviadas para um endpoint da API desenvolvida por você para receber essas atualizações.

    As informações enviadas pela plataforma para a API são:

    • ID: ID da transação;

    • Status: Status da transação;

    • HasIdentityChanged: Se houve troca de identidade na transação (opcional);

    circle-info

    Note que é possível escolher os status que o cliente deseja ser notificado, através da configuração do webhook. Após o envio dessas informações, a resposta esperada deverá ser síncrona.

    hashtag
    Requisições​

    A requisição deve ser um método POST em uma API REST tornando mais fácil e seguro o envio das informações. Todos os campos devem ser obrigatórios. O corpo da requisição deve aceitar o ID da transação e o estado, como mostrado no exemplo a seguir:

    hashtag
    Resposta

    A resposta deve vir de forma síncrona. O status para requisições bem sucedidas deverá estar no intervalo de 200 a 299. Qualquer outro status será considerado como falha e o IDPay irá realizar novas tentativas de notificações (com exponential backoff entre elas), até receber uma resposta 2xx ou até atingir o número máximo de tentativas.

    hashtag
    Status da Resposta​

    Atualmente temos um conjunto de status, porém esse conjunto pode variar no futuro. Então é recomendado deixar configurável os status que o cliente tem interesse para tomar alguma ação. Por exemplo, se há o desejo de tomar uma ação toda vez que uma captura é realizada com sucesso, atualmente isso ocorre com o status processing, porém como isso pode ser modificado no futuro, é recomendado que o status que indica que a captura foi realizada com sucesso seja uma configuração no sistema, de modo que uma alteração no futuro para o status de captured seja facilmente realizada.

    Além disso, recomendamos ter ações específicas para status específicos, e uma ação geral caso o status não seja reconhecido (por exemplo assumir que tudo que for diferente de processing e approved é inconclusivo). isso é importante, pois novos status podem surgir no futuro e não é esperado que o webhook quebre em função disso.

    hashtag
    Considerações Importantes​

    Atente-se aos seguintes aspectos ao desenvolver API que o IDPay irá utilizar para notificar as mudanças de status:

    chevron-rightRate limithashtag

    Com intuito de não sobrecarregar seus recursos em situações de muitas transações, é possível especificar um limite superior de vezes em que o endpoint pode ser invocado.

    chevron-rightTaxa de erroshashtag

    A taxa de erros (respostas fora do intervalo de [200, 299]) deve ser sempre baixa. Caso contrário, o throughput do webhook será automaticamente reduzido, e essa redução junto ao mecanismo do retry pode implicar no aumento do tempo de execução de novos webhooks.

    chevron-rightIdempotênciahashtag

    A atual implementação de webhook possui a garantia de at-least once delivery, portanto o mesmo status pode ser notificado mais de uma vez. Sendo assim, a implementação do endpoint deve ser feita de maneira idempotente.

    chevron-rightFallbackhashtag

    Em caso de alguma indisponibilidade no serviço do webhook, é recomendado que exista um método de fallback para que você possa continuar obtendo os status das transações dentro do tempo de resposta estabelecido. A consulta ao endpoint está descrita na seção "API Reference" desta documentação.

    {
      "id": "8263a268-5388-492a-bca2-28e1ff4a69f0",
      "status": "approved",
      "hasIdentityChanged": false
    }
    circle-info

    hashtag
    Base URL:

    • UAT: https://transactions.transactional.uat.unico.app/api/public/v1;

    • Produção: https://transactions.transactional.unico.app/api/public/v1.

    triangle-exclamation

    Para garantir a melhor conversão, crie a transação somente após concluir qualquer pré-autenticação ou validação que possa encerrar a operação antes da experiência do IDPay.

    triangle-exclamation

    O campo orderNumber deve ser preenchido com o número de pedido ÚNICO daquela compra no e-commerce, sendo errado o envio de um ID distinto transacional.

    É importante ter atenção com relação a este campo, pois pode impactar negativamente na experiência do usuário no fluxo final, ocasionando problemas no uso do produto.

    Como possíveis impactos podemos citar:

    • Baixa conversão:

      • O número do pedido é usado para ajudar o usuário final a realizar a conclusão do fluxo;

    • Erros na API:

      • É possível que você receba erros como: replicated transaction caso seja usado o mesmo número do pedido, cpf, bin e last4.

    circle-exclamation

    Caso as validações realizadas decidam que não é necessário realizar a captura da biometria, a resposta de retorno terá um status diferente e não será gerado um link para a captura, como a seguir:

    {
        "id": "6ab1771e-dfab-4e47-8316-2452268e5481",
        "status": "fast-inconclusive"
    }

    Este cenário acontecerá caso utilize os módulos Pré ou Super Pré, para os casos onde utiliza o IDPay no Checkout, conforme especificado na seção Funcionalidades.

    circle-info

    Para ver todos os status possíveis, consulte a seção Enumeradosarrow-up-right.

    circle-check

    Para otimizar a performance da sua aplicação, você também pode implementar nosso Webhook para saber quando realizar a consulta do status da transação. Veja mais na seção Webhookarrow-up-right.

    circle-exclamation

    Só é possível gerar o conjunto probatório de transações aprovadas.

    triangle-exclamation

    O link retornado para conjunto probatório tem validade de cinco minutos após a obtenção. Então é importante que esse link não seja salvo, e sim usado para efetuar o download do conjunto probatório.

    circle-info

    Também é possível configurar o reenvio de notificações através do portal, sem a necessidade de implementar via API. Para entender as possibilidades, fale com o responsável pelo seu projeto.

    aquiarrow-up-right

    N/A

    Android

    N/A

    iOS

    N/A

    MacOS (desktop)

    N/A

    Enumeradosarrow-up-right
    Webhookarrow-up-right
    WCAGarrow-up-right
    Funcionalidades | Unico IDPay - DevCenterdevcenter.unico.iochevron-right

    ClientId do provedor OAuth2;

  • Secret do provedor OAuth2.

  • Rate limit: Limite máximo de envios simultâneos (máximo: 500);
  • Timeout: Tempo máximo de espera para a resposta do endpoint (em segundos);

  • inconclusive: Não conseguimos realizar uma validação conclusiva;

  • shared: Transação compartilhada, aguardando envio;

  • skiped: A pessoa pulou a captura biométrica no fluxo;

  • unknown-share: A pessoa marcou que não reconhece aquela compra;

  • absent-holder: O titular do cartão não está presente para realizar a captura;

  • expired: A pessoa não realizou a captura dentro do tempo estabelecido e a transação foi expirada.

  • Supported
    Supported
    Not supported
    Not supported
    Supported
    Supported
    Supported
    Not supported
    Not supported
    Supported
    Supported
    Supported
    Not supported
    Not supported
    Supported
    Supported
    Supported
    Not supported
    Not supported
    Logo

    SDK

    Nesta seção, você encontrará como implementar o SDK da Unico na sua aplicação web para uso do produto Unico IDPay

    Para o cenário de uso em Web, o uso do SDK da Unico é o recomendado, pelos seguintes motivos:

    • Maior segurança;

    • Experiência integrada ao seu fluxo;

    • Taxa maior de conversão quando usado o SDK;

    • Facilidade na implementação.

    circle-exclamation

    O uso de integrações que não estejam em conformidade com os padrões estabelecidos nesta documentação pode resultar em interrupções inesperadas no funcionamento do sistema, as quais não serão cobertas ou suportadas pelo IDPay.

    Ex: Implementar o iFrame do by Unico dentro de uma webview, implementar o iFrame através de uma tag de HTML, etc.

    hashtag
    Orientações gerais

    Para otimizar a performance da sua operação, melhorar a taxa de conversão e proporcionar uma experiência mais fluida para o usuário final, é obrigatório que a SDK da Unico seja sempre implementada em modo full screen(tela cheia) na sua aplicação. Confira como deve ser a implementação no exemplo abaixo:

    hashtag
    Como começar

    Para utilizar o IDPay por meio do SDK do Unico IDPay, o primeiro passo é cadastrar os domínios que serão utilizados como host para exibir a experiência da jornada do usuário.

    triangle-exclamation

    Sinalize o responsável pelo seu projeto de integração ou o time de suporte da Unico para realizar essa configuração.

    Para iniciar o uso do SDK, devemos iniciar com a instalação da SDK web da Unico:

    circle-check

    Quando instalar o pacote do SDK da Unico, implemente sem especificar a versão que está utilizando e de modo que seu gerenciador de dependências atualize sempre os minors e patches para a versão mais recente.

    Para verificar versões anteriores, acesse .

    hashtag
    Métodos disponíveis

    1

    hashtag
    init(options)

    Esse método permite que o SDK seja inicializado, independentemente de um ID de transação, fazendo com que a experiência do usuário final seja mais fluida. Uma vez que quando o ID da transação e o token estiverem disponíveis, a aplicação já tenha sido pré-carregada através desse método. Se esse método não for chamado diretamente pela aplicação, o usuário final terá um carregamento longo na primeira abertura do SDK.

    hashtag
    Segurança

    Após uma análise cuidadosa das necessidades e desafios que enfrentamos, decidimos adotar uma solução baseada em iFrames com tokens de autenticação ao invés de implementar uma política de Content Security Policy (CSP). Essa escolha foi motivada por diversas considerações relacionadas à segurança e à flexibilidade necessárias para atender às demandas dos nossos clientes.

    hashtag
    Contexto e Desafios com CSP

    O Content Security Policy (CSP) é uma ferramenta poderosa para proteger aplicações web contra diversos tipos de ataques, como Cross-Site Scripting (XSS) e injeção de código. No entanto, ao configurar uma política CSP, é necessário definir uma lista rígida de domínios confiáveis. Essa abordagem é eficaz quando os domínios são fixos e previsíveis. No entanto, para nossos clientes, que frequentemente utilizam domínios dinâmicos e variáveis, essa configuração rígida apresenta desafios significativos.

    hashtag
    Vulnerabilidade com Domínios Dinâmicos

    Os domínios dinâmicos representam um risco substancial para a segurança ao usar CSP. Quando um cliente possui domínios que mudam com frequência ou são criados dinamicamente, seria necessário atualizar constantemente a política CSP para incluir esses novos domínios. Isso não só aumenta o esforço de manutenção, mas também expõe os domínios aos quais a política CSP se aplica. Cada domínio adicionado à política CSP é potencialmente um ponto de vulnerabilidade se não for adequadamente gerenciado.

    hashtag
    Solução com IFrame e Auth Token

    Para mitigar esses riscos e atender à flexibilidade exigida pelos nossos clientes, optamos por utilizar iframes combinados com tokens de autenticação. Esta solução oferece uma camada adicional de segurança e evita a necessidade de expor ou gerenciar uma lista extensa e dinâmica de domínios.

    hashtag
    Como funciona

    • Autenticação Segura: Cada iframe é carregado com um token de autenticação exclusivo para cada transação, garantindo que apenas usuários autorizados possam acessar o conteúdo. Esse token é verificado em tempo real, proporcionando uma camada adicional de segurança e controle.

    • Isolamento de Conteúdo: O uso de iframes permite isolar o conteúdo em um contexto separado, reduzindo o risco de interferência entre diferentes origens e mitigando potenciais ataques.

    • Flexibilidade para Domínios Dinâmicos: Ao não depender de uma política CSP estática, nossa solução se adapta facilmente aos domínios dinâmicos dos clientes, sem a necessidade de atualização constante das políticas de segurança.

    Mobile

    hashtag
    Parâmetros:
    • options

      • Recebe um objeto com propriedades de configuração:

        • type

          • O tipo de fluxo que será inicializado. Hoje, disponibilizamos dois tipos de fluxos (IFRAME). Para novas aplicações, recomendamos o uso do tipo IFRAME, tornando a experiência para o usuário final muito mais fluida e com menos fricção, já que não será necessário sair da tela de checkout, e o carregamento da experiência poderá ser realizado previamente.

    2

    hashtag
    open({ transactionId, token, onFinish? })

    Esse método realiza a abertura da experiência do IDPay de acordo com o fluxo escolhido previamente, na função de inicialização. Para o fluxo do tipo REDIRECT, essa função faz um simples redirecionamento para a rota do fluxo de captura do IDPay. Para o fluxo do tipo IFRAME, essa função exibe o iframe já pré-carregado, e inicia o fluxo de mensageria entre a página do cliente e a experiência do IDPay.

    hashtag
    Parâmetros:

    • options

      • Recebe um objeto com propriedades de configuração:

        • transactionId

    [1] em casos de erro no fluxo, a transação não terá seu status alterado e um callback via webhook, caso configurado, não será realizado.

    $ npm install idpay-b2b-sdk
    https://www.npmjs.com/package/idpay-b2b-sdk?activeTab=versionsarrow-up-right
    ​arrow-up-right
    ​arrow-up-right
    ​arrow-up-right
    ​arrow-up-right
    PreviousWebarrow-up-right
    import { IDPaySDK } from “idpay-b2b-sdk”;
    
    IDPaySDK.init({
      type: 'IFRAME',
      env: 'uat' // Só irá ser preenchido se for ambiente de testes.
    });

    Preparando para fazer uma requisição autenticada à API

    Nesta seção, você encontrará como realizar o processo de autenticação no produto Unico IDPay

    Após a criação e configuração de uma conta de serviço, sua aplicação precisa completar as seguintes etapas:

    1. Criar um JSON Web Token (JWT), que inclui cabeçalho, payload e assinatura;

    2. Requisitar um token de acesso (AccessToken) da plataforma de autenticação OAuth2;

    3. Tratar a resposta JSON que a plataforma de autenticação retornará.

    Se na resposta estiver incluso um token de acesso, você poderá usá-lo para fazer requisições às APIs dos produtos da unico para os quais a conta de serviço possui permissão de acesso. (Se na resposta não estiver incluso um token de acesso, seu JWT e requisição de obtenção do token podem estar incorretos ou a conta de serviço pode não ter as permissões necessárias para acessar os recursos solicitados.)

    O token de acesso gerado na requisição mencionada acima tem validade padrão de 3600 segundos, podendo variar de acordo com a configuração de segurança estabelecida para sua empresa. Quando o token de acesso expirar, sua aplicação deverá gerar um novo JWT, fazer a assinatura e requisitar um novo token de acesso na plataforma de autenticação.

    hashtag
    1 - Criando o JWT

    Um JWT é composto por três partes: um cabeçalho, um payload e uma assinatura. O cabeçalho e o payload são objetos JSON. Esses objetos JSON são serializados em UTF-8 e então codificados usando codificação Base64url¹. Esta codificação provê resliência contra alterações de codificação em casos de repetidas operações de codificação. O cabeçalho, o payload e a assinatura são concatenadas com um caractere de ponto final ..

    Um JWT é composto da seguinte forma:

    O texto base para a assinatura é composto pela seguinte forma:

    hashtag
    1.1 - Formando o cabeçalho JWT

    O cabeçalho consiste em dois campos que indicam o algorítimo de assinatura e o formato do token. Ambos os campos são obrigatórios e cada campo possui apenas um valor. Contas de serviço dependem do algorítimo RSA SHA-256 e do formato de token JWT. Como resultado, a representação JSON do cabeçalho se dá da seguinte forma:

    A representação em Base64url se dá da seguinte forma:

    hashtag
    1.2 - Formando o payload JWT

    O payload JWT contém informações sobre o JWT, incluindo as permissões sendo requisitadas (scopes), a conta solicitando acesso, o emissor, o momento em que o token foi emitido e o tempo de vida do token. A maioria dos campos são obrigatórios. Assim como o cabeçalho JWT, o payload é um objeto JSON e é usado na composição da assinatura.

    hashtag
    1.3 - Campos Obrigatórios

    Os campos obrigatórios no JWT são mostrados na tabela abaixo. Eles podem aparecer em qualquer ordem dentro do payload.

    Nome
    Descrição

    Entenda como funciona a conversão para os campos de emissão (iat) e expiração (exp) do jwt, e veja também exemplos de utilização dos valores dos campos aqui. Além disso, o campo “iat” deve ser o horário atual no formato exigido e o “exp” deve respeitar a conta abaixo:

    A representação dos campos JSON obrigatórios no payload do JWT se dá da seguinte forma:

    hashtag
    1.4 - Calculando a assinatura

    A especificação JSON Web Signature (JWS)² é a mecânica que guia o cálculo da assinatura para um JWT. O conteúdo de entrada para o cálculo da assinatura é o byte array do seguinte conteúdo:

    O mesmo algoritmo sinalizado no cabeçalho do JWT precisa ser utilizado para o cálculo da assinatura. O único algorítimo de assinatura suportado pela plataforma de autenticação OAuth2 é o RSA usando SHA-256. Ele é expressado como RS256 no campo alg do cabeçaho do JWT.

    Assine a representação UTF-8 do conteúdo de entrada utilizando SHA256withRSA (também conhecido como RSASSA-PKCS1-V1_5-SIGN com o hash SHA-256) com a chave privada que foi criada e associada à conta de serviço (arquivo .key.pem gerado pela solicitação recebida por e-mail). O conteúdo de saída será um byte array.

    A assinatura precisará ser então codificada em Base64url. O cabeçalho, o payload e a assinatura deverão ser concatenadas com o caractere de ponto final .. O resultado é o JWT. Ele deve ser da seguinte forma:

    A seguir está um exemplo de token JWT antes da codificação em Base64url:

    Abaixo está um exemplo do JWT que foi assinado e está pronto para transmissão:

    Também é possível utilizar bibliotecas previamente estabelecidas para realizar a criação do JWT. Como referência, é possível encontrar uma lista de bibliotecas no site .

    hashtag
    2 - Fazendo a requisição de um token de acesso

    Após a geração do JWT assinado, uma aplicação pode utilizá-lo para requisitar um token de acesso (Access Token). A requisição do token de acesso é uma requisição POST HTTPS e o corpo deve ser URL encoded. A URL é a mostrada abaixo:

    Os parâmetros abaixo são obrigatórios na requisição POST HTTPS:

    Nome
    Descrição

    hashtag
    3 - Tratando a resposta da plataforma de autenticação

    Se o JWT e a requisição do token de acesso foram formados apropriadamente e a conta de serviço tem as permissões necessárias, então a resposta da plataforma de autenticação retorna um objeto JSON contendo um token de acesso. Segue um exemplo de resposta da plataforma:

    O token de acesso retornado no campo “acess_token” do objeto JSON também é um token JWT que deverá ser utilizado nas APIs dos Produtos da unico. Caso retorne um erro na requisição, é possível consultar o tipo do erro na tabela de erros clicando .

    hashtag
    4 - Duração do token de acesso

    A duração do token de acesso é variável. Sua duração é especificada no campo “expires_in”, retornado juntamente com o token de acesso. Deve-se utilizar o mesmo token de acesso durante a sua validade para todas as chamdas às APIs dos produtos.

    Não solicite um novo token de acesso até que a validade do token atual esteja chegando ao fim. Sugerimos uma margem de 600 segundos (10 minutos). Para isso execute o cálculo:

    Sendo que token.exp é o timestamp da expiração do token.

    circle-info

    Por padrão, o token enviado para a empresa tem duração de 1h, mas pode ser alterado. A sugestão é sempre usar o expires_in como base e subtrair 600s dele para pedir um novo token.

    Exemplos:

    Um novo token de acesso pode ser solicitado quando faltar 10 minutos pra expirar.

    circle-exclamation

    Não utilize um tempo fixo para a obtenção de um novo token, pois o tempo de duração do token recebido pode ser menor que o tempo estabelecido, o que ocasionará falha na utilização dos serviços.

    • ¹ De acordo com o RFC 4648 de codificação BaseN, o formato Base64url é similar ao formato Base64, com exceção do caracter = que deve ser omitido, e dos caracteres + e / que devem ser substituídospor - e _, respectivamente.

    • ² JSON Web Signature: .

    Recebe o ID da transação criada. Esse ID é importante para conseguirmos obter os detalhes da transação e realizarmos todo o fluxo da maneira correta (pode ser obtido na criação da transação via API).

  • token

    • Recebe o token da transação criada. Esse token é importante para conseguirmos autenticar a transação e garantir que somente domínios autorizados utilizem-na (pode ser obtido na criação da transação via API).

  • opcional onFinish(transaction, type)

    • Recebe uma função de callback que será executada no término do fluxo de captura do IDPay, passando dois argumentos:

      • O objeto da transação com os seguintes dados: { captureConcluded, concluded, id }

        • O tipo da resposta que pode ser FINISH, para casos onde o fluxo foi finalizado com sucesso, ou ERROR, para casos onde o fluxo foi interrompido por um erro¹.

  • O tempo de expiração do token, especificado em segundos desde 00:00:00 UTC, 1 de Janeiro de 1970. Este valor tem um tempo máximo de 1 hora após o momento da emissão do JWT. Este valor deve ser numérico. Casos recorrentes que NÃO funcionam: - Uso de aspas na delimitação do valor. Ex.: “1524161193” é uma string e não funcionará. Já 1524161193 é um número e funcionará.

    iat

    O momento da emissão do JWT, especificado em segundos desde 00:00:00 UTC, 1 de Janeiro de 1970. Este valor deve ser numérico. - Uso de aspas na delimitação do valor. Ex.: “1524161193” é uma string e não funcionará. Já 1524161193 é um número e funcionará.

    iss

    O identificador da conta de serviço na empresa.

    scope

    Uma lista delimitada por espaços ou pelo sinal de positivo + das permissões que a aplicação está requisitando. Se todas as permissões da conta forem necessárias, utilizar o sinal de asterisco * para tal.

    aud

    Endereço da plataforma de autenticação que faz a emissão de tokens de acesso. Este valor deverá ser sempre e exatamente https://identityhomolog.acesso.ioarrow-up-right Casos recorrentes que NÃO funcionam: - Inserção de uma barra ao final do endereço: https://identityhomolog.acesso.io/arrow-up-right - Uso do protocolo HTTP ao invés de HTTPS: http://identityhomolog.acesso.ioarrow-up-right

    exp

    grant_type

    Utilize o seguinte texto, URL-encoded se necessário: urn:ietf:params:oauth:grant-type:jwt-bearer

    assertion

    O JWT, incluindo a assinatura.

    jwt.ioarrow-up-right
    ​arrow-up-right
    ​arrow-up-right
    aquiarrow-up-right
    ​arrow-up-right
    https://tools.ietf.org/html/rfc7515arrow-up-right
    const transactionId = '9bc22bac-1e64-49a5-94d6-9e4f8ec9a1bf';
    const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';
    
    const transaction = {
      id: '9bc22bac-1e64-49a5-94d6-9e4f8ec9a1bf',
      concluded: true,
      captureConcluded: true
    };
    
    const onFinish = (transaction, type) => {
      console.log('response', transaction, type);
    }
    
    IDPaySDK.open({
      transactionId,
      token,
      onFinish
    });
    
    // Você também pode encerrar o SDK explicitamente através do método abaixo
    IDPaySDK.close();
    {Cabeçalho em Base64url}.{Payload em Base64url}.{Assinatura em Base64url}
    {Cabeçalho em Base64url}.{Payload em Base64url}
    {"alg":"RS256","typ":"JWT"}
    eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9
    exp = iat + 3600
    {
      "iss": "service_account_name@tenant_id.iam.acesso.io",
      "aud": "https://identityhomolog.acesso.io",
      "scope": "*",
      "exp": 1626296976, // Este é apenas um exemplo. Utilize aqui o valor atual gerado.
      "iat": 1626293376 // Este é apenas um exemplo. Utilize aqui o valor atual gerado.
    }
    {Cabeçalho em Base64url}.{Payload em Base64url}
    {Cabeçalho em Base64url}.{Payload em Base64url}.{Assinatura em Base64url}
    {"alg":"RS256","typ":"JWT"}.
    {
      "iss": "service_account_name@tenant_id.iam.acesso.io",
      "aud": "https://identityhomolog.acesso.io",
      "scope": "*",
      "exp": 1626296976, // Este é apenas um exemplo. Utilize aqui o valor atual gerado.
      "iat": 1626293376 // Este é apenas um exemplo. Utilize aqui o valor atual gerado.
    }.
    [byte array da assinatura]
    eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzZXJ2aWNlX2FjY291bnRf
    bmFtZUB0ZW5hbnRfaWQuaWFtLmFjZXNzby5pbyIsImF1ZCI6Imh0dHBzOi8vaWRlbnRpdHlob21vbG9nLmFjZXNzby5pbyIsInNjb
    3BlIjoiKiIsImV4cCI6MTYyNjI5Njk3NiwiaWF0IjoxNjI2MjkzMzc2fQ.JsymP3NZdgCSqeNlgsOM2
    -AQ7M450NxFnZnnaKSu4Q8g12QGEIvvM4EhCokUHfwk5s7pOpm2UD_Ng3Hb5g_wgrjfiVSLWH5Q2wYg1AvfLqo
    YSoJWaMHm9KL0kpv32XdDD8TZVR-MVd2VBHmCMVbV6gvk8buUoK1HZDN7g84PaY3bfgcB3RKU-
    H55lR8yyJjZxToIv17-wfla2G99uaMEFNGX0ZSE7ETn5Z8-WypmFrNAK0TM58upzvfVI6_-
    gY4cj4iQvmRbuvxsAaGiHA2xd0RVm2Mrx-gQtdPqtbZPuQcH7k64Z_EOQBgiGTgVjucyHD6zBijr_P-
    2mhIxuecNSw
    https://identityhomolog.acesso.io/oauth2/token
    POST /oauth2/token HTTP/1.1
    Host: identityhomolog.acesso.io
    Content-Type: application/x-www-form-urlencoded
    
    grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-
    bearer&assertion=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzZXJ2aWNlX2FjY
    291bnRfbmFtZUB0ZW5hbnRfaWQuaWFtLmFjZXNzby5pbyIsInN1YiI6InVzZXJfaWRlbnRpZmllciIs
    ImF1ZCI6Imh0dHBzOi8vaWRlbnRpdHlob21vbG9nLmFjZXNzby5pbyIsInNjb3BlIjoiKiIsImV4cCI
    6MTMyODU1NDM4NSwiaWF0IjoxMzI4NTUwNzg1fQ.TjH-mTtwP6tBB93O1sDPaAA6yUF7N2-HZDlpIPz
    bf_dxO8A6KZuRWG8ZnICrxX56qj0HREiMlYy27XJgxowrUa0JHvbqc8HJkT7-6Mh7J67UnubZKG1-hi
    6jDtkC9BIXBcOhtkNUfZvZetXjLzsRsSDkqxdMtzYZwkRlocvaxL5QXiQhweeEwK_Ux81Adh3z0EIhT
    yl7CKJLJ69PuHS7s9IdrjUl79owipp4LF1FvtMhoe7YIL69ohPgFqSv_-Y9qpPdW6be3OEAyKlOM08S
    ZBbHBwW4XMvw3uZjTY1sgJ4cBoxrftDpjYOw34oPOKxirqc5-90uOCYe1O1hRtG45w
    {
      "access_token": "<access_token>",
      "token_type": "Bearer",
      "expires_in": "3600"
    }
    token decodificado:
    new Date(token.exp - 600)
    Cenário padrão:
    expires_in: 3600 (1h) - Geração do token as 14h42
    
    Solicitar um novo token somente as 15h32 ou seja, 14:42 + (3600 - 600)
    Cenário com a duração alterada:
    expires_in: 7200 (2h) - Geração do token as 14h42
    
    Solicitar um novo token somente as 16h32 ou seja, 14:42 + (7200 - 600)

    Erros

    Nesta seção, você encontrará a visão geral sobre os erros que pode receber nos endpoints do produto Unico IDPay

    hashtag
    Introdução

    O Unico IDPay utiliza códigos de resposta HTTP convencionais para indicar o sucesso ou falha de uma solicitação de API.

    Como regra geral:

    • Códigos no intervalo 2xx indicam sucesso na requisição;

    • Códigos no intervalo 4xx indicam parâmetros incorretos ou incompletos (por exemplo, um parâmetro obrigatório foi omitido ou uma operação falhou com terceiros, etc.);

    • Códigos no intervalo 5xx indicam que houve um erro nos servidores do produto Unico IDPay.

    O Unico IDPay também gera uma mensagem de erro e um código de erro formatado em JSON:

    hashtag
    Erros possíveis

    Neste tópico, você encontrará os possíveis erros dos endpoints, separados por seu HTTP response.

    hashtag
    Criação da transação

    HTTP Code
    Código
    Descrição
    Motivo

    hashtag
    Consulta do status da transação

    HTTP Code
    Código
    Descrição
    Motivo

    hashtag
    Recuperação do conjunto probatório da transação

    HTTP Code
    Código
    Descrição
    Motivo

    hashtag
    Reenvio da notificação da transação

    HTTP Code
    Código
    Descrição
    Motivo

    hashtag
    Onboarding de cartão de crédito

    HTTP Code
    Código
    Descrição
    Motivo

    Introdução

    Aqui você encontrará as informações técnicas das APIs REST do produto Unico IDPay

    hashtag
    Visão Geral

    Bem-vindo à documentação das APIs REST do produto Unico IDPay! Nesta página, você encontrará tudo o que precisa saber para melhorar a segurança e a qualidade dos seus aplicativos usando nossa REST API.

    hashtag
    Leia mais

    FAQ

    Nesta seção, você encontrará os FAQs sobre o Unico IDPay

    hashtag
    Dúvidas frequentes sobre o Unico IDPay:

    • Clique para acessar a FAQ do IDPay;

    Clique aquiarrow-up-right para acessar a FAQ geral da unico.
    aquiarrow-up-right

    🛒 Sobre o IDPay

    Inicia a leitura conhecendo mais sobre o IDPay.

    🔑 Sobre a Autenticação

    Veja as especificações técnicas da autenticação para utilizar as APIs do IDPay.

    🔒 Sobre as APIs

    Veja as especificações técnicas das APIs do IDPay.

    ⚙ Sobre a experiência

    Veja o passo a passo para gerenciar a experiência de captura do IDPay.

    Alguma informação está mal formatada ou não foi preenchida

    400

    40021

    invalid phone

    O telefone informado é inválido, deve seguir o padrão: 55 DDD NUMERO. Ex: 5543999999999

    400

    40022

    invalid email

    O e-mail informado é inválido

    400

    40027

    replicated transaction

    A transação enviada já existe, não podendo cria-lá novamente

    400

    40045

    max value reached

    Quando a transação atinge um valor maior que o permitido

    403

    40301

    not allowed

    O usuário não tem permissão para fazer tal ação

    404

    40404

    company not found

    A empresa informada não existe

    429

    40001

    too many requests

    Ratelimit atingido

    500

    50001

    internal error

    Falha interna no serviço

    Alguma informação está mal formatada ou não foi preenchida

    400

    40004

    transaction id is invalid

    O id da transação é inválido (formato)

    403

    40301

    not allowed

    O usuário não tem permissão para fazer tal ação

    404

    40401

    transaction not found

    A transação não foi encontrada

    500

    50001

    internal error

    Falha interna no serviço

    O status da transação é inválido (não permitido para geração do conjunto probatório)

    403

    40301

    not allowed

    O usuário não tem permissão para fazer tal ação

    404

    40401

    transaction not found

    A transação não foi encontrada

    500

    50001

    internal error

    Falha interna no serviço

    Alguma informação está mal formatada ou não foi preenchida

    400

    40004

    transaction id is invalid

    O id da transação é inválido (formato)

    400

    40009

    transaction status is invalid

    O status da transação não permite o reenvio de notificação (já está concluído)

    400

    40021

    invalid phone

    O telefone informado é inválido, deve seguir o padrão: 55 DDD NUMERO. Ex: 5543999999999

    400

    40022

    invalid email

    O e-mail informado é inválido

    403

    40301

    not allowed

    O usuário não tem permissão para fazer tal ação

    404

    40401

    transaction not found

    A transação não foi encontrada

    429

    40001

    too many requests

    Ratelimit atingido

    500

    50001

    internal error

    Falha interna no serviço

    Alguma informação está mal formatada ou não foi preenchida.

    400

    40027

    replicated transaction

    A transação enviada já existe, não podendo cria-lá novamente.

    400

    40030

    invalid identity

    O CPF enviado na requisição é diferente do CPF do processID informado.

    400

    40045

    max value reached

    Quando a transação atinge um valor maior que o permitido.

    400

    40054

    processID is invalid

    Quando o processID enviado na requisição é inválido (ou não existe).

    400

    40055

    processID is expired

    Quando o processoID que está sendo utilziado é muito antigo.

    403

    40301

    not allowed

    O usuário não tem permissão para fazer tal ação.

    404

    40404

    company not found

    A empresa informada não existe.

    404

    40410

    processID not found

    Quando o processo informado não existe.

    404

    40412

    image not found

    Quando o processo informado pelo usuário não possuí uma imagem.

    429

    40001

    too many requests

    Ratelimit atingido.

    429

    42901

    too many requests

    Quando o cliente está enviando muitas requisições, maior que o pré-definido.

    500

    50001

    internal error

    Falha interna no serviço.

    400

    40001

    error decoding json

    Os dados enviados não condizem com o contrato do serviço

    400

    40002

    400

    40001

    error decoding json

    Os dados enviados não condizem com o contrato do serviço

    400

    40002

    400

    40004

    transaction id is invalid

    O id da transação é inválido (formato)

    400

    40009

    400

    40001

    error decoding json

    Os dados enviados não condizem com o contrato do serviço

    400

    40002

    400

    40001

    error decoding json

    Os dados enviados não condizem com o contrato do serviço.

    400

    40002

    error validating json

    error validating json

    transaction status is invalid

    error validating json

    error validating json

    {
        "error": {
            "code": "40004",
            "description": "transaction id is invalid"
        }
    }

    Boas práticas de comunicação

    Nesta seção, você encontrará as melhores práticas de comunicação sobre o Unico IDPay

    hashtag
    Como comunicar a validação de identidade via IDPay para o consumidor?

    Sabemos que uma validação biométrica feita por um fornecedor pode gerar dúvidas e fricção no seu usuário final, portanto é importante trazer a transparência deste processo e dar o suporte adequado para você tenha bons números na sua operação. Abaixo você encontrará uma série de dicas que pode auxiliá-lo nesta comunicação:

    • Comunicar que uma empresa parceira (preferencialmente citar a Unico) poderá entrar em contato através de SMS, E-mail ou Whatsapp solicitando uma foto do rosto para validação de biometria facial;

    • Informar que, em alguns casos, ela deverá confirmar o número de CPF, que é utilizado para identificação da identidade digital do titular do cartão de crédito;

    • Explicar que a validação de identidade é específica do titular do cartão de crédito, para garantir o consentimento do uso do cartão;

    • Alertar ao consumidor, que ele não deve passar nenhum dado ou foto, via e-mail, sms ou WhatsApp. Todo o fluxo de validação é feito dentro do link enviado;

    • Avisar/Treinar time de atendimento ao consumidor, em caso de questionamento do consumidor;

    • Disponibilizar dentro da FAQ da empresa um tópico informando os detalhes dessa validação;

    • Disponibilizar link da nossa central de ajuda: .

    Casos de uso

    Nesta seção, você encontrará todas os casos de uso e formas de utilização do produto Unico IDPay

    hashtag
    Casos de uso

    O IDPay pode ser utilizado em diversos casos de uso e nas mais variadas formas de utilização. Confira abaixo os possíveis casos de uso e suas correlações.

    hashtag
    Checkout
    Aplicação
    Forma de utilização
    Canal

    Web

    Integrado

    SDK / Redirect

    Mobile

    Integrado

    Webview

    circle-check

    Dicas para aumentar sua conversão

    • Deixe claro para seu cliente que o CPF do pedido deve ser o do titular do cartão;

    • Contextualize seu cliente que ele poderá realizar uma validação de identidade para ter seu pedido aprovado. O discurso voltado para segurança costuma ter maior conversão;

    • Deixa claro para seu cliente que caso ele não faça a validação de identidade, o pedido dele poderá ser recusado;

    • Após o usuário finalizar a validação de identidade, informe que o pedido ainda será analisado.

    hashtag
    Pré mesa de análise

    Aplicação
    Forma de utilização
    Canal

    Web / Webmobile

    Integrado

    Mensagens (WhatsApp)

    Web / Webmobile

    Manual

    Mensagens (WhatsApp)

    circle-check

    Dicas para aumentar sua conversão

    • Contextualize seu cliente que ele poderá realizar uma validação de identidade para ter seu pedido aprovado. O discurso voltado para segurança costuma ter maior conversão;

    • Informe seu cliente que você utiliza um parceiro para garantir a identidade dele (preferencialmente, cite a Unico para garantir confiança nesse processo);

    • Deixa claro para seu cliente que caso ele não faça a validação de identidade, o pedido dele poderá ser recusado;

    • Envie as transações de identidade o mais próximo possível do momento compra desse cliente (isso também costuma aumentar a conversão);

    • Após o usuário finalizar a validação de identidade, informe que o pedido ainda será analisado.

    hashtag
    Ferramenta da mesa de análise

    Aplicação
    Forma de utilização
    Canal

    Web / Webmobile

    Integrado

    Mensagens (WhatsApp)

    Web / Webmobile

    Manual

    Mensagens (WhatsApp)

    circle-check

    Dicas para aumentar sua conversão

    • Contextualize seu cliente que ele poderá realizar uma validação de identidadepara ter seu pedido aprovado. O discurso voltado para segurança costuma ter maior conversão;

    • Informe seu cliente que você utiliza um parceiro para garantir a identidade dele (preferencialmente, cite a Unico para garantir confiança nesse processo);

    • Deixa claro para seu cliente que caso ele não faça a validação de identidade, o pedido dele poderá ser recusado;

    • Envie as transações de identidade o mais próximo possível do momento compra desse cliente (isso também costuma aumentar a conversão);

    • Após o usuário finalizar a validação de identidade, informe que o pedido ainda será analisado.

    hashtag
    Recuperação de vendas

    Aplicação
    Forma de utilização
    Canal

    Web / Webmobile

    Integrado

    Mensagens (WhatsApp)

    Web / Webmobile

    Manual

    Mensagens (WhatsApp)

    circle-check

    Dicas para aumentar sua conversão

    • Contextualize seu cliente que ele poderá realizar uma validação de identidade para ter seu pedido aprovado. O discurso voltado para segurança costuma ter maior conversão;

    • Informe seu cliente que você utiliza um parceiro para garantir a identidade dele (preferencialmente, cite a Unico para garantir confiança nesse processo);

    • Deixa claro para seu cliente que caso ele não faça a validação de identidade, o pedido dele poderá ser recusado;

    • Envie as transações de identidade o mais próximo possível do momento compra desse cliente (isso também costuma aumentar a conversão);

    • Após o usuário finalizar a validação de identidade, informe que o pedido ainda será analisado.

    hashtag
    Onboarding de cartão de crédito

    Aplicação
    Forma de utilização
    Canal

    Web / Webmobile / Mobile

    Integrado

    REST API

    www.unico.io/FAQarrow-up-right

    hashtag
    Consultar status da análise de chargeback

    get

    Endpoint para consultar o status de um chargeback específico de uma transação.

    Path parameters
    transaction_idstringRequired

    ID da transação relacionada ao chargeback.

    chargeback_idstringRequired

    ID do chargeback a ser consultado.

    Header parameters
    AuthorizationstringRequired

    Access-token válido. O valor deve ser enviado no formato Bearer {token}".

    Responses
    chevron-right
    200

    Consulta do status do chargeback bem-sucedida.

    application/json
    idstringOptional

    ID do chargeback.

    Example: 8263a268-5388-492a-bca2-28e1ff4a69f0
    statusstringOptional

    Status atual do chargeback.

    Example: waiting
    chevron-right
    400

    Dados inválidos na requisição.

    application/json
    codestringOptional

    Código do erro.

    Example: 40004
    messagestringOptional

    Detalhes do erro.

    Example: transaction id is invalid
    chevron-right
    403

    Proibição de acesso (token inválido ou permissões insuficientes).

    application/json
    chevron-right
    404

    Transação não encontrada.

    application/json
    chevron-right
    500

    Erro interno do servidor.

    application/json
    get
    /credit/transactions/{transaction_id}/chargeback/{chargeback_id}
    GET /api/public/v1/credit/transactions/{transaction_id}/chargeback/{chargeback_id} HTTP/1.1
    Host: transactions.transactional.uat.unico.app
    Authorization: text
    Accept: */*
    
    {
      "id": "8263a268-5388-492a-bca2-28e1ff4a69f0",
      "status": "waiting"
    }

    Onboarding de cartão de crédito

    Nesta seção, você encontrará todos as especificações técnicas das REST APIs do produto IDPay para gerenciar transações de onboarding de cartão de crédito

    hashtag
    Antes de começar

    Suas requisições de API são autenticadas utilizando um access-token. Qualquer requisição que não inclua um access-token válido retornará um erro.

    Você pode ver mais sobre como gerar um access-token aquiarrow-up-right.

    circle-info

    hashtag
    Base URL:

    • UAT: https://transactions.transactional.uat.unico.app/api/public/v1;

    • Produção: https://transactions.transactional.unico.app/api/public/v1.

    hashtag
    Validação do cartão de crédito

    circle-exclamation

    Importante

    • É possível realizar o "Onboarding do cartão de crédito" solicitando a selfie do usuário final e realizando todo o cadastro OU reutilizar as capturas biométricas dos processos de outros produtos da plataforma Unico IDCloud:

    circle-info

    Para ver todos os status possíveis, consulte a seção .

    circle-check

    Para otimizar a performance da sua aplicação, você também pode implementar nosso para saber quando realizar a consulta do status da transação.

    Para reutilizar os processos gerados pelos outros produtos da plataforma Unico IDCloud você deve informar o ID do processo de referencia no campo additionalInfo.processID;
  • Os processos de referência que serão utilizados devem ter sido concluídos em no máximo 1 hora.

  • Enumeradosarrow-up-right
    Webhookarrow-up-right

    hashtag
    Solicitar análise de chargeback

    post

    Endpoint para solicitar a análise do chargeback de uma transação especificada.

    Path parameters
    transaction_idstringRequired

    ID da transação que será submetida ao chargeback.

    Header parameters
    AuthorizationstringRequired

    Access-token válido. O valor deve ser enviado no formato Bearer {token}".

    Body
    datetimestring · date-timeRequired

    Data e hora do pedido de chargeback no formato ISO 8601.

    Example: 2023-01-05T03:00:00.000Z
    keystringRequired

    Tipo da chave de identificação do solicitante.

    Example: cpf
    valuestringRequired

    Valor da chave de identificação do solicitante.

    Example: CPF_DO_USUARIO
    namestringRequired

    Nome do solicitante.

    Example: NOME_DO_USUARIO
    reasonstringRequired

    Motivo da solicitação de chargeback.

    Example: MOTIVO_DA_SOLICITACAO
    observationstringOptional

    Observações gerais sobre o pedido.

    Example: OBSERVACOES_GERAIS
    labelstringRequired

    Nome ou descrição do arquivo.

    Example: NOME_DO_ARQUIVO
    datastringRequired

    Arquivo PDF codificado em Base64.

    Example: JVBERi0xLjQKMSAwI==
    Responses
    chevron-right
    200

    Solicitação de chargeback bem-sucedida.

    application/json
    idstringOptional

    ID do chargeback gerado.

    Example: 8263a268-5388-492a-bca2-28e1ff4a69f0
    chevron-right
    400

    Dados inválidos na requisição.

    application/json
    codestringOptional

    Código do erro.

    Example: 40004
    messagestringOptional

    Detalhes do erro.

    Example: transaction id is invalid
    chevron-right
    403

    Proibição de acesso (token inválido ou permissões insuficientes).

    application/json
    chevron-right
    404

    Transação não encontrada.

    application/json
    chevron-right
    500

    Erro interno do servidor.

    application/json
    post
    /credit/transactions/{transaction_id}/chargeback
    {
      "id": "8263a268-5388-492a-bca2-28e1ff4a69f0"
    }
    POST /api/public/v1/credit/transactions/{transaction_id}/chargeback HTTP/1.1
    Host: transactions.transactional.uat.unico.app
    Authorization: text
    Content-Type: application/json
    Accept: */*
    Content-Length: 254
    
    {
      "datetime": "2023-01-05T03:00:00.000Z",
      "requestor": {
        "key": "cpf",
        "value": "CPF_DO_USUARIO"
      },
      "name": "NOME_DO_USUARIO",
      "reason": "MOTIVO_DA_SOLICITACAO",
      "observation": "OBSERVACOES_GERAIS",
      "documents": [
        {
          "label": "NOME_DO_ARQUIVO",
          "data": "JVBERi0xLjQKMSAwI=="
        }
      ]
    }

    hashtag
    Reenviar notificação da transação

    post

    Endpoint para reenviar notificações via e-mail e telefone para uma transação específica.

    Path parameters
    transaction_idstringRequired

    ID da transação para a qual a notificação será enviada.

    Header parameters
    AuthorizationstringRequired

    Access-token válido. O valor deve ser enviado no formato Bearer {token}".

    Body
    phonestringRequired

    Número de telefone para o envio da notificação.

    Example: CELULAR_NOTIFICACAO
    emailstringRequired

    Endereço de e-mail para o envio da notificação.

    Example: EMAIL_NOTIFICACAO
    Responses
    chevron-right
    200

    Notificação enviada com sucesso.

    application/json
    idstringOptional

    ID único da notificação gerada.

    Example: b50ee24c-71eb-4a5d-ade1-41c48b44c240
    linkstringOptional

    Link gerado para a notificação.

    Example: https://aces.so/example
    chevron-right
    400

    Dados inválidos na requisição.

    application/json
    codestringOptional

    Código do erro.

    Example: 40004
    messagestringOptional

    Detalhes do erro.

    Example: transaction id is invalid
    chevron-right
    403

    Proibição de acesso (token inválido ou permissões insuficientes).

    application/json
    chevron-right
    404

    Transação não encontrada.

    application/json
    chevron-right
    500

    Erro interno do servidor.

    application/json
    post
    /credit/transactions/{transaction_id}/notify
    {
      "id": "b50ee24c-71eb-4a5d-ade1-41c48b44c240",
      "link": "https://aces.so/example"
    }
    POST /api/public/v1/credit/transactions/{transaction_id}/notify HTTP/1.1
    Host: transactions.transactional.uat.unico.app
    Authorization: text
    Content-Type: application/json
    Accept: */*
    Content-Length: 59
    
    {
      "phone": "CELULAR_NOTIFICACAO",
      "email": "EMAIL_NOTIFICACAO"
    }

    hashtag
    Consultar status da transação

    get

    Endpoint para consultar o status atual de uma transação específica.

    Path parameters
    transaction_idstringRequired

    ID da transação para verificar o status.

    Header parameters
    AuthorizationstringRequired

    Access-token válido. O valor deve ser enviado no formato Bearer {token}.

    Responses
    chevron-right
    200

    Status da transação obtido com sucesso.

    application/json
    statusstringOptional

    Status atual da transação.

    Example: processing
    chevron-right
    400

    Dados inválidos na requisição.

    application/json
    codestringOptional

    Código do erro.

    Example: 40004
    messagestringOptional

    Detalhes do erro.

    Example: transaction id is invalid
    chevron-right
    403

    Proibição de acesso (token inválido ou permissões insuficientes).

    application/json
    chevron-right
    404

    Transação não encontrada.

    application/json
    chevron-right
    500

    Erro interno do servidor.

    application/json
    get
    /credit/transactions/{transaction_id}
    GET /api/public/v1/credit/transactions/{transaction_id} HTTP/1.1
    Host: transactions.transactional.uat.unico.app
    Authorization: text
    Accept: */*
    
    {
      "status": "processing"
    }

    hashtag
    Recuperar conjunto probatório da transação

    get

    Endpoint para recuperar o conjunto probatório de uma transação específica.

    Path parameters
    transaction_idstringRequired

    ID da transação para a qual o conjunto probatório será recuperado.

    Header parameters
    AuthorizationstringRequired

    Access-token válido. O valor deve ser enviado no formato Bearer {token}.

    Responses
    chevron-right
    200

    Link do arquivo probatório obtido com sucesso.

    application/json
    linkstringOptional

    URL do arquivo probatório.

    Example: https://unico.io/probative.pdf
    chevron-right
    400

    Dados inválidos na requisição.

    application/json
    codestringOptional

    Código do erro.

    Example: 40004
    messagestringOptional

    Detalhes do erro.

    Example: transaction id is invalid
    chevron-right
    403

    Proibição de acesso (token inválido ou permissões insuficientes).

    application/json
    chevron-right
    404

    Transação não encontrada.

    application/json
    chevron-right
    500

    Erro interno do servidor.

    application/json
    get
    /credit/transactions/{transaction_id}/probative

    Link do arquivo probatório obtido com sucesso.

    {
      "link": "https://unico.io/probative.pdf"
    }
    GET /api/public/v1/credit/transactions/{transaction_id}/probative HTTP/1.1
    Host: transactions.transactional.uat.unico.app
    Authorization: text
    Accept: */*
    

    hashtag
    Criar transação

    post

    Endpoint para criar uma nova transação.

    Header parameters
    AuthorizationstringRequired

    Access-token válido. O valor deve ser enviado no formato Bearer {token}".

    Body
    Responses
    chevron-right
    200

    Transação criada com sucesso.

    application/json
    idstringOptional

    ID da transação criada.

    Example: 6ab1771e-dfab-4e47-8316-2452268e5481
    statusstringOptional

    Status atual da transação.

    Example: waiting
    linkstringOptional

    Link relacionado à transação.

    Example: https://aces.so/teste
    tokenstringOptional

    Token assinado que contém os parâmetros necessários para inicializar o SDK web do Unico IDPay.

    Example: eyJhbGciOiJIUzI1NiIsInR5cC[...]Ok6yJV_adQssw5c
    expiresAtstringOptional

    Data e hora da expiração da transação no formato ISO 8601 (UTC).

    Example: 2023-10-01T12:00:00Z
    chevron-right
    400

    Dados inválidos na requisição.

    application/json
    codestringOptional

    Código do erro.

    Example: 40027
    messagestringOptional

    Detalhes do erro.

    Example: replicated transaction
    chevron-right
    403

    Proibição de acesso (token inválido ou permissões insuficientes).

    application/json
    chevron-right
    404

    Recurso não encontrado.

    application/json
    chevron-right
    500

    Erro interno do servidor.

    application/json
    post
    /credit/transaction
    keystring · enumRequired

    Tipo de chave de identificação do usuário. Orientamos que utilize sempre o CPF, pois há uma maior conversão.

    Example: cpfPossible values:
    valuestringRequired

    Valor da chave de identificação do usuário. Deve ser enviado sem pontos ou traços.

    Example: 12345678909
    orderNumberstringRequired

    Número do pedido associado à transação. É o dado que será utilizado como indexador no portal e você pode utilizar como forma de associação (foreign key) entre seu sistema e o IDPay.

    Example: 123456
    companystringRequired

    ID da empresa responsável pela transação. Este campo é fornecido pela Unico.

    Example: f44f02e5-320e-497b-b346-8cf19b3ee2a4
    redirectUrlstringOptional

    URL para onde o usuário será redirecionado após a finalizar a transação. Valores possíveis são: Uma URL https para redirecionar páginas web ou uma URL Schema para redirecionamento em aplicações móveis nativas.

    Example: https://exemplo.com/redirect
    binDigitsstringRequired

    8 primeiros dígitos do cartão.

    Example: 87654321
    lastDigitsstringRequired

    Últimos 4 dígitos do cartão.

    Example: 7890
    expirationDatestringOptional

    Data de validade do cartão.

    Example: 12/24
    namestringRequired

    Nome do titular do cartão. O campo name deve ser enviado o nome correto e tomar cuidado com problemas de encode, valores incorretos e/ou inválidos podem ocasionar problemas com aprovação no fluxo. Já que esse dado é utilizado na experiência e na comunicação com o usuário final.

    Example: João da Silva
    valuenumber · floatRequired

    Valor total da compra.

    Example: 100.5
    keystringOptional

    Tipo de contato (ex.: 'phone', 'email')

    Example: phone
    valuestringOptional

    Valor do contato

    Example: 5521999999991
    keystringOptional

    Tipo de contato (ex.: 'phone', 'email')

    Example: phone
    valuestringOptional

    Valor do contato

    Example: 5521988888882
    {
      "id": "6ab1771e-dfab-4e47-8316-2452268e5481",
      "status": "waiting",
      "link": "https://aces.so/teste",
      "token": "eyJhbGciOiJIUzI1NiIsInR5cC[...]Ok6yJV_adQssw5c",
      "expiresAt": "2023-10-01T12:00:00Z"
    }
    POST /api/public/v1/credit/transaction HTTP/1.1
    Host: transactions.transactional.uat.unico.app
    Authorization: text
    Content-Type: application/json
    Accept: */*
    Content-Length: 490
    
    {
      "identity": {
        "key": "cpf",
        "value": "12345678909"
      },
      "orderNumber": "123456",
      "company": "f44f02e5-320e-497b-b346-8cf19b3ee2a4",
      "redirectUrl": "https://exemplo.com/redirect",
      "card": {
        "binDigits": "87654321",
        "lastDigits": "7890",
        "expirationDate": "12/24",
        "name": "João da Silva"
      },
      "value": 100.5,
      "mainContacts": [
        {
          "key": "phone",
          "value": "5521999999991"
        },
        {
          "key": "email",
          "value": "[email protected]"
        }
      ],
      "fallbackContacts": [
        {
          "key": "phone",
          "value": "5521988888882"
        },
        {
          "key": "email",
          "value": "[email protected]"
        }
      ]
    }

    hashtag
    Validar cartão de crédito

    post

    Endpoint para validar cartão de crédito.

    Header parameters
    AuthorizationstringRequired

    Access-token válido. O valor deve ser enviado no formato Bearer {token}".

    Body
    Responses
    chevron-right
    200

    Transação criada com sucesso.

    application/json
    idstringOptional

    ID da transação criada.

    Example: 6ab1771e-dfab-4e47-8316-2452268e5481
    statusstringOptional

    Status atual da transação.

    Example: waiting
    linkstringOptional

    Link relacionado à transação (este link só será retornado caso não envie o parâmetro additionalInfo.processID).

    Example: https://aces.so/teste
    tokenstringOptional

    Token assinado que contém os parâmetros necessários para inicializar o SDK web do Unico IDPay (este token só será retornado caso não envie o parâmetro additionalInfo.processID).

    Example: eyJhbGciOiJIUzI1NiIsInR5cC[...]Ok6yJV_adQssw5c
    chevron-right
    400

    Dados inválidos na requisição.

    application/json
    codestringOptional

    Código do erro.

    Example: 40027
    messagestringOptional

    Detalhes do erro.

    Example: replicated transaction
    chevron-right
    403

    Proibição de acesso (token inválido ou permissões insuficientes).

    application/json
    chevron-right
    404

    Recurso não encontrado.

    application/json
    chevron-right
    500

    Erro interno do servidor.

    application/json
    post
    /walletid/transaction
    keystringRequired

    Tipo de chave de identificação do usuário.

    Example: cpf
    valuestringRequired

    Valor da chave de identificação do usuário.

    Example: 12345678909
    orderNumberstringRequired

    Número associado ao onboarding. É o dado que será utilizado como indexador no portal e você pode utilizar como forma de associação (foreign key) entre seu sistema e o IDPay.

    Example: 123456
    companystringRequired

    ID da empresa responsável pela transação. Este campo é fornecido pela Unico.

    Example: 7873959b-f7b2-4b81-8b0e-4ce178e64daf
    redirectUrlstringOptional

    URL para onde o usuário será redirecionado após finalizar a transação. Valores possíveis são: Uma URL HTTPS para redirecionar páginas web ou uma URL Schema para redirecionamento em aplicações móveis nativas.

    Example: https://exemplo.com/redirect
    binDigitsstringRequired

    8 primeiros dígitos do cartão.

    Example: 87654321
    lastDigitsstringRequired

    Últimos 4 dígitos do cartão.

    Example: 7890
    expirationDatestringOptional

    Data de validade do cartão.

    Example: 12/24
    namestringRequired

    Nome do titular do cartão. O campo name deve ser enviado o nome correto e tomar cuidado com problemas de encode, valores incorretos e/ou inválidos podem ocasionar problemas com aprovação no fluxo. Já que esse dado é utilizado na experiência e na comunicação com o usuário final.

    Example: João da Silva
    valuenumber · floatOptional

    Valor máximo assegurado.

    Example: 10.5
    processIDstringRequired

    Processo de referência da plataforma IDCloud.

    Example: 6ab1771e-dfab-4e47-8316-2452268e5481
    {
      "id": "6ab1771e-dfab-4e47-8316-2452268e5481",
      "status": "waiting",
      "link": "https://aces.so/teste",
      "token": "eyJhbGciOiJIUzI1NiIsInR5cC[...]Ok6yJV_adQssw5c"
    }
    POST /api/public/v1/walletid/transaction HTTP/1.1
    Host: transactions.transactional.uat.unico.app
    Authorization: text
    Content-Type: application/json
    Accept: */*
    Content-Length: 349
    
    {
      "identity": {
        "key": "cpf",
        "value": "12345678909"
      },
      "orderNumber": "123456",
      "company": "7873959b-f7b2-4b81-8b0e-4ce178e64daf",
      "redirectUrl": "https://exemplo.com/redirect",
      "card": {
        "binDigits": "87654321",
        "lastDigits": "7890",
        "expirationDate": "12/24",
        "name": "João da Silva"
      },
      "value": 10.5,
      "additionalInfo": {
        "processID": "6ab1771e-dfab-4e47-8316-2452268e5481"
      }
    }

    iOS

    O campo link é usado para direcionar o usuário. Esse campo é recebido na resposta de sucesso da criação da transação.

    Aqui você encontrará a melhor forma de gerenciar a experiência do usuário em sua aplicação iOS:

    Para o cenário de uso em iOS, o uso da ASWebAuthenticationSession é uma das maneiras recomendadas.

    Após criar a transação e obter o link da transação, a seguinte implementação é recomendada:

    • Em seu fluxo comum (que está inserido o IDPay), você irá abrir a ASWebAuthenticationSession com o link gerado via API;

    • Você poderá customizar essa abertura da maneira que for o ideal para seu aplicativo;

    • Irá monitorar se houve alteração de URL (para a redirectUrl) e então feche a página;

    Para fazer o fluxo funcionar é necessário seguir os seguintes passos:

    hashtag
    Passo 1: Criar o controlador de autenticação de pagamento

    O primeiro passo que você deve realizar é criar o controlador de autenticação de pagamentos, para isso crie uma classe chamada IDPayAuthenticationController (ou como preferir chamar).

    Na sequência, importe o framework AuthenticationServices no topo da classe.

    Declare a classe como NSObject e implemente o protocolo ASWebAuthenticationPresentationContextProviding.

    O resultado deve ser:

    hashtag
    Passo 2: Implementar a autenticação

    Abra o arquivo onde você irá realizar a autenticação e adicione as importações necessárias (em nosso exemplo estamos fazendo no ContentView.swift).

    Para controlar o estado da autenticação criaremos uma propriedade @State.

    Crie uma instância da classe IDPayAuthenticationController fora do corpo da estrutura ContentView.

    Para realizar a validação do pagamento crie uma função chamada authenticatePayment.

    triangle-exclamation

    Lembre-se de alterar a url URL_AUTHENTICATION para a URL de autenticação recebida em sua transação e também o callbackURLScheme BUNDLE para o redirect informado na criação de sua transação (recomendamos o uso do Bundle Identifier de seu aplicativo).

    circle-info

    É importante setar prefersEphemeralWebBrowserSession para true para garantir uma autenticação única por transação.

    Exemplo de como deverá ficar no app:

    circle-info

    É necessário algumas permissões para funcionar corretamente, tais como:

    • Câmera;

    • Geolocalização.

    Para saber mais sobre, recomendamos uma leitura nos seguintes artigos e documentações:

    • Para acessar a documentação oficial, clique .

    import AuthenticationServices
    
    class IDPayAuthenticationController: NSObject, ASWebAuthenticationPresentationContextProviding {
        func presentationAnchor(for session: ASWebAuthenticationSession) -> ASPresentationAnchor {
               if let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene {
                   if let mainWindow = windowScene.windows.first {
                       return mainWindow
                   }
               }
               return ASPresentationAnchor()
           }
    }
    import SwiftUI
    import AuthenticationServices
    @State private var isAuthenticated = false
    let idPayController = IDPayAuthenticationController()
    func authenticatePayment() {
        guard let url = URL(string: "URL_AUTHENTICATION") else { return }
    
        var session: ASWebAuthenticationSession?
        session = ASWebAuthenticationSession(url: url, callbackURLScheme: "BUNDLE") { callbackURL, error in
            guard callbackURL != nil else {
                if let error = error {
                    return print("Erro durante a autenticação: \(error.localizedDescription)")
                }
                return
            }
    
            // Processa o URL de callback para verificar se a autenticação foi bem-sucedida
            session?.cancel()
            isAuthenticated = true
        }
    
        session?.presentationContextProvider = idPayController
        session?.prefersEphemeralWebBrowserSession = true
        session?.start()
    }
    ​arrow-up-right
    ​arrow-up-right
    aquiarrow-up-right

    hashtag
    Consultar status de validação

    get

    Endpoint para consultar o status atual de uma transação específica.

    Path parameters
    transaction_idstringRequired

    ID da transação a ser consultada.

    Example: 6ab1771e-dfab-4e47-8316-2452268e5481
    Header parameters
    AuthorizationstringRequired

    Access-token válido. O valor deve ser enviado no formato Bearer {token}".

    Responses
    chevron-right
    200

    Consulta realizada com sucesso.

    application/json
    statusstringOptional

    Status atual da transação.

    Example: processing
    hasIdentityChangedbooleanOptional

    Se houve troca de identidade na transação (opcional).

    Example: false
    chevron-right
    400

    Dados inválidos na requisição.

    application/json
    codestringOptional

    Código do erro.

    Example: 40004
    messagestringOptional

    Detalhes do erro.

    Example: transaction id is invalid
    chevron-right
    403

    Proibição de acesso (token inválido ou permissões insuficientes).

    application/json
    chevron-right
    404

    Transação não encontrada.

    application/json
    chevron-right
    500

    Erro interno do servidor.

    application/json
    get
    /walletid/transactions/{transaction_id}
    {
      "status": "processing",
      "hasIdentityChanged": false
    }
    GET /api/public/v1/walletid/transactions/{transaction_id} HTTP/1.1
    Host: transactions.transactional.uat.unico.app
    Authorization: text
    Accept: */*
    

    Visão Geral

    Nesta seção, você encontrará uma visão geral sobre o funcionamento do SDK do produto Unico IDPay

    hashtag
    Introdução

    O Unico IDPay oferece uma integração simples e rápida. Atualmente trabalhamos utilizando como padrão de integração em aplicativos (mobiles ou web) através do uso de Webview, SDK e Redirect. Esse padrão potencializa a segurança do seu negócio e dos seus clientes, assim abstraindo a complexidade de manipulação da câmera do dispositivo dos usuários e a captura da selfie.

    Em nossa REST API, oferemos os métodos para geração de link de integração que podem ser abertos e controlados pelos aplicativos.

    hashtag
    Gerando Dados na API

    Antes de avançar para os detalhes de integração no seu aplicativo ou website, é fundamental iniciar pela integração com a nossa API. Nesse processo, dois pontos principais serão utilizados:

    1. Criar Transação (CreateTransaction)

      • Certifique-se de preencher o campo redirectUrl, que será essencial para o fluxo da integração.

    Após essa etapa inicial, você estará pronto para prosseguir com a integração no aplicativo ou website.

    É importante lembrar que, ao finalizar todo o fluxo, será necessário obter o resultado da transação por meio da nossa API para garantir o encerramento correto do processo.

    circle-info

    Você pode utilizar a API em um ambiente de homologação para testar as funcionalidades evitando afetar seu entorno produtivo.