Criando pedido com Cartão criptografado
Informando os dados essenciais para efetivação de um pagamento, este recurso permite que você realize pedido com 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 pedidoshasErrors
: 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/orders' \
--header 'Authorization: Bearer {{}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"reference_id": "ex-00001",
"customer": {
"name": "Jose da Silva",
"email": "[email protected]",
"tax_id": "12345678909",
"phones": [
{
"country": "55",
"area": "11",
"number": "999999999",
"type": "MOBILE"
}
]
},
"items": [
{
"reference_id": "referencia do item",
"name": "nome do item",
"quantity": 1,
"unit_amount": 500
}
],
"shipping": {
"address": {
"street": "Avenida Brigadeiro Faria Lima",
"number": "1384",
"complement": "apto 12",
"locality": "Pinheiros",
"city": "São Paulo",
"region_code": "SP",
"country": "BRA",
"postal_code": "01452002"
}
},
"notification_urls": [
"https://meusite.com/notificacoes"
],
"charges": [
{
"reference_id": "referencia da cobranca",
"description": "descricao da cobranca",
"amount": {
"value": 500,
"currency": "BRL"
},
"payment_method": {
"type": "CREDIT_CARD",
"installments": 1,
"capture": true,
"card": {
"encrypted":"V++53ir0qvoK/rUSzNjCqP8Hz9ZTa+HohR779n63CV+NvCeYj4J4lQevL4NKN7Di3BxKQGqfQW5cfS7/4rHw4w8URuOV/j/mGau2GXxkKQ6/szJ6BQr//C4e4XgfCHDwcONQhuPDHMdOB1C+4lzyBbsPJUZ/8TUQrxhMMiMFjwGeg62uf7cUqdFjp+Q5dqJXwhLgH3d1EoX+JKStBLqVzF0lW3gHtFOyfvFhuxxBgB0xrzTKfbTqnL5aSYBoGXRFM0gLodMm6knx7bW+syThxyQffnaigCwj2aNohsu+fuXII+3WnlgrHQxaBx3ChRuWKy+loV2L2USiGulp/bPEcg==",
"security_code": "123",
"holder": {
"name": "Jose da Silva"
},
"store": false
}
}
}
]
}'
{
"id": "ORDE_1E38BD2E-F2CC-4D9C-9727-787CDFBCA7CE",
"reference_id": "ex-00001",
"created_at": "2023-02-08T15:15:11.408-03:00",
"customer": {
"name": "Jose da Silva",
"email": "[email protected]",
"tax_id": "12345678909",
"phones": [
{
"type": "MOBILE",
"country": "55",
"area": "11",
"number": "999999999"
}
]
},
"items": [
{
"reference_id": "referencia do item",
"name": "nome do item",
"quantity": 1,
"unit_amount": 500
}
],
"shipping": {
"address": {
"street": "Avenida Brigadeiro Faria Lima",
"number": "1384",
"complement": "apto 12",
"locality": "Pinheiros",
"city": "São Paulo",
"region_code": "SP",
"country": "BRA",
"postal_code": "01452002"
}
},
"charges": [
{
"id": "CHAR_67FC568B-00D8-431D-B2E7-755E3E6C66A0",
"reference_id": "referencia da cobranca",
"status": "PAID",
"created_at": "2023-02-08T15:15:11.881-03:00",
"paid_at": "2023-02-08T15:15:12.000-03:00",
"description": "descricao da cobranca",
"amount": {
"value": 500,
"currency": "BRL",
"summary": {
"total": 500,
"paid": 500,
"refunded": 0
}
},
"payment_response": {
"code": "20000",
"message": "SUCESSO",
"reference": "032416400102"
},
"payment_method": {
"type": "CREDIT_CARD",
"installments": 1,
"capture": true,
"card": {
"brand": "visa",
"first_digits": "411111",
"last_digits": "1111",
"exp_month": "12",
"exp_year": "2026",
"holder": {
"name": "Joãozinho da Silva"
},
"store": false
},
"soft_descriptor": "IntegracaoPagsegu"
},
"links": [
{
"rel": "SELF",
"href": "https://sandbox.api.pagseguro.com/charges/CHAR_67FC568B-00D8-431D-B2E7-755E3E6C66A0",
"media": "application/json",
"type": "GET"
},
{
"rel": "CHARGE.CANCEL",
"href": "https://sandbox.api.pagseguro.com/charges/CHAR_67FC568B-00D8-431D-B2E7-755E3E6C66A0/cancel",
"media": "application/json",
"type": "POST"
}
]
}
],
"notification_urls": [
"https://meusite.com/notificacoes"
],
"links": [
{
"rel": "SELF",
"href": "https://sandbox.api.pagseguro.com/orders/ORDE_1E38BD2E-F2CC-4D9C-9727-787CDFBCA7CE",
"media": "application/json",
"type": "GET"
},
{
"rel": "PAY",
"href": "https://sandbox.api.pagseguro.com/orders/ORDE_1E38BD2E-F2CC-4D9C-9727-787CDFBCA7CE/pay",
"media": "application/json",
"type": "POST"
}
]
}