.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 as 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âmetro | Descrição |
---|---|
publicKey | Sua chave pública. |
holder | Nome completo do portador do cartão. |
number | Número do cartão de crédito. |
expMonth | Mês de expiração do cartão de crédito. |
expYear | Ano de expiração do cartão de crédito. |
securityCode | Có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âmetro | Descrição |
---|---|
encryptedCard | Cartão criptografado, que deve ser adicionado ao informar os dados do cartão encriptado. |
hasErrors | Determina se houve, ou não, algum erro durante o processo de criptografia. |
errors | Se 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_NUMBER | Invalid card number |
INVALID_SECURITY_CODE | Invalid field securityCode . You must pass a value with 3, 4 or none digits |
INVALID_EXPIRATION_MONTH | Invalid field expMonth . You must pass a value between 1 and 12 |
INVALID_EXPIRATION_YEAR | Invalid field expYear . You must pass a value with 4 digits |
INVALID_PUBLIC_KEY | Invalid publicKey |
INVALID_HOLDER | Invalid holder |