Modelo de Credenciamento ao PagTesouro (Versão 1.7)

Download OpenAPI specification:Download

License: Apache 2.0

Histórico de Versões

Data Versão Descrição
18/05/2020 1.0 Versão para a Release 2 do PagTesouro.
10/08/2020 1.1 Mudança nos Tipos de Pagamento aceitos para o credenciamento.
05/02/2021 1.2 Informações complementares na seção 4, novas observações no "valorTarifa" enviado na solicitação de pagamento (API), além da remoção da "bandeira" (não mais enviada pelo PagTesouro).
22/02/2021 1.3 Inclusão do campo "valorServiço" no serviço Consulta de Pagamento. Inclusão do campo "informacoesAdicionais" no serviço Solicitação de Pagamento.
04/03/2021 1.4 Alteração do formato dos campos de datas nos serviços da API. Melhorias no texto da seção 6 e de alguns campos dos serviços da API. Alteração das URLs do serviço de Notificação do Pagamento.
15/03/2021 1.5 Atualização das URLs de Produção e de Testes do serviço de Notificação do Pagamento.
09/06/2021 1.6 Nova observação referente ao parâmetro "dataVencimento" na solicitação de pagamento.
09/02/2022 1.7 Alteração na seção 4 para contemplar as formas de armazenamento do CNPJ do PSP, conforme o Certificado ICP-Brasil seja de equipamento ou de aplicação.

1. Introdução

Este documento tem por objetivo definir as especificações e os critérios técnicos necessários para adesão dos Prestadores de Serviços de Pagamento (PSPs) ao Modelo de Credenciamento do sistema PagTesouro que foi instituído pela Secretaria do Tesouro Nacional (STN), tendo como principal objetivo o pagamento das Guias de Recolhimento da União (GRUs) pelos contribuintes de forma digital como, por exemplo, via cartão de crédito.

O conteúdo deste manual destina-se a programadores e desenvolvedores de plataformas de comércio eletrônico que desejam integrar-se ao PagTesouro para recebimento de pagamentos de GRUs, a partir do desenvolvimento e disponibilização de serviços web conforme documentados na seção "API".

2. Premissas

Para a perfeita integração do PSP com o PagTesouro, as seguintes premissas deverão ser atendidas:

  • Os serviços descritos na seção "API/PagTesouro" deverão ser implementados pelo PSP e consumidos pelo PagTesouro de forma padronizada, enquanto o serviço para recebimento das notificações de pagamentos finalizados, descrito na seção "API/PSP", será construído pelo PagTesouro e acionado pelo PSP.
  • A integração do PagTesouro com o PSP ocorrerá através de redirecionamento para o ambiente seguro do PSP (checkout padrão).
  • O PagTesouro não irá tratar a situação de estorno de pagamento. Assim, mesmo que um pagamento concluído seja estornado no PSP, o PagTesouro continuará assumindo a situação de concluído.
  • O PSP deverá prover um ambiente para testes de integração com o PagTesouro de forma isolada (por exemplo, a utilização de outra URL ou a mesma URL com outras credenciais), de modo a garantir que a realização dos testes possa ocorrer normalmente mesmo após a entrada em produção.
  • O PagTesouro disponibilizará uma Sandbox para que o PSP possa simular a execução do fluxo do pagamento de forma a testar a integração dos serviços implementados.

3. Comunicação

Os dados serão enviados e recebidos via serviços Web e será adotado o estilo arquitetural REST (Representational State Transfer) na construção dos serviços Web. A tabela abaixo lista os padrões de comunicação definidos para a integração do PSP com o PagTesouro:

Componente Especificação Observação
Tipo de Comunicação Síncrona
Protocolo HTTP v1.1 RFC 2616
Formato dos dados JSON RFC 7159

4. Segurança

Para os serviços disponíveis, a comunicação deverá contemplar os seguintes itens de segurança:

  • Uso de conexão criptografada via HTTPS (HyperText Transfer Protocol Secure).
  • Utilização do protocolo TLS 1.2 pelo HTTPS para garantir a autenticidade e a criptografia dos dados das mensagens trafegadas. Não serão suportadas versões anteriores do TLS.
  • Restrição de uso somente aos IPs dos PSPs credenciados (whitelist) para o consumo do serviço de Notificação do Pagamento. O PSP deverá encaminhar a sua lista de IPs à STN.
  • Utilização de certificado digital do tipo A1 para autenticação mútua, a fim de garantir a Confidencialidade, Integridade e Autenticidade dos dados trafegados.
  • O certificado deve ser emitido por Autoridade Certificadora credenciada pela Infraestrutura de Chaves Públicas Brasileira – ICP-Brasil, devendo conter o CNPJ da pessoa jurídica titular do Certificado digital, que poderá estar armazenado de acordo com seu tipo:
    • certificado de equipamento: na entrada Serial Number na estrutura Distinguished Name (DN);
    • certificado de aplicação: no campo otherName OID=2.16.76.1.3.3 da estrutura Subject Alternative Name (SAN).

    O certificado deve ter a extensão Extended Key Usage com permissão de "Autenticação Cliente" e a chave do certificado deverá ser no mínimo de 2048 bits.
  • A responsabilidade pela aquisição de certificados, tanto para utilização no ambiente de Testes do PagTesouro quanto no ambiente de Produção, é do PSP. A recomendação é que cada PSP tenha certificados diferentes para os referidos ambientes.
  • Ao receber uma notificação de pagamento, o PagTesouro validará o CNPJ do PSP presente no certificado recebido. Da mesma forma, ao receber uma solicitação ou consulta de pagamento, o PSP deverá validar o CNPJ do Serpro (33683111000107) contido no certificado enviado na requisição.
  • Embora em cada requisição de serviço recebida pelo PagTesouro (notificação de pagamento) ou pelo PSP (solicitação e consulta de pagamento) haja a validação do CNPJ do certificado cliente, não é necessário que as URLs expostas desses serviços façam uso de certificados ICP-Brasil, desde que a cadeia de certificados seja amplamente reconhecida. O domínio do PagTesouro ou do PSP poderiam usar, por exemplo, um certificado Let's Encrypt, GlobalSign etc.

5. Tipos de Pagamento

Os tipos de pagamento que estarão disponíveis no PagTesouro, para os quais o PSP poderá se integrar, são os seguintes:

  • Cartão de Crédito

No acionamento do serviço de Solicitação de Pagamento, o PagTesouro enviará para o PSP a relação dos tipos permitidos para aquele pagamento de GRU e, dessa forma, este deverá disponibilizar para o contribuinte apenas estas opções em seu ambiente de pagamento.

O domínio de valores possíveis para os tipos de pagamento permitidos no serviço de Solicitação de Pagamento será o seguinte:

  • "CARTAO_CREDITO"

6. Situações do Pagamento

Para o PagTesouro um pagamento possuirá apenas três situações possíveis após realizada a solicitação ao PSP, são estas:

  • "PENDENTE": indica que o pagamento foi submetido e iniciado no PSP mas ainda está pendente de conclusão.
  • "CONCLUIDO": indica que o pagamento no PSP foi concluído com sucesso.
  • "REJEITADO": indica que o pagamento no PSP não foi concluído com sucesso, ou seja, ou foi cancelado ou rejeitado.

As situações CONCLUIDO e REJEITADO para o PagTesouro são estados finalísticos, ou seja, não poderão mais ser alterados após o pagamento assumir essa situação.

O serviço de Consulta de Pagamento a ser implementado pelo PSP deverá retornar ao PagTesouro a situação atual do pagamento conforme seu domínio próprio.

Internamente o PagTesouro fará o mapeamento da situação retornada pelo PSP, conforme configuração prévia, para uma das três situações previstas no PagTesouro.

O PSP deverá notificar o PagTesouro, através do serviço Notificação do Pagamento, quando o pagamento for finalizado no PSP ou quando sua situação sofrer alteração.

O PSP terá um prazo de até 24 horas para que a situação do pagamento assuma um estado finalístico, em que este não possa mais ser alterado. Assim, após esse prazo, caso o pagamento não esteja finalizado, o PSP deverá cancelá-lo e notificar o PagTesouro.

7. Fluxo de Integração

PagTesouro

Solicitação de Pagamento

Serviço para solicitar um pagamento.

header Parameters
Accept
required
string
Default: application/json;charset=UTF-8

Tipo do conteúdo aceito.

Content-Type
required
string
Default: application/json;charset=UTF-8

Tipo do conteúdo enviado.

Request Body schema: application/json
idReferencia
required
string <= 36 characters

Identificador de referência do pagamento no PagTesouro.

descricao
required
string <= 250 characters

Descrição do pagamento. Serviço do órgão público para o qual o contribuinte está efetuando o pagamento.

dataVencimento
string <date-time> YYYY-MM-DD'T'hh:mm:ss'Z'

Data de vencimento do pagamento (Formato ISO-8601). A hora enviada estará no horário de Brasília-DF. Caso a hora esteja zerada, deve ser considerada apenas a data para fins de validação do vencimento.

Observação: O PSP não deverá permitir o pagamento após a data de vencimento enviada. Caso o vencimento não tenha sido informado ou seja uma data maior que a data corrente, o PSP deverá finalizar o pagamento em até 24h.

valorServico
required
number <decimal> <= 13.2 characters

Valor do serviço (valor total da GRU). Esse é o valor cobrado pelo órgão público pela prestação do serviço ao contribuinte, sem a aplicação da tarifa do PSP. Esse valor é enviado pelo órgão ao PagTesouro na solicitação do pagamento e o mesmo deverá ser repassado ao Tesouro Nacional pelo PSP.

valorTarifa
required
number <decimal> <= 13.2 characters

Valor da tarifa a ser cobrada pelo PSP sobre o valor do serviço. O valor da tarifa pode ser igual a 0 (zero).

Observação 1: O valor do pagamento será calculado pelo PSP (valorServico + valorTarifa) e apresentado ao contribuinte.

Observação 2: O PSP deverá validar o valorTarifa calculado pelo PagTesouro, seguindo uma regra de arredondamento semelhante a RoundingMode.HALF_UP (Java) e com 2 casas decimais (como exemplo, um valorTarifa calculado de 2.345 seria arredondado para 2.35, mas 2.344 ficaria 2.34). Em caso de divergência, o PSP deverá retornar um erro de validação (status HTTP 422).

Observação 3: O valor da tarifa à vista cobrado pelo PSP (geralmente um percentual) deve ser mantido atualizado na base do PagTesouro, devendo este valor ser previamente informado à STN antes de sua vigência.

urlRetorno
required
string <= 255 characters

URL de retorno para o PagTesouro após pagamento na tela do PSP.

urlNotificacao
string <= 255 characters

URL do PagTesouro para que seja notificado pelo PSP sobre o resultado final do pagamento. Observação: Apesar desta informação ser sempre enviada, o PSP não estará obrigado a tratá-la, desde que disponibilize em seu próprio site o cadastro da URL do PagTesouro para notificação.

tipos
Array of strings <items <= 20 characters>
Items Value: "CARTAO_CREDITO"

Tipos de pagamento que deverão ser exibidos na tela do PSP. Observação: O não envio dessa informação implicará na exibição de todos os tipos de pagamento disponíveis.

Array of objects <= 500 characters

Informações adicionais.

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{}

Consulta de Pagamento

Serviço para consultar a situação de um pagamento, além de outras informações.

path Parameters
idReferencia
required
string <= 36 characters

Identificador de referência do pagamento no PagTesouro.

header Parameters
Accept
required
string
Default: application/json;charset=UTF-8

Tipo do conteúdo aceito.

Responses

Response samples

Content type
application/json
{
  • "idPagamento": "123456",
  • "dataCriacao": "2021-03-04T11:30:15.000Z",
  • "dataAtualizacaoSituacao": "2021-03-04T11:31:08.000Z",
  • "tipo": "CARTAO_CREDITO",
  • "situacao": "OK",
  • "valorServico": 149.99
}

PSP

Notificação do Pagamento

Serviço para notificar ao PagTesouro a finalização de um pagamento ou uma mudança de sua situação.

header Parameters
Content-Type
string
Default: application/json;charset=UTF-8

Tipo do conteúdo.

Request Body schema: application/json
idReferencia
required
string <= 36 characters

Identificador de referência do pagamento no PagTesouro.

idPagamento
string <= 50 characters

Identificador do pagamento no PSP.

Responses

Request samples

Content type
application/json
{
  • "idReferencia": "4pFwrmd6QLdktVyuvjAki9",
  • "idPagamento": "123456"
}

Response samples

Content type
application/json
{
  • "erros": [
    ]
}