These docs are for v2.1. Click to read the latest docs for v4.1.

Criando e pagando com cartão

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ã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 pedidos
  • 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_NUMBERInvalid card number
INVALID_SECURITY_CODEInvalid field securityCode. You must pass a value with 3, 4 or none digits
INVALID_EXPIRATION_MONTHInvalid field expMonth. You must pass a value between 1 and 12
INVALID_EXPIRATION_YEARInvalid field expYear. You must pass a value with 4 digits
INVALID_PUBLIC_KEYInvalid publicKey
INVALID_HOLDERInvalid 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"
        }
    ]
}