All Projects → bacen → Pix Dict Quickstart

bacen / Pix Dict Quickstart

Licence: apache-2.0
Quickstart da API do DICT

Programming Languages

java
68154 projects - #9 most used programming language

Labels

Projects that are alternatives of or similar to Pix Dict Quickstart

Python Sortedcontainers
Python Sorted Container Types: Sorted List, Sorted Dict, and Sorted Set
Stars: ✭ 2,379 (+457.14%)
Mutual labels:  dict
js-data-structures
🌿 Data structures for JavaScript
Stars: ✭ 56 (-86.89%)
Mutual labels:  dict
immutabledict
A fork of frozendict, an immutable wrapper around dictionaries for Python3
Stars: ✭ 20 (-95.32%)
Mutual labels:  dict
Pottery
Redis for humans. 🌎🌍🌏
Stars: ✭ 204 (-52.22%)
Mutual labels:  dict
weel-translate
🚦 后续更新发布到 Releases 不再提交 AMO 扩展市场
Stars: ✭ 57 (-86.65%)
Mutual labels:  dict
DictGenerate
使用Go语言编写的社工字典生成器(The social engineering dictionary generator written by Go)
Stars: ✭ 64 (-85.01%)
Mutual labels:  dict
Scalpl
A lightweight wrapper to operate on nested dictionaries seamlessly. 👌
Stars: ✭ 153 (-64.17%)
Mutual labels:  dict
Bottleneckosmosis
瓶颈渗透,web渗透,red红队,fuzz param,注释,js字典,ctf
Stars: ✭ 368 (-13.82%)
Mutual labels:  dict
JSON-path
Find the path of a key / value in a JSON hierarchy easily.
Stars: ✭ 88 (-79.39%)
Mutual labels:  dict
Medical-Names-Corpus
医疗语料库。医疗机构名语料库。药品本位码。
Stars: ✭ 26 (-93.91%)
Mutual labels:  dict
Dict
Chinese and English translation tools in the command line(命令行下中英文翻译工具)
Stars: ✭ 243 (-43.09%)
Mutual labels:  dict
envs
Easy access of environment variables from Python with support for typing (ex. booleans, strings, lists, tuples, integers, floats, and dicts). Now with CLI settings file converter.
Stars: ✭ 25 (-94.15%)
Mutual labels:  dict
dotty dict
Dictionary wrapper for quick access to deeply nested keys.
Stars: ✭ 67 (-84.31%)
Mutual labels:  dict
Python Benedict
dict subclass with keylist/keypath support, I/O shortcuts (base64, csv, json, pickle, plist, query-string, toml, xml, yaml) and many utilities. 📘
Stars: ✭ 204 (-52.22%)
Mutual labels:  dict
Ydict
Yet another command-line youdao dictionary for geeks!
Stars: ✭ 318 (-25.53%)
Mutual labels:  dict
Addict
The Python Dict that's better than heroin.
Stars: ✭ 2,141 (+401.41%)
Mutual labels:  dict
django-serializable-model
Django classes to make your models, managers, and querysets serializable, with built-in support for related objects in ~150 LoC
Stars: ✭ 15 (-96.49%)
Mutual labels:  dict
Elasticsearch Jieba Plugin
jieba analysis plugin for elasticsearch 7.0.0, 6.4.0, 6.0.0, 5.4.0,5.3.0, 5.2.2, 5.2.1, 5.2, 5.1.2, 5.1.1
Stars: ✭ 379 (-11.24%)
Mutual labels:  dict
Pix Dict Api
API do DICT - Diretório de Identificadores de Contas Transacionais
Stars: ✭ 340 (-20.37%)
Mutual labels:  dict
Species-Names-Corpus
物种名称语料库。植物名,动物名。
Stars: ✭ 23 (-94.61%)
Mutual labels:  dict

DICT - QuickStart

Bem-vindo ao QuickStart do DICT, o Diretório de Identificadores de Contas Transacionais do PIX (Sistema de Pagamentos Instantâneos do Banco Central do Brasil). O objetivo é guiar o usuário/desenvolvedor no primeiro contato com a API do DICT. O público-alvo são profissionais de TI dos Prestadores de Serviços de Pagamentos (PSP). Se você não faz parte desse grupo, provavelmente o código aqui apresentado não servirá a nenhum propósito.

A aplicação gerada nesse guia só irá funcionar se for executada a partir de uma máquina conectada à RSFN (Rede do Sistema Financeiro Nacional), e com certificados ISPB válidos e registrados previamente para fins de realização de Pagamentos Instantâneos.

Se você tiver alguma dúvida, ou se esse é seu primeiro contato com o PIX ou com o DICT, recomendamos que verifique a página oficial do ecossitema de pagamentos instantâneos, especialmente: Especificações Técnicas e de Negócio; Manual das Interfaces de Comunicação; Manual de Conectividade com a RSFN; e o Manual de Segurança.

Esse projeto é disponibilizado com propósito didático, e não deve ser utilizado como base para construção da integração final do PSP com o DICT. Ele não dá soluções 'robustas' para questões como: gestão de certificados na abertura do canal TLS, ou fluxos de tratamento de falhas nas operações.

O projeto é disponibilizado sob a licença APACHE 2.0 (arquivo LICENSE). Ao baixar o projeto você está concordando com os termos da licença. Em resumo: não nos responsabilizamos por nenhum problema decorrente do uso desse código! Utilize-o por sua própria conta e risco.

Observações:

  • O DICT utiliza autenticação TLS mútua: o cliente também precisa se autenticar. Verifique o processo de registro do certificado no documento "Especificações Técnicas e de Negócio do Ecossistema de Pagamentos Instantâneos Brasileiro".

  • No quickstart, para simplificar, os objetos criptográficos (certificado e chave privada) são armazenados em arquivos, mas isso não deve ser replicado no ambiente de produção! Recomendamos a utilização de um hardware security module (HSM) para gerenciar o acesso a essas informações.

  • O processo de assinatura digital das requisições ao DICT é exemplificado no quickstart. No entanto, as assinaturas das respostas do DICT não estão sendo validadas. Para produção, é fundamental que as assinaturas digitais sejam corretamente validadas.

  • Para pleno funcionamento e geração correta das classes cliente, matenha as versões utilizadas neste exemplo.

  • A documentação oficial da API e do DICT podem ser consultadas no projeto de interface do DICT

Tecnologias utilizadas:

Java 8 (jdk8u232-b09) 
Maven 3.6.2

Passo a passo:

  • Baixe a aplicação com o seguinte comando:
git clone https://github.com/bacen/pix-dict-quickstart.git
  • Dentro da pasta do projeto, execute:
 mvn package

No passo acima, as classes necessárias são criadas a partir da especificação (spec.yaml)

Para executar a aplicação, deve-se informar a localização e a senha dos objetos criptográficos, bem como o ISPB do participante. Nesse exemplo são usados dois keystores distintos: um para conexão TLS e outro passa assinatura digital.

java -Djavax.net.ssl.keyStore=${PWD}/channel.pfx \
     -Djavax.net.ssl.keyStorePassword=changeit \
     -jar target/dict-quickstart.jar \
     -ispb <ispb-do-participante> \
     -signatureKeyStore signature.pfx \
     -signatureKeyStorePassword changeit \
     -baseAddress https://dict-h.pi.rsfn.net.br/api/v1-rc6

Problemas e Soluções

Problema Solução
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
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
Entry associated with given key does not exist Verifique se o ISPB do participante foi definido corretamente
Entry in custody of participant. Use your book transfer O participante não pode consultar as chaves que estão sob sua custódia
Participant is not allowed to access this resource Verifique se o ISPB informado na linha de comando é o mesmo do certificado
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

Exemplos

  • Importar o certificado da AC ICPBR, usando shell BASH, no Linux:
keytool -import \
        -trustcacerts \
        -keystore ${JAVA_HOME}/jre/lib/security/cacerts \
        -storepass changeit \
        -alias acraiz-icpbr \
        -file  <(curl -sk http://acraiz.icpbrasil.gov.br/credenciadas/RAIZ/ICP-Brasilv5.crt)
  • Gerar keystores PKCS#12 (signature.pfx e channel.pfx) importando o certificado e a chave no formato PEM:
openssl pkcs12 -export -in client.crt -inkey client.key -out signature.pfx -name client -password pass:changeit
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].