Cobrança com cartão criptografado

Cobrando Cartão criptografado


Esse recurso permite que você realize cobranças com cartão de crédito em sua plataforma sem redirecionar o cliente ao ambiente do PagSeguro mantendo a experiência de compra em seu site.

1. Primeiro passo: Criptografar o cartão

Inclua o JavaScript PagSeguro em sua página, esse SDK disponibilizado irá possibilitar a criptografia dos dados sensíveis do cartão de crédito diretamente no navegador, reduzindo assim o seu escopo PCI.

O JavaScript PagSeguro não possui nenhuma operação que realize chamada em servidores, o tornando off-line, ou seja, um vez importado em sua página e baixado no navegador do cliente não irá requerer nenhuma comunicação externa para seu funcionamento.

Seu funcionamento é muito simples, através de sua chave pública é realizada uma criptografia usando algoritmo RSA, a string resulta no processo de criptografia poderá ser descriptografada apenas usando a chave privada (par da chave pública) que apenas o PagSeguro tem posse e é mantida de forma segura.

HTML

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

Após incluir o JavaScript você deve configurar a chamada da função PagSeguro.encryptCard() passando a sua chave pública no parâmetro publicKey.

Os demais parâmetros da função são de uso para receber os dados sensíveis do cartão de crédito, como por exemplo:

  • holder - Nome completo do portador do cartão
  • number - Número do cartão de crédito
  • expMonth - Mês de expiração
  • expYear - Ano de expiração
  • securityCode - Código de segurança

JavaScript

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

var encrypted = card.encryptedCard;

Estrutura de objeto do cartão criptografado:

Ao utilizar o método encryptCard, sempre será gerado um objeto referente à criptografia realizada, contendo a seguinte estrutura:

  • encryptedCard: Cartão criptografado, que deve ser utilizado posteriormente para realizar cobranças
  • hasErrors: Determina se houve, ou não, algum erro durante o processo de criptografia
  • errors: Quando algum erro ocorrer, fornece uma lista com os erros relacionados, incluindo seu código e mensagem de erro.

Validação de dados para criptografia:

Na biblioteca JavaScript, erros ocorridos durante a criptografia são identificados com base na validação dos dados fornecidos.

Estes são notificados com código e mensagem, e estão descritos abaixo:

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

curl --location --request POST 'https://sandbox.api.pagseguro.com/charges' \
--header 'Authorization: {{token}}' \
--header 'Content-Type: application/json' \
--header 'x-idempotency-key;' \
--data-raw '{
  "reference_id": "ex-00001",
  "description": "Motivo da cobrança",
  "amount": {
    "value": 1000,
    "currency": "BRL"
  },
  "payment_method": {
    "type": "CREDIT_CARD",
    "installments": 1,
    "capture": true,
    "card": {
      "encrypted": "cSx3NDmQ7QbSaqdtakrAO3yAgtMZMPPzF7jDai8k+13lj9dpbTloEDou4crYdB6TbWUiaE249EJTylKufMcooEtlZlJQInKoHA7/jnNw4V1HuhdCsWm+K653V6rhMDBx27t0YH68H8Zzh+zaywDp/JrG7HI/BdRmDfn2fLV+IegQ7+xJcT2st1cnawefdYbpmpJdtPS8fMB19CVIU5pkFj3ePHL1qoXAfD/cbLv0rgPCTldc4MRjIzYmORRdJ/4I/npsNnWSuTi7sP37GiJFtbbMO1bDKOLRpoKEITvzIpgIrMqiRUZG/60PNg3wPNwLR39Ymb11V60gIfUmjTJGuQ=="
    }
  }
}'
{
  "id": "CHAR_344a0907-8aa6-4b7a-943c-897383adf45f",
  "reference_id": "76c35c0b-34d5-4ecc-af9d-3b2cecab033c",
  "status": "PAID",
  "created_at": "2019-09-06T13:43:45.588-03:00",
  "paid_at": "2019-09-06T13:43:45.588-03:00",
  "description": "Motivo da cobrança",
  "amount": {
    "value": 1000,
    "currency": "BRL",
    "summary": {
      "total": 1000,
      "paid": 1000,
      "refunded": 0
    }
  },
  "payment_response": {
    "code": "20000",
    "message": "SUCESSO",
    "reference": "1567788227697"
  },
  "payment_method": {
    "type": "CREDIT_CARD",
    "installments": 1,
    "capture": true,
    "card": {
      "brand": "VISA",
      "first_digits": "411111",
      "last_digits": "1111",
      "exp_month": "03",
      "exp_year": "2026",
      "holder": {
        "name": "Jose da Silva"
      }
    }
  },
  "links": [
    {
      "rel": "SELF",
      "href": "https://sandbox.api.pagseguro.com/charges/344a0907-8aa6-4b7a-943c-897383adf45f",
      "media": "application/json",
      "type": "GET"
    },
    {
      "rel": "CHARGE.CANCEL",
      "href": "https://sandbox.api.pagseguro.com/charges/344a0907-8aa6-4b7a-943c-897383adf45f/cancel",
      "media": "application/json",
      "type": "POST"
    }
  ],
  "notification_urls": [],
  "metadata": {}
}