Cancelamento
ATENÇÃO: Esta página é um documento em construção, sujeita a alterações sem aviso prévio, e ainda desacoplada da nossa documentação completa. Caso queira acessar toda nossa documentação, acesse aqui.
Para realizar operações de estorno, é necessário chamar o endpoint de cancelamento usando o NIT obtido na autorização da venda. Se a requisição for aprovada pela adquirente, o status dessa transação será alterado para EST (estornada).
Nota: O processo de cancelamento exige autenticação com assinatura por padrão. A loja deve ter uma chave pública de criptografia RSA cadastrada no Carat e deverá montar uma assinatura JWT (JSON Web Tokens) a ser enviada no cabeçalho Authorization. Neste caso, as informações da transação de cancelamento serão retornadas diretamente na resposta do serviço. Saiba mais.
No entanto, em cenários em que a autenticação mútua (mTLS) esteja habilitada para o lojista, a assinatura deixa de ser obrigatória, bastando enviar as credenciais
merchant_idemerchant_key.
Detalhes da chamada
<ApiDoc method="post" path="/e-sitef/api/v2/cancellations/{nit}" />
- Recurso:
/v2/cancellations/{nit} - Método HTTP:
POST - Formato da requisição:
JSON - Formato da resposta:
JSON - Parâmetros de cabeçalho:
| Parâmetro | Descrição | Formato | Obrigatório |
|---|---|---|---|
merchant_id | Código da loja no Carat. Os códigos de produção e certificação serão diferentes. | < 15 AN | SIM |
merchant_key | Chave de autenticação da loja no Carat. As chaves de produção e certificação serão diferentes. | < 80 AN | SIM |
Content-Type | Deve ser enviado com o valor application/json. | = 15 AN | SIM |
Authorization | Deve ser enviada a assinatura de autenticação da loja no formato Bearer {assinatura}. Exemplo: Bearer {TOKEN_JWT_EXAMPLE}. <br/>Este campo é obrigatório, a não ser que a loja esteja configurada para se comunicar com autenticação mútua (mTLS) junto ao Carat. | < 2000 AN | COND. |
Exemplos
Cancelamento
Abaixo estão alguns exemplos de chamada do serviço de realização de cancelamento utilizando a ferramenta cURL.
Requisição:
Para usar este exemplo, não esquecer de definir a variável {{url}} com o valor<br/> <URLPOSTMAN/>
curl --location --request POST 'https://{{url}}/e-sitef/api/v2/cancellations/0a5e7dc9ef8ed24819c06a9bc1ed71f653671c931bd33fa49413477352de40d1' \
--header 'Content-Type: application/json' \
--header 'merchant_id: xxxxxxxxxxxxxxx' \
--header 'merchant_key: xxxxxxxxxxxxxxx' \
--header 'Authorization: Bearer {{assinatura}}'
Resposta:
{
"code": "0",
"message": "OK. Transaction successful.",
"cancellation": {
"authorizer_code": "200",
"authorizer_message": "Refund successful. [Cód.: 359]",
"status": "CON",
"nit": "1c1caed9c650b298e52e8b1acd7d9eb6b6e85bf029dc285f682b86e6283479ac",
"order_id": "1665693831749",
"customer_receipt":"=== COMPROVANTE ===",
"merchant_receipt":"=== COMPROVANTE ===",
"authorizer_id": "2",
"acquirer_id": "202",
"acquirer_name": "e.Rede REST",
"authorizer_date": "08/09/2022T17:43",
"merchant_usn": "12050620649",
"esitef_usn": "221013109643171",
"host_usn": "828420940",
"tid": "221013109643160",
"amount": "1300",
"payment_type": "C",
"esitef_date": "08/09/2022T17:43",
"is_host_cancel": "false"
}
}
IMPORTANTE: Algumas aquirentes podem exigir o envio de dados de cartão na requisição. Nesses casos, o exemplo a seguir mostra como deverá ser feita essa requisição.
Requisição:
Para usar este exemplo, não esquecer de definir a variável {{url}} com o valor<br/> <URLPOSTMAN/>
curl --location --request POST 'https://{{url}}/e-sitef/api/v2/cancellations/1bfff28297349381d8fc66fd0162c711ea5a61d932077d0109fe5642e7188e74' \
--header 'Content-Type: application/json' \
--header 'merchant_id: xxxxxxxxxxxxxxx' \
--header 'merchant_key: xxxxxxxxxxxxxxx' \
--header 'Authorization: Bearer {{assinatura}}' \
--data-raw '{
"amount": "1100",
"card": {
"expiry_date": "1222",
"security_code": "123",
"number": "5555555555555555"
}
}'
Resposta:
{
"code": "0",
"message": "OK. Transaction successful.",
"cancellation": {
"authorizer_code": "000",
"authorizer_message": "Transacao Aprov.",
"status": "CON",
"nit": "ece6580e54c4bbef28a2f0267ab385a9c87740479acf717a26e60e8f068c6606",
"order_id": "1662748697539",
"customer_receipt":"=== COMPROVANTE ===",
"merchant_receipt":"=== COMPROVANTE ===",
"authorizer_id": "2",
"acquirer_id": "229",
"acquirer_name": "Bin",
"authorizer_date": "09/09/2022T15:39",
"authorization_number": "093557",
"merchant_usn": "12050620649",
"esitef_usn": "220909107099221",
"sitef_usn": "093558",
"host_usn": "999093558 ",
"amount": "1100",
"payment_type": "C",
"issuer": "2",
"authorizer_merchant_id": "000000000000005",
"esitef_date": "09/09/2022T15:39",
"is_host_cancel": "false"
}
}
Na resposta da requisição de cancelamento também é retornado um nit. Esse nit é o identificador da transação de cancelamento no Carat. Portanto, o mesmo deve ser usado somente na API de consulta para consultar os dados desse cancelamento.
Cancelamento - Token Bandeira
Algumas bandeiras de cartão possuem uma solução de tokenização que oferece o armazenamento de cartões em cofres na própria bandeira, de forma criptografada. Essa tokenização de bandeira tem o intuito de melhorar a segurança e qualidade das informações de cartão trafegadas, o que acarreta em possíveis aumentos na conversão de aprovação pelos bancos emissores.
| Parâmetro | Descrição | Formato | Obrigatório |
|---|---|---|---|
card | |||
number | Token gerado pela bandeira (DPAN) | ≤ 19 N | Sim |
cryptogram | Criptograma gerado pela bandeira. | = 28 A | Não |
Requisição:
Para usar este exemplo, não esquecer de definir a variável {{url}} com o valor<br/> <URLPOSTMAN/>
curl --location --request POST 'https://{{url}}/e-sitef/api/v2/cancellations/e7403160cca530cadb9567222dc3abed55a1db47de2229453e08244dd97bb33b' \
--header 'Content-Type: application/json' \
--header 'merchant_id: xxxxxxxxxxxxxxx' \
--header 'merchant_key: xxxxxxxxxxxxxxx' \
--header 'Authorization: Bearer {{assinatura}}'
--data-raw '{
"amount": "1100",
"card": {
"expiry_date": "1222",
"security_code": "123",
"number": "5555555555555555",
"cryptogram": "ALRzlt6NKQtPAAZAkOuIAAADFA=="
}
}'
Resposta:
{
"code": "0",
"message": "OK. Transaction successful.",
"cancellation": {
"authorizer_code": "000",
"authorizer_message": "Transacao Aprov.",
"status": "CON",
"nit": "0e6afaa006d85e259bcc776c8694277b4bc8afb8971295325fe1142aa922220c",
"order_id": "1676900808881",
"customer_receipt":"=== COMPROVANTE ===",
"merchant_receipt":"=== COMPROVANTE ===",
"authorizer_id": "2",
"acquirer_id": "229",
"acquirer_name": "Bin",
"authorizer_date": "20/02/2023T10:46",
"authorization_number": "203932",
"merchant_usn": "12050620649",
"esitef_usn": "230220004506181",
"sitef_usn": "203939",
"host_usn": "999203939 ",
"amount": "1100",
"payment_type": "C",
"issuer": "2",
"authorizer_merchant_id": "000000000000005",
"esitef_date": "20/02/2023T10:46",
"is_host_cancel": "false"
}
}
Parâmetros de requisição
Na tabela abaixo está a descrição dos parâmetros de requisição do serviço de cancelamento:
| Parâmetro | Descrição | Formato | Obrigatório |
|---|---|---|---|
amount | Valor em centavos a ser cancelado. É importante notar que não são todas as adquirentes que suportam estorno com valor menor do que o do pagamento (cancelamento parcial).<br/>Caso este campo não seja enviado, o Carat assumirá o valor total do pagamento. | < 12 N | NÃO |
| card | A obrigatoridade deste objeto depende única e exclusivamente da adquirente utilizada na transação. | ||
number | Número do cartão do comprador (PAN). <br/><br/> Token gerado pela bandeira (DPAN) para pagamento com Token Bandeira. Saiba mais <br/> | < 19 N | SIM |
cryptogram | Criptograma gerado pela bandeira | = 28 AN | NÃO |
expiry_date | Data de vencimento do cartão no formato MMAA. | = 4 N | COND. |
security_code | Código de segurança. | < 5 N | COND. |
<ResponseCodes />
Parâmetros de resposta
Em caso de sucesso, o código de resposta HTTP será 200. Qualquer outro código deve ser interpretado como erro. Na tabela abaixo está a descrição dos parâmetros de resposta do serviço de criação de cancelamento:
| Parâmetro | Descrição | Formato |
|---|---|---|
code | Código de resposta do Carat. Qualquer código diferente de 0(zero) significa falha. Saiba mais. | < 4 N |
message | Mensagem de resposta do Carat. | < 500 AN |
cancellation | Estes campos só são retornados ao usar autenticação com assinatura. | |
authorizer_code | Código de resposta do autorizador. | < 10 AN |
authorizer_message | Mensagem de resposta do autorizador. | < 500 AN |
status | Status da transação de pagamento no Carat. Saiba mais. | = 3 AN |
nit | Identificador da transação de cancelamento no Carat. | = 64 AN |
order_id | Código de pedido enviado pela loja na criação da transação. | < 40 AN |
customer_receipt | Cupom (via cliente). | < 4000 AN |
merchant_receipt | Cupom (via estabelecimento). | < 4000 AN |
authorizer_id | Código da autorizadora utilizada na transação. | < 4 N |
acquirer_id | Código da adquirente utilizada na transação. | < 4 N |
acquirer_name | Nome da adquirente utilizada na transação. | < 100 AN |
authorizer_date | Data de efetivação do pagamento retornada pelo autorizador no formato DD/MM/AAAA'T'HH:mm. Exemplo: 13/07/2017T16:03 | = 16 D |
authorization_number | Número de autorização. | < 6 AN |
merchant_usn | Número sequencial único para cada pedido, criado pela loja. O NSU será utilizado em toda a comunicação com a loja, de forma a identificar o pedido. Como se trata de uma possível chave para acesso do lado da loja, apesar de ser opcional para o Carat, é fortemente recomendado que o campo seja formatado e enviado pela aplicação da loja. | < 12 N |
esitef_usn | Número sequencial único da transação de pagamento no Carat. | = 15 N |
sitef_usn | Número sequencial único da transação de pagamento no SiTef. | = 6 N |
host_usn | NSU da autorizadora. | < 15 AN |
tid | ID da transação na adquirente. Este campo só é retornado em transações com adquirentes externas ao SiTef. | < 40 AN |
amount | Valor total da compra (em centavos). Exemplo: 1,00 = 100 ou 1.100,00 = 110000 – enviar o valor sem a vírgula e ponto. | < 12 N |
issuer | Código da bandeira retornado pelo autorizador. | < 5 AN |
authorizer_merchant_id | Código de afiliação do lojista na autorizadora. | < 100 AN |
esitef_date | Data de efetivação do cancelamento no Carat no formato DD/MM/AAAA'T'HH:mm. Exemplo: 13/07/2017T16:03 | = 16 D |
is_host_cancel | Este campo retornará o valor true em caso de cancelamento via host. | < 5 T/F |
payment_type | Tipo do pagamento da autorizadora escolhida: B = boleto, C = crédito, D = débito, P = cartão crédito Private Label puro, T = transferência bancária, G = cartão gift, O = outros meios de pagamentos, W = Boleto NR via Web Service | = 1 AN |