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ãonumber
- Número do cartão de créditoexpMonth
- Mês de expiraçãoexpYear
- Ano de expiraçãosecurityCode
- 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çashasErrors
: Determina se houve, ou não, algum erro durante o processo de criptografiaerrors
: 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' \
--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": {}
}