Criptografia e chave pública

A solução de criptografia de cartões pode ser utilizada nas transações recorrentes de assinaturas. Essa funcionalidade permite que você colete os dados dos cartões e os transforme em cartões criptografados, proporcionando uma forma segura de criar cobranças.

Para usufruir do recurso de criptografia, você precisará de uma chave pública (public key). Esse é um meio mais seguro e flexível comparado a outros métodos de autenticação.

Gerando sua chave pública

Para ter acesso a sua chave pública, você irá utilizar o endpoint Criar chave pública. Este recurso permite que você gerar uma chave pública específica para sua conta. Ela será utilizada para realizar a autenticação quando você executar uma requisição aos endpoints de Pagamento Recorrente do PagBank.

Se necessário, você também pode realizar a consulta das suas chaves públicas utilizando o endpoint Consultar chave pública.

🚧

Chaves públicas exclusivas para o Paramento Recorrente

Chaves públicas são utilizadas em outros serviços de API disponibilizados pelo PagBank. No entanto, o serviço de Pagamento Recorrente do PagBank utiliza chaves públicas específicas. Portanto:

  • Chaves públicas criadas para a API de Pagamento Recorrente, não funcionam para outros serviços PagBank.
  • O recíproco também é válido. Chaves públicas criadas para os demais serviços do PagBank, não funcionam com o serviço de Pagamento Recorrente.

Criptografia do cartão

Para realizar a criptografia de cartões de crédito, o PagBank disponibiliza um SDK. Dessa forma, sua página tem acesso às funções de criptografia dos dados disponibilizada pelo PagBank. Assim, a criptografia dos dados sensíveis do cartão de crédito é feita diretamente no navegador, reduzindo o seu escopo PCI.

Outro benefício de utilizar o SDK do PagBank, é que ele não requer chamadas ao servidor. Ou seja, o processo de criptografia é feito localmente. A criptografia utiliza a sua chave pública e é realizada usando o algoritmo RSA. A função que realiza a criptografia fornece uma string que pode ser descriptografada usando a chave privada, a qual apenas o PagBank tem acesso.

Para utilizar o SDK do PagBank você deve incluir o script apresentado a seguir antes de fechar a tag <body> da sua página:

<script src="https://assets.pagseguro.com.br/checkout-sdk-js/rc/dist/browser/pagseguro.min.js"></script>

Após incluir o SDK, você pode utilizar todas as funções disponibilizadas pelo PagBank. Para realizar a criptografia dos dados do catão de crédito você irá utilizar o método PagSeguro.encryptCard() fornecendo os seguintes dados:

ParâmetroDescrição
publicKeySua chave pública.
holderNome completo do portador do cartão.
numberNúmero do cartão de crédito.
expMonthMês de expiração do cartão de crédito.
expYearAno de expiração do cartão de crédito.
securityCodeCódigo de segurança do cartão de crédito.

A seguir é apresentado um exemplo de criptografia dos dados do cartão utilizando o método encryptCard:

const card = PagSeguro.encryptCard({
  publicKey: "MINHA_CHAVE_PUBLICA",
  holder: "Nome Sobrenome",
  number: "4242424242424242",
  expMonth: "12",
  expYear: "2030",
  securityCode: "123"
});

const encrypted = card.encryptedCard;
const hasErrors = card.hasErrors;
const errors = card.errors;

Conforme apresentado no exemplo acima, o método encryptCard fornece um objeto. Os dados desse objeto são listados e descritos na tabela a seguir:

ParâmetroDescrição
encryptedCardCartão criptografado, que deve ser adicionado ao informar os dados do cartão encriptado.
hasErrorsDetermina se houve, ou não, algum erro durante o processo de criptografia.
errorsSe algum erro ocorreu durante a criptografia, esse parâmetro fornece uma lista dos erros, incluindo seu código e mensagem de erro.

Os possíveis erros decorrentes do processo de criptografia dos dados do cartão contidos no parâmetro errors são apresentados na sequência:

Código (code)Mensagem (message)
INVALID_NUMBERInvalid card number
INVALID_SECURITY_CODEInvalid field securityCode. You must pass a value with 3, 4 or none digits
INVALID_EXPIRATION_MONTHInvalid field expMonth. You must pass a value between 1 and 12
INVALID_EXPIRATION_YEARInvalid field expYear. You must pass a value with 4 digits
INVALID_PUBLIC_KEYInvalid publicKey
INVALID_HOLDERInvalid holder