Recuperando dados do pagamento
Para recuperar os dados do pagamento, na activity de resposta, acesse a intent recebida. Então, use o parâmetro data da intent para obter a URI com as informações da transação.
val responseIntent = intent
if (Intent.ACTION_VIEW == responseIntent.action) {
val uri = responseIntent.data
val response = uri.getQueryParameter("response")
val data = Base64.decode(response, Base64.DEFAULT)
val json = String(data)
}
O parâmetro
responseé o mesmo que foi configurado como resposta na chamada de pagamento.
Assim que o pagamento é concluído, a Cielo Smart envia uma resposta para a URI configurada previamente. Essa resposta será um JSON contendo os dados da transação, seguindo o formato exemplificado abaixo:
{
"createdAt":"Jun 8, 2018 1:51:58 PM",
"id":"ba583f85-9252-48b5-8fed-12719ff058b9",
"items":[
{
"description":"",
"details":"",
"id":"898e7f40-fa21-42d0-94d4-b4e95c4fd615",
"name":"cocacola",
"quantity":2,
"reference":"",
"sku":"1234",
"unitOfMeasure":"unidade",
"unitPrice":250
},
{
"description":"",
"details":"",
"id":"4baea4c2-5499-4783-accc-0f8904970861",
"name":"pepsi",
"quantity":2,
"reference":"",
"sku":"4321",
"unitOfMeasure":"unidade",
"unitPrice":280
}
],
"notes":"",
"number":"",
"paidAmount":1450,
"payments":[
{
"accessKey":"XXXXXXXXXXXXXXX",
"amount":1450,
"applicationName":"com.ads.lio.uriappclient",
"authCode":"140126",
"brand":"Visa",
"cieloCode":"799871",
"description":"",
"discountedAmount":0,
"externalId":"6d5f6f86-7870-4aed-b79f-0a26d6c61743",
"id":"bb9c6305-95e5-4024-8152-503d064c0224",
"installments":0,
"mask":"424242-4242",
"merchantCode":"0000000000000003",
"paymentFields":{
"isDoubleFontPrintAllowed":"false",
"hasPassword":"false",
"primaryProductCode":"1000",
"isExternalCall":"true",
"primaryProductName":"CREDITO",
"receiptPrintPermission":"1",
"isOnlyIntegrationCancelable":"false",
"upFrontAmount":"0",
"creditAdminTax":"0",
"firstQuotaDate":"0",
"isFinancialProduct":"true",
"hasSignature":"true",
"hasPrintedClientReceipt":"false",
"hasWarranty":"false",
"applicationName":"com.ads.lio.uriappclient",
"interestAmount":"0",
"changeAmount":"0",
"serviceTax":"0",
"cityState":"Barueri - SP",
"hasSentReference":"false",
"secondaryProductName":"A VISTA",
"paymentTransactionId":"6d5f6f86-7870-4aed-b79f0a26d6c61743",
"avaiableBalance":"0",
"pan":"424242-4242",
"originalTransactionId":"0",
"originalTransactionDate":"08/06/18",
"secondaryProductCode":"1",
"hasSentMerchantCode":"false",
"documentType":"J",
"statusCode":"1",
"merchantAddress":"Alameda Grajau, 219",
"merchantCode":"0000000000000003",
"paymentTypeCode":"1",
"hasConnectivity":"true",
"productName":"CREDITO A VISTA - I",
"merchantName":"POSTO ABC",
"entranceMode":"141010104080",
"firstQuotaAmount":"0",
"cardCaptureType":"1",
"totalizerCode":"0",
"requestDate":"1528476655000",
"boardingTax":"0",
"applicationId":"cielo.launcher",
"numberOfQuotas":"0",
"document":"000000000000000"
},
"primaryCode":"1000",
"requestDate":"1528476655000",
"secondaryCode":"1",
"terminal":"69000007"
}
],
"pendingAmount":0,
"price":1060,
"reference":"Order",
"status":"ENTERED",
"type":"PAYMENT",
"updatedAt":"Jun 8, 2018 1:51:58 PM"
}
O campo
statusCodeinforma o tipo de operação realizada na transação. Quando o valor é 0 ou 1, significa que se trata de um pagamento, sendo que o código 0 é usado exclusivamente para pagamentos via Pix. Já quando o valor é 2, indica que houve um cancelamento da transação.
Payment Fields: atributo do objeto Payment
| Campo | Tipo | Descrição | Valor de exemplo |
|---|---|---|---|
clientName | string | Nome do Portador | VISA ACQUIRER TEST CARD 03 |
hasPassword | boolean | Validar se a operação pediu senha | true |
primaryProductCode | string | Código do produto primário | 1000 |
primaryProductName | string | Nome do produto primário | CREDITO |
upFrontAmount | number | Valor da entrada da transação | 2500 |
creditAdminTax | number | Valor da taxa de administração de crédito | 0 |
firstQuotaDate | string | Data de débito da primeira parcela | 25/12/2018 (dd/MM/yyyy) |
externalCallMerchantCode | string | Número do Estabelecimento Comercial. Formato: 00+ (EC: 10 dígitos) + (Loja do EC: 4 dígitos) = (Total de 16 dígitos) | 0010000244470001 |
hasSignature | boolean | Validar se a operação pediu assinatura | false |
hasPrintedClientReceipt | boolean | Validar se imprimiu a via do cliente | false |
applicationName | string | Pacote da aplicação | cielo.launcher |
interestAmount | number | Valor de juros | 5000 |
changeAmount | number | Valor de troco | 4500 |
serviceTax | number | Taxa de serviço | 2000 |
cityState | string | Cidade - Estado | Barueri - SP |
secondaryProductName | string | Nome do produto secundário | PARC. ADM |
paymentTransactionId | string | ID da transação de pagamento | 4c613b44-19b8-497c-b072-60d5dd6807e7 |
bin | string | Número cartão tokenizado (6 primeiros dígitos – 4 últimos dígitos ou 4 últimos) | 476173-0036 ou **********4242 |
originalTransactionId | string | ID da transação original, nos casos de cancelamento | 729d32ac-6c8d-4b0c-b670-263552f07000 |
cardLabelApplication | string | Tipo de aplicação utilizada pelo cartão na transação | CREDITO DE VISA |
secondaryProductCode | string | Código do produto secundário | 1 |
documentType | string | (J) = Pessoa Jurídica (F) = Pessoa Física | J |
statusCode | string | Status da transação: 0(PIX), 1 - Autorizada, 2 - Cancelada | 1 |
merchantAddress | string | Endereço do estabelecimento comercial (lojista) | Alameda Grajau, 219 |
merchantCode | string | Número do Estabelecimento Comercial. Formato: 00+ (EC: 10 dígitos) + (Loja do EC: 4 dígitos) = (Total de 16 dígitos) | 0010000244470001 |
hasConnectivity | boolean | Valida se a transação foi online | true |
productName | string | Forma de pagamento compilada | CREDITO PARCELADO ADM - I |
merchantName | string | Nome Fantasia do Estabelecimento Comercial | LOJA ON |
firstQuotaAmout | number | Valor da primeira parcela | 0 |
cardCaptureType | string | Códigos do tipo de captura do cartão (EMV = 0; DIGITADO: 1; TRILHA_1 e TRILHA_2 = 2; CTLS_EMV e CTLS_TRILHA = 3; QRCODE = 6; NONE, TIBC_10, TIBC_30 e EASY_ENTRY = -1. | 1 |
requestDate | number | Data da requisição em milisegundos | 1293857600000 |
boardingTax | number | Taxa de embarque | 1200 |
applicationId | string | Pacote de aplicação | cielo.launcher |
numberOfQuotas | number | Número de parcelas | 2 |
Valores aceitos nos campos de produto e código primário e secundário
Abaixo, você encontra a lista completa de valores aceitos nos campos primaryProductCode e primaryCode bem como para secondaryProductCode e secondaryCode que devem ser utilizados na configuração da requisição.
| Nome do Produto | Produto Primário | Código Primário | Produto Secundário | Código Secundário |
|---|---|---|---|---|
| Débito à vista | DEBITO | 2000 | VISTA | 1 |
| Pagamento de fatura de débito | DEBITO | 2000 | PAGTO FATURA DEBITO | 4 |
| Crédito à vista | CREDITO | 1000 | VISTA | 1 |
| Crédito parcelado na loja | CREDITO | 1000 | PARCELADO LOJA | 2 |
| Crédito parcelado pela administradora | CREDITO | 1000 | PARCELADO ADM | 3 |
| Crédito parcelado pelo banco | CREDITO | 1000 | PARCELADO BANCO | 6 |
| Pré-autorização | CREDITO | 1000 | PRE-AUTORIZACAO | 5 |
| Crediário no crédito | CREDITO | 1000 | CREDIARIO NO CREDITO | 7 |
| Voucher alimentação | VOUCHER | 3000 | ALIMENTACAO | 2 |
| Voucher refeição | VOUCHER | 3000 | REFEICAO | 1 |
| Voucher automotivo | VOUCHER | 3000 | AUTOMOTIVO | 3 |
| Voucher cultura | VOUCHER | 3000 | CULTURA | 4 |
| Voucher pedágio | VOUCHER | 3000 | PEDAGIO | 5 |
| Voucher benefícios | VOUCHER | 3000 | BENEFICIOS | 6 |
| Voucher auto | VOUCHER | 3000 | AUTO | 7 |
| Consulta de saldo | VOUCHER | 3000 | CONSULTA DE SALDO | 8 |
| Vale pedágio | VOUCHER | 3000 | VALE PEDAGIO | 9 |
Exemplos de retorno
Abaixo, você encontra exemplos de retorno com sucesso e erro nas operações via intent. Em ambos os cenários, o conteúdo da URI e o campo response estão em formato Base64.
Retorno de sucesso
order://response?response=eyJjcmVhdGVkQXQiOiJKYW4gMzEsIDIwMjQgMTE6Mzc6MjYgQU0iLCJpZCI6IjFkYjU1NzdmLWZjZDAtNDllOC04Y2FjLTVlMjRhYWZiMjUxZiIsIml0ZW1zIjpbeyJkZXNjcmlwdGlvbiI6IiIsImRl
dGFpbHMiOiIiLCJpZCI6IjkzMzA5ODkyLWMyMGItNDUyYy1iYTZmLTY4Mjc5NmI0YTk2ZSIsIm5hbWUiOiJwcm9kdXRvIiwicXVhbnRpdHkiOjEsInJlZmVyZW5jZSI6IiIsInNrdSI6IjQ2ODIiLCJ1bml0T2ZNZWFzdXJlIjoidW5pZGFkZSIsInVuaXRQcmljZSI6OTI1fV0sIm5vdGVzIjoiIiwibnVtYmVyIjoiIiwicGFpZEFtb3VudCI6OTI1LCJwYXltZW50cyI6W3siYWNjZXNzS2V5IjoiclNBcU5QR3ZGUEpJIiwiYW1vdW50Ijo5MjUsImFwcGxpY2F0aW9uTmFtZSI6ImNvbS5hZHMubGlvLnVyaWFwcGNsaWVudCIsImF1dGhDb2RlIjoiMTEzNzMwIiwiYnJhbmQiOiIiLCJjaWVsb0NvZGUiOiI4NDcyNjIiLCJkZXNjcmlwdGlvbiI6IiIsImRpc2NvdW50ZWRBbW91bnQiOjAsImV4dGVybmFsSWQiOiI0OGZhNjNjOS05NWVlLTQ4M2UtOWU3Yi1jZTMyNjMzZjEyOWIiLCJpZCI6IjgwY2U1MjhjLTJjY2MtNDgwMC1iZGMxLTViNWRkZGU1OGZiMSIsImluc3RhbGxtZW50cyI6MCwibWFzayI6IioqKioqKioqKioqKjAwMDAiLCJtZXJjaGFudENvZGUiOiIwMDAwMDAwMDAwMDAwMDAzIiwicGF5bWVudEZpZWxkcyI6eyJpc0RvdWJsZUZvbnRQcmludEFsbG93ZWQiOiJmYWxzZSIsImJpbiI6IjAiLCJoYXNQYXNzd29yZCI6ImZhbHNlIiwicHJpbWFyeVByb2R1Y3RDb2RlIjoiNCIsImlzRXh0ZXJuYWxDYWxsIjoidHJ1ZSIsInByaW1hcnlQcm9kdWN0TmFtZSI6IkNSRURJVE8iLCJyZWNlaXB0UHJpbnRQZXJtaXNzaW9uIjoiMSIsImlzT25seUludGVncmF0aW9uQ2FuY2VsYWJsZSI6ImZhbHNlIiwidXBGcm9udEFtb3VudCI6IjAiLCJjcmVkaXRBZG1pblRheCI6IjAiLCJleHRlcm5hbENhbGxNZXJjaGFudENvZGUiOiIwMDAwMDAwMDAwMDAwMDAzIiwiZmlyc3RRdW90YURhdGUiOiIwIiwiaXNGaW5hbmNpYWxQcm9kdWN0IjoidHJ1ZSIsImhhc1ByaW50ZWRDbGllbnRSZWNlaXB0IjoiZmFsc2UiLCJoYXNTaWduYXR1cmUiOiJmYWxzZSIsImFwcGxpY2F0aW9uTmFtZSI6ImNvbS5hZHMubGlvLnVyaWFwcGNsaWVudCIsImhhc1dhcnJhbnR5IjoiZmFsc2UiLCJpbnRlcmVzdEFtb3VudCI6IjAiLCJjaGFuZ2VBbW91bnQiOiIwIiwic2VydmljZVRheCI6IjAiLCJjaXR5U3RhdGUiOiJCYXJ1ZXJpIC0gU1AiLCJoYXNTZW50UmVmZXJlbmNlIjoiZmFsc2UiLCJ2NDBDb2RlIjoiNCIsInNlY29uZGFyeVByb2R1Y3ROYW1lIjoiQSBWSVNUQSIsInBheW1lbnRUcmFuc2FjdGlvbklkIjoiNDhmYTYzYzktOTVlZS00ODNlLTllN2ItY2UzMjYzM2YxMjliIiwiYXZhaWFibGVCYWxhbmNlIjoiMCIsInBhbiI6IioqKioqKioqKioqKjAwMDAiLCJvcmlnaW5hbFRyYW5zYWN0aW9uSWQiOiIwIiwib3JpZ2luYWxUcmFuc2FjdGlvbkRhdGUiOiIzMS8wMS8yNCIsInNlY29uZGFyeVByb2R1Y3RDb2RlIjoiMjA0IiwiZG9jdW1lbnRUeXBlIjoiSiIsImhhc1NlbnRNZXJjaGFudENvZGUiOiJmYWxzZSIsInN0YXR1c0NvZGUiOiIxIiwibWVyY2hhbnRBZGRyZXNzIjoiQWxhbWVkYSBHcmFqYXUsIDIxOSIsIm1lcmNoYW50Q29kZSI6IjAwMDAwMDAwMDAwMDAwMDMiLCJwYXltZW50VHlwZUNvZGUiOiIxIiwiaGFzQ29ubmVjdGl2aXR5IjoidHJ1ZSIsInByb2R1Y3ROYW1lIjoiQ1JFRElUTyBBIFZJU1RBIC0gSSIsIm1lcmNoYW50TmFtZSI6IlBPU1RPIEFCQyIsImVudHJhbmNlTW9kZSI6IjY2MTAxMDEwNzA4MCIsImNhcmRDYXB0dXJlVHlwZSI6IjYiLCJmaXJzdFF1b3RhQW1vdW50IjoiMCIsInRvdGFsaXplckNvZGUiOiIwIiwicmVxdWVzdERhdGUiOiIxNzA2NzEwMzg0NDAyIiwiYXBwbGljYXRpb25JZCI6ImNpZWxvLmxhdW5jaGVyIiwiYm9hcmRpbmdUYXgiOiIwIiwibnVtYmVyT2ZRdW90YXMiOiIwIiwiZG9jdW1lbnQiOiIwMDAwMDAwMDAwMDAwMCJ9LCJwcmltYXJ5Q29kZSI6IjQiLCJyZXF1ZXN0RGF0ZSI6IjE3MDY3MTAzODQ0MDIiLCJzZWNvbmRhcnlDb2RlIjoiMjA0IiwidGVybWluYWwiOiI2MjAwMDExMiJ9XSwicGVuZGluZ0Ftb3VudCI6MCwicHJpY2UiOjkyNSwicmVmZXJlbmNlIjoiUmVmZXJlbmNlIiwic3RhdHVzIjoiRU5URVJFRCIsInR5cGUiOiJQQVlNRU5UIiwidXBkYXRlZEF0IjoiSmFuIDMxLCAyMDI0IDExOjM3OjMxIEFNIn0=&responsecode=0
Retorno de erro
Se houver algum erro no pagamento, seja ele cancelado por usuário ou por saldo insuficiente, o campo response retornará um Base64 com o motivo do erro.
order://response?response=eyJjb2RlIjoxLCJyZWFzb24iOiJDQU5DRUxBRE8gUEVMTyBVU1XDgVJJTyJ9&responsecode=0
Após a decodificação da string Base64, o conteúdo é convertido em um objeto JSON estruturado, que facilita a interpretação do erro:
{
"code":1,
"reason":"CANCELADO PELO USUÁRIO"
}
Updated 3 months ago