Cobrança com cartão criptografado

Cobrando Cartão criptografado

Informando os dados essenciais para efetivação de uma cobrança, este 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/CHAR_344A0907-8AA6-4B7A-943C-897383ADF45F",
      "media": "application/json",
      "type": "GET"
    },
    {
      "rel": "CHARGE.CANCEL",
      "href": "https://sandbox.api.pagseguro.com/charges/CHAR_344A0907-8AA6-4B7A-943C-897383ADF45F/cancel",
      "media": "application/json",
      "type": "POST"
    }
  ],
  "notification_urls": [],
  "metadata": {}
}