{"id":21069388,"url":"https://github.com/bacen/pix-dict-quickstart","last_synced_at":"2025-04-05T23:08:46.496Z","repository":{"id":53280088,"uuid":"241386011","full_name":"bacen/pix-dict-quickstart","owner":"bacen","description":"Quickstart da API do DICT","archived":false,"fork":false,"pushed_at":"2021-04-29T21:53:49.000Z","size":45,"stargazers_count":455,"open_issues_count":5,"forks_count":49,"subscribers_count":92,"default_branch":"master","last_synced_at":"2025-03-29T22:06:34.637Z","etag":null,"topics":["bcb","dict","instant-payments","pix"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bacen.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-02-18T14:44:30.000Z","updated_at":"2025-02-27T11:41:03.000Z","dependencies_parsed_at":"2022-08-28T15:51:05.323Z","dependency_job_id":null,"html_url":"https://github.com/bacen/pix-dict-quickstart","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bacen%2Fpix-dict-quickstart","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bacen%2Fpix-dict-quickstart/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bacen%2Fpix-dict-quickstart/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bacen%2Fpix-dict-quickstart/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bacen","download_url":"https://codeload.github.com/bacen/pix-dict-quickstart/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247411234,"owners_count":20934653,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bcb","dict","instant-payments","pix"],"created_at":"2024-11-19T18:34:55.499Z","updated_at":"2025-04-05T23:08:46.459Z","avatar_url":"https://github.com/bacen.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"## *DICT - QuickStart*\n\nBem-vindo ao QuickStart do DICT, o Diretório de Identificadores de Contas Transacionais\ndo PIX (Sistema de Pagamentos Instantâneos do Banco Central do Brasil). O objetivo \né guiar o usuário/desenvolvedor no primeiro contato com a API do DICT. O público-alvo\nsão profissionais de TI dos Prestadores de Serviços de Pagamentos (PSP). Se você\nnão faz parte desse grupo, provavelmente o código aqui apresentado não servirá a \nnenhum propósito.\n\nA aplicação gerada nesse guia só irá funcionar se for executada a partir de uma máquina\nconectada à RSFN (Rede do Sistema Financeiro Nacional), e com certificados ISPB válidos\ne registrados previamente para fins de realização de Pagamentos Instantâneos.\n\nSe você tiver alguma dúvida, ou se esse é seu primeiro contato com o PIX ou com \no  DICT, recomendamos que verifique a página oficial do ecossitema de \n[pagamentos instantâneos](https://www.bcb.gov.br/estabilidadefinanceira/forumpagamentosinstantaneos),\nespecialmente: Especificações Técnicas e de Negócio; Manual das Interfaces de Comunicação; \nManual de Conectividade com a RSFN; e o Manual de Segurança.\n\nEsse projeto é disponibilizado com propósito didático, e não deve ser utilizado \ncomo base para construção da integração final do PSP com o DICT. Ele não dá soluções\n'robustas' para questões como: gestão de certificados na abertura do canal TLS, ou \nfluxos de tratamento de falhas nas operações.\n\nO projeto é disponibilizado sob a licença APACHE 2.0 (arquivo LICENSE). Ao baixar \no projeto você está concordando com os termos da licença. Em resumo: não nos responsabilizamos \npor nenhum problema decorrente do uso desse código! Utilize-o por sua própria conta \ne risco.\n\n### Observações:\n\n- O DICT utiliza autenticação TLS mútua: o cliente também precisa se autenticar.\n  Verifique o processo de registro do certificado no documento \"Especificações Técnicas \n  e de Negócio do Ecossistema de Pagamentos Instantâneos Brasileiro\".\n\n- No quickstart, para simplificar, os objetos criptográficos (certificado e chave\n  privada) são armazenados em arquivos, mas isso não deve ser replicado no ambiente \n  de produção! Recomendamos a utilização de um hardware security module (HSM) para \n  gerenciar o acesso a essas informações.\n  \n- O processo de assinatura digital das requisições ao DICT é exemplificado no quickstart. \nNo entanto, as assinaturas das respostas do DICT **não estão sendo validadas**. Para produção,\né fundamental que as assinaturas digitais sejam corretamente validadas.\n\n- Para pleno funcionamento e geração correta das classes cliente, matenha as versões \n  utilizadas neste exemplo.\n\n- A documentação oficial da API e do DICT podem ser consultadas no [projeto de interface do DICT](https://github.com/bacen/pix-dict-api)\n\n### Tecnologias utilizadas:\n```\nJava 8 (jdk8u232-b09) \nMaven 3.6.2\n```\n\n### Passo a passo:\n\n- Baixe a aplicação com o seguinte comando:\n```\ngit clone https://github.com/bacen/pix-dict-quickstart.git\n```\n\n- Dentro da pasta do projeto, execute:\n```\n mvn package\n```\n\n*No passo acima, as classes necessárias são criadas a partir da especificação (spec.yaml)*\n \nPara executar a aplicação, deve-se informar a localização e a senha dos objetos criptográficos, bem como o ISPB do participante.\nNesse exemplo são usados dois keystores distintos: um para conexão TLS e outro passa assinatura digital. \n\n```\njava -Djavax.net.ssl.keyStore=${PWD}/channel.pfx \\\n     -Djavax.net.ssl.keyStorePassword=changeit \\\n     -jar target/dict-quickstart.jar \\\n     -ispb \u003cispb-do-participante\u003e \\\n     -signatureKeyStore signature.pfx \\\n     -signatureKeyStorePassword changeit \\\n     -baseAddress https://dict-h.pi.rsfn.net.br/api/v1-rc6\n```\n \n\n### Problemas e Soluções\n\n|                                                          Problema                                                         |                                  Solução                                  |\n|:--------------------------------------------------------------------------------------------------------------------------|:--------------------------------------------------------------------------|\n| sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target | Deve-se importar o certicado da AC Raiz (v5) da ICP-Brasil para a keystore da JVM que está executando a aplicação |\n| javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure| Na execução, deve-se fornecer a localização e a senha de acesso do arquivo que armazena o certificado e a chave privada| \n| Entry associated with given key does not exist | Verifique se o ISPB do participante foi definido corretamente |\n| Entry in custody of participant. Use your book transfer | O participante não pode consultar as chaves que estão sob sua custódia |  \n| Participant is not allowed to access this resource | Verifique se o ISPB informado na linha de comando é o mesmo do certificado |\n| Could not get content org.apache.http.conn.ConnectTimeoutException: Connect to github.com:443 | O Maven não está conseguindo baixar o arquivo spec.yaml do github. Você provavelmente está atrás de um proxy. Se for esse o caso, informe o proxy na linha de comando ```mvn clean install -Dhttp.proxyHost=12.23.34.45 -Dhttp.proxyPort=1234 -Dhttps.proxyHost=12.23.34.45 -Dhttps.proxyPort=1234```. Opcionalmente, baixe manualmente o arquivo 'spec.yaml' disponível em https://github.com/bacen/pix-dict-api e salve na pasta src/main/resources, e execute o mvn da seguinte forma: ```mvn clean install -Ddownload.plugin.skip=true```\n\n\n### Exemplos\n\n- Importar o certificado da AC ICPBR, usando shell BASH, no Linux:\n\n```\nkeytool -import \\\n        -trustcacerts \\\n        -keystore ${JAVA_HOME}/jre/lib/security/cacerts \\\n        -storepass changeit \\\n        -alias acraiz-icpbr \\\n        -file  \u003c(curl -sk http://acraiz.icpbrasil.gov.br/credenciadas/RAIZ/ICP-Brasilv5.crt)\n```\n\n- Gerar keystores PKCS#12 (signature.pfx e channel.pfx) importando o certificado e a chave no formato PEM:\n \n```\nopenssl pkcs12 -export -in client.crt -inkey client.key -out signature.pfx -name client -password pass:changeit\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbacen%2Fpix-dict-quickstart","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbacen%2Fpix-dict-quickstart","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbacen%2Fpix-dict-quickstart/lists"}