Transações

Será preciso implementar e expor os endpoints “Authorization” e “ Adjustments” em seu backend para que possamos nos comunicar.

Fluxo do processador de pagamentos:

Flujo Online / Offline

Vamos consumir seus endpoints nestes momentos:

Durante o fluxo on-line

Toda vez que um usuário usa seu cartão em qualquer loja ou e-commerce.

Durante a conciliação

Quando a rede (Mastercard, Visa etc.) solicita a reconciliação de todos os pagamentos apresentados pelos estabelecimentos.

Considerações

Se houver diferença na reconciliação, solicitaremos uma correção de sua API. Precisaremos que seus endpoints respondam o mais rápido possível para garantir uma boa experiência do usuário. Se a resposta demorar, recusaremos a transação.

Idempotência

Como uma solicitação HTTP pode expirar, precisamos garantir que, ao tentar novamente, seja processada apenas uma vez. Para isso, em cada solicitação, enviaremos um header x-idempotency-key com uma ID única que deve ser processada com um cache na memória (por exemplo: redis).

No início de cada transação, você terá de verificar se a chave de idempotência que lhe enviamos já está no cache na memória e, dependendo se estiver ou não, você terá de fazer o seguinte:

O header de idempotência não existe no cache.

Será preciso armazenar em cache na memória a relação chave de idempotência → solicitação com um estado em trânsito com um TTL de 3 minutos.

Ao aprovar ou rejeitar a transação, você deverá armazenar em cache o resultado e atualizar o estado da chave de idempotência para concluído.

O header de idempotência existe no cache

Em caso de solicitação duplicada, será necessário verificar o status da transação no cache.

  • Se estiver com status concluído, você deve responder com um código HTTP 200 com o corpo esperado para o endpoint e completá-lo com o resultado do cache.
  • Se o status for em trânsito, você deverá responder com um código HTTP 425 (Too Early: RFC 8470) com o corpo esperado para o endpoint. Voltaremos a verificar a resposta a esta solicitação alguns milissegundos depois.

Requests em andamento

Se você receber uma segunda solicitação com o mesmo ID de idempotencia e a primeira ainda estiver em andamento, você deve responder com um status HTTP 425 e um corpo vazio.

Segurança

A comunicação entre nossos backends deve ser estritamente segura, pois os endpoints permitirão que os recursos sejam carregados e deduzidos.

Para isso, exigimos que três medidas sejam implementadas:

  • Expor endpoint HTTPS
  • Whitelist dos IPs da Pomelo
  • Assinatura hmac-sha256 da solicitação e a resposta

Expor endpoint HTTPS

Toda comunicação conosco deve ser via HTTPS, independentemente de quem emite o certificado.

Estes são alguns dos fornecedores mais reconhecidos

Whitelist dos IPs da Pomelo

Sempre nos comunicaremos com seu backend a partir de IPs específicos. Recomendamos que você só aceite solicitações dos IPs abaixo e recuse quaisquer outras solicitações:

IPs da Pomelo:

  • Ambiente de testing/staging:
34.226.254.178            
44.198.3.59
34.223.185.46
100.20.205.117
  • Ambiente de produção:
34.206.159.176            
52.0.20.124
35.84.78.117
52.43.46.111

Assinatura hmac-sha256 da solicitação e a resposta

Para garantir que os únicos participantes da comunicação sejam nossos backends (Pomelo e o Cliente), no momento da integração, forneceremos uma api-key e uma api-secret para assinar digitalmente o conteúdo da comunicação.

O processo será mais ou menos assim:

1. Na integração, trocaremos as chaves api-key e api-secret.

2.

No momento de uma autorização de pagamento, assinamos com hmac-sha256 cada solicitação de autorização com api-secret.

4. Você valida a assinatura hmac-sha256 com sua api-secret que corresponde à api-key da solicitação.

5. Você autoriza a solicitação, debita os recursos do usuário e assina a resposta com hmac-sha256, usando a api-secret.

6. Verificamos a assinatura hmac-sha256 e finalizamos o processamento de pagamento.

Processo de troca de chaves

Durante o processo de integração, criaremos uma api-key e uma api-secret específicas para você.

Também é possível usar gpg ou algum plugin de e-mail (como https://flowcrypt.com/).

Vejamos um exemplo usando openssl na linha de comando.

1. Criamos a api-key e a api-secret:

$ echo -e 'api-key=$(openssl rand -base64 32)\napi-secret=$(openssl rand -base64 32)' > api-credentials.txt

$ cat api-credentials.txt
api-key=tgeAkX0795jKTxrVR0cJbb//D8UlhHn0KZwTcDG3gyg=
api-secret=un/OHwD+fMN1TTSaEhs0vupQEDQS7DVaUdlNOu7Fpyw=

2. Você cria sua chave público-privada:

$ openssl genrsa -out private.pem 2048
$ openssl rsa -in private.pem -pubout -out public.pem

3. Você nos envia sua chave pública public.pem por e-mail ou slack.

4. Criptografamos o arquivo de credenciais com a chave pública que você nos fornecer:

$ openssl rsautl -encrypt -in api-credentials.txt -out api-credentials.txt.enc -inkey public.pem -pubin

5. Enviamos o arquivo api-credentials.txt.enc por e-mail ou slack

6. Você descriptografa o arquivo api-credentials.txt.enc com sua chave privada private.pem:

$ openssl rsautl -decrypt -in api-credentials.txt.enc -inkey private.pem
api-key=tgeAkX0795jKTxrVR0cJbb//D8UlhHn0KZwTcDG3gyg=
api-secret=un/OHwD+fMN1TTSaEhs0vupQEDQS7DVaUdlNOu7Fpyw=

7. Você mantém a api-secret em um local seguro e acessível somente pelo aplicativo de autorização de pagamentos associado à api-key.

Processo de assinatura da solicitação

Juntamente com a solicitação de autorização ou ajuste, enviaremos headers HTTP com a assinatura, o carimbo de data e hora da assinatura e a api -key para que você possa verificar se a assinatura está correta.

Os headers HTTP que enviamos são:

  • x-api-key : este header permitirá identificar qual api-secret deve-se usar, caso vários pares de api-key e api-secret tenham sido configurados.

  • x-signature : Este header contém a assinatura digital (body + timestamp + endpoint) que deve ser verificada para garantir a integridade da solicitação. Se a assinatura não corresponder, você deve rejeitar a solicitação.

  • x-timestamp : este header contém a hora em que a solicitação foi assinada no formato unix-epoch para que você possa verificar se a assinatura não expirou.

  • x-endpoint : o endpoint para o qual a solicitação é realizada. Use este header para gerar novamente a assinatura a ser validada, e compare-o com o endpoint do seu serviço para verificar se eles correspondem.

Importante: além de verificar a assinatura que lhe enviamos, ao gerar a resposta você deve assinar o corpo junto com o carimbo de data/hora e o endpoint de resposta com seu api-secret depois de impactar a operação. Observe que validaremos a assinatura e recusaremos a transação se a assinatura não corresponder ou tiver expirado.

Como testar sua implementação e o código de exemplo

Você pode testar a implementação do seu back-end com algumas operações típicas que enviaremos com uma coleção Postman incluída em nosso [repositório de exemplos públicos] (https://github.com/pomelo-la/cards-transactions-examples). Você poderá importar a coleção para uma instância do Postman e dessa forma simular pedidos reais para o seu back-end, incluindo o algoritmo de geração e verificação de assinatura.

No repositório você também encontrará exemplos de implementação do algoritmo de geração e validação de assinaturas em vários idiomas.

Liquidação

Esse é um processo opcional, mas recomendamos executá-lo diariamente.

No servidor SFTP que disponibilizaremos, você encontrará os seguintes arquivos:

  • Arquivo de transações
  • Arquivo de apresentação

Arquivo de transações

Contém as informações de cada transação que geramos no dia anterior.

El nombre del archivo tiene el siguiente formato: transaction_yyyy-mm-dd_<nombre cliente>_<pais>.csv

Estrutura do arquivo de transações

{Atributo}DescriçãoValores permitidos
TRANSACTION_IDA ID que permite que a transação seja identificada como única.
LOCAL_TRANSACTION_DATE_TIME
TRANSACTION_TYPEIndica o tipo de transação.PURCHASE
WITHDRAWAL
EXTRACASH
BALANCE_INQUIRY
REFUND
PAYMENT
REVERSAL_PURCHASE
REVERSAL_WITHDRAWAL
REVERSAL_EXTRACASH
REVERSAL_REFUND
REVERSAL_PAYMENT
PRODUCT_TYPEÉ o tipo de produtoPREPAID
CREDIT
DEBIT
PROVIDERÉ a marca do cartão emitido.VISA
MASTERCARD
AFFINITY_GROUP_ID
USER_IDA ID de usuário da Pomelo do titular do cartão.
CARD_ID
BINOs primeiros seis ou oito dígitos do número do cartão.
LAST_FOUROs últimos quatro dígitos do PAN.
ORIGINDOMESTIC: a transação ocorreu no país do emissor.
INTERNATIONAL: a transação não ocorreu no país do emissor.
MERCHANT_ID
MERCHANT_MCCCódigo de categoria do estabelecimento, conforme o ISO-18245.
MERCHANT_NAME
LOCAL_AMOUNTÉ o valor total da transação que deve ser deduzido do saldo do usuário, acrescido de impostos e taxas (quando aplicável). Sempre convertido para a moeda local do cartão.
LOCAL_CURRENCYCódigo de moeda de LOCAL_TOTAL no ISO_4217 formato ALPHA-3.
TRANSACTION_AMOUNTValor da transação sem impostos e na moeda original enviada pelo estabelecimento.
TRANSACTION_CURRENCYCódigo de moeda de TRANSACTION_TOTAL no ISO_4217 formato ALPHA-3.
SETTLEMENT_AMOUNTValor da transação conforme enviado pela rede. Para a Argentina, sempre será exibido em USD; para os demais países, em moeda local.
SETTLEMENT_CURRENCYO código de moeda SETTLEMENT_TOTAL no formato ISO_4217 ALPHA-3. Para a Argentina, sempre será exibido em USD; para os demais países, em moeda local.
ENTRY_MODEComo o cartão foi usado no ponto de venda do estabelecimento.UNKNOWN
MANUAL
CHIP
CONTACTLESS
CREDENTIAL_ON_FILE
MAG_STRIPE
OTHERS
STATUSO status da transação.APPROVED
REJECTED
HELD
STATUS_DETAILRazão adicional por que a transação foi aprovada ou recusada.Veja a tabela abaixo
SOURCEIndica qual fluxo/processo desencadeou a transação, conforme visto pela Pomelo.ONLINE: origina-se no fluxo transacional a partir de transações em tempo real enviadas pela rede
CLEARING: origina-se durante o processo de acordo entre a Pomelo e a rede ao gerenciar o arquivo de liquidação
PURGE: transações que não foram apresentadas no arquivo de liquidação de rede.
ORIGINAL_TRANSACTION_IDEsse valor pode estar vazio se a transação não estiver relacionada a outra transação.
COUNTRY_CODEEste é o código do país no formato [ISO-3166] (https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes).
POINT_TYPEPOS
ECOMMERCE
ATM
MOTO
CLIENT_NAMEEl nombre del cliente que aprueba o rechaza la transacción, dado que el reporte se segmenta por cliente, va a tener el mismo valor para todas las filas
CLIENT_COUNTRY_CODEEl coódigo de país del cliente en formato ISO-3166
AMOUNT_DETAILSEl detalle de la composición del monto local, en el mismo formato que es enviado de forma ONLINE. Codificado en base64
INSTALLMENTS_GRACE_PERIOD[OPCIONAL*] El período de gracia refiere a la cantidad de meses previo a que comiencen los pagos en cuotas. Puede ir de 0 a 99.
INSTALLMENTS_QUANTITY[OPCIONAL*] La cantidad de cuotas
INSTALLMENTS_CREDIT_TYPE[OPCIONAL*] El tipo de crédito otorgadoNO_PROMOTION
WITHOUT_INTEREST
WITH_INTEREST
BUY_TODAY_PAY_LATER

*_Para los clientes que operen con crédito, se agregan los datos del contrato de cuotas.

Tabela de STATUS_DETAIL

Status detailDescrição
CARD_BLOCKEDStatus do cartão BLOCKED.
CARD_DISABLEDStatus do cartão DISABLED
CARD_NOT_ACTIVEStatus do cartão EMBOSSED ou CREATED
CARD_NOT_CONFIGUREDO cartão está sem configurações.
CARD_NOT_FOUNDNão conseguimos encontrar o PAN do cartão.
CLIENT_TIMEOUTO cliente demora a responder.
CLIENT_UNAVAILABLENão é possível conectar com o cliente ou recebemos um 5XX.
CLIENT_SIGNATURE_ERRORQuando há falha na assinatura do cliente.
CRYPTO_ERRORHá um erro nos criptogramas (EMV).
DUPLICATE_TRANSMISSION_DETECTEDRecebemos uma transação repetida da rede.
EXPIRED_CARDStatus do cartão EXPIRED.
EXTRA_FIELDSAs mensagens da rede vêm com campos inesperados.
INSUFFICIENT_FUNDSO cliente responde que a conta não dispõe de recursos.
INTERNAL_ERRORFalha imprevista no sistema da Pomelo.
INVALID_AMOUNTOs limites do grupo de afinidade foram ultrapassados.
INVALID_CVVO CVV não corresponde.
INVALID_EXPIRATION_DATEA data de validade recebida não corresponde à do cartão.
INVALID_MERCHANTO cliente recusou o merchant por algum motivo específico.
INVALID_PINPIN incorreto
PIN_TRY_LIMIT_EXCEEDSe ha ingresado incorrectamente el PIN y se excedio el limite de intentos.
INVALID_TRANSACTIONTransação inválida.
LOST_CARDStatus do cartão LOST.
MISSING_FIELDSAs mensagens da rede vêm sem campos obrigatórios.
NOT_DECLINEDUma transação vem com um valor de 0 para validar se a conta está ativa.
ORIGINAL_NOT_FOUNDÉ feita uma tentativa de reverter uma transação que não encontramos.
OTHERNão reconhecemos o caso.
RESTRICTED_USERStatus do usuário ACTIVE.
SECURITY_VIOLATIONExcede um limite de fraude.
SERVICE_UNAVAILABLEO cliente ou um serviço da Pomelo está inativo.
STOLEN_CARDStatus do cartão STOLEN.
SYSTEM_ERRORO cliente nos indica que teve um erro inesperado.
APPROVEDO cliente aprovou uma transação.
TRANSACTION_NOT_PERMITTEDTipo de transação não permitido no grupo de afinidade.
REJECTED_FRAUDA transação foi rejeitada pelo mecanismo de fraude.

Conciliação do arquivo de transações

Está na Pomelo?Está no cliente?Tem o mesmo status?Action
YYYNada a fazer/Marcar como correspondente
YYN1) Fazer um ajuste que debite/credite o usuário final, se aplicável.
2) Marcar como corresponte.
YNN1) IF STATUS == APPROVED: Fazer um ajuste que debite/credite o usuário final, se aplicável.
2) Marcar como corresponte.
NYNNão é um caso de uso possível.

Caso você esteja tentando ajustar um crédito a um usuário final que não tenha fundo suficientes na conta, você deve continuar tentando obter os fundos desse usuário.

Torna-se uma dívida entre o cliente e o usuário final.

Arquivo de apresentação

Contém as informações de cada transação apresentada pelos estabelecimentos no dia anterior.

El nombre del archivo tiene el siguiente formato: presentment_yyyy-mm-dd_<nombre cliente>_<pais>.csv

Estrutura do arquivo de apresentação

AtributoDescriçãoValores permitidos
PRESENTMENT_ID
TRANSACTION_IDA ID da transação original que gerou a apresentação.
LOCAL_TRANSACTION_DATE_TIME
TRANSACTION_TYPEIndica o tipo de transação.PURCHASE
WITHDRAWAL
EXTRACASH
REFUND
PAYMENT
PRODUCT_TYPEÉ o tipo de produto.PREPAID
CREDIT
DEBIT
PROVIDERÉ a marca do cartão emitido.VISA
MASTERCARD
AFFINITY_GROUP_ID
USER_IDA ID de usuário da Pomelo do titular do cartão
CARD_ID
BINOs primeiros seis ou oito dígitos do número do cartão.
LAST_FOUROs últimos quatro dígitos do PAN.
ORIGINDOMESTIC: a transação ocorreu no país do emissor.
INTERNATIONAL: a transação não ocorreu no país do emissor.
MERCHANT_ID
MERCHANT_MCCCódigo de categoria do estabelecimento, conforme o ISO-18245.
MERCHANT_NAME
TRANSACTION_AMOUNTValor da transação sem impostos e na moeda original enviada pelo estabelecimento.
TRANSACTION_CURRENCYCódigo de moeda de TRANSACTION_TOTAL no ISO_4217 formato ALPHA-3.
SETTLEMENT_AMOUNTO valor da transação apresentado pela marca.
SETTLEMENT_CURRENCYO código de moeda SETTLEMENT_AMOUNT no formato ISO_4217 ALPHA-3. Para a Argentina, sempre será exibido em USD; para os demais países, em moeda local.
DEBT_AMOUNTValor da transação na moeda a ser paga à Pomelo. Se o valor for devido à Pomelo, sempre é um valor positivo; caso contrário, será um valor negativo.
DEBT_CURRENCYO código da moeda de DEBT_AMOUNT no ISO_4217 formato ALPHA-3; se for uma transação doméstica, deverá ser paga em moeda local, caso contrário em USD.
RECONCILIATION_DATE
INTERCHANGE_FEEComissão por uma transação
INTERCHANGE_RATEValor alfanumérico que identifica a taxa de câmbio da transação apresentada pelo adquirente.
TAXImposto associado à taxa de câmbio, devido à regulamentação local. Esses valores devem ter um IVA (imposto sobre valor agregado) calculado..
FUNCTION_CODEEsse é o tipo de apresentação.FIRST_PRESENTMENT
SECOND_PRESENTMENT_FULL
SECOND_PRESENTMENT_PARTIAL
REVERSE_PRESENTMENTSignifica que a apresentação foi revertida a partir da rede.TRUE
FALSE
REASON_CODEMotivo da segunda apresentação.
ICA_ACQUIRER
TAX_IDID asociado a los impuestos de la transacción
INSTALLMENTS_GRACE_PERIOD[OPCIONAL*] El período de gracia refiere a la cantidad de meses previo a que comiencen los pagos en cuotas. Puede ir de 0 a 99.
INSTALLMENTS_QUANTITY[OPCIONAL*] La cantidad de cuotas
CURRENT_INSTALLMENT[OPCIONAL*] Indica qué número de cuota está pagando el cliente.
INSTALLMENTS_CREDIT_TYPE[OPCIONAL*] El tipo de crédito otorgadoNO_PROMOTION
WITHOUT_INTEREST
WITH_INTEREST
BUY_TODAY_PAY_LATER
USD_EXCHANGE_RATEIndicará a taxa de câmbio do Banco Nacional no fim do dia anterior
DEBT_AMOUNT_ARSCampo do valor da dívida expresso em ARS, utilizando a taxa de câmbio vezes o valor da dívida. Caso o Valor da Dívida já esteja em ARS, a multiplicação não é realizada

*_Para los clientes que operen con crédito, se agregan los datos del contrato de cuotas.

Conciliação do arquivo de apresentação

Nossa equipe financeira enviará uma notificação diariamente com a dívida a ser paga. Essa notificação terá todas as apresentações que recebemos no arquivo de apresentação.

Obtenção dos arquivos de Transações e Apresentações

Forneceremos um servidor SFTP de onde será possível baixar os arquivos de Transações e Apresentações.

Dispomos de dois ambientes para osw servidores SFTP, um de produção e outro de desenvolvimento.

Para se conectar aos servidores SFTP, precisaremos que você nos envie uma chave pública para gerar um usuário.

Aqui estão os dados para se conectar a cada ambiente:

Produção:

Host: sftp.pomelo.la
Porta: 22
Usuário: <tu_usuario> # aquele que geramos a partir de suas chaves públicas.

Desenvolvimento:

Host: sftp-dev.pomelo.la
{Puerto}: 22
Usuário: <tu_usuario> # aquele que geramos a partir de suas chaves públicas.

Para gerar a chave pública, você terá de usar o comando de acordo com seu sistema operacional:

Linux / MacOs:

1. Crie um par de chaves RSA, alterando a variável $Cliente pelo nome próprio

ssh-keygen -t rsa -b 2048 -C $Cliente

O comando criará um par de chaves RSA de 2048 bits por padrão. ​Você também pode criar uma chave maior, de 4096 bits, inserindo -b 4096.

O comando produz a seguinte saída:

Generating public/prive rsa key pair.
Digite um arquivo onde salvar a chave (/your_home/.ssh/id_rsa):

Pressione Enter para salvar o par de chaves em .ssh /, ou especifique outro local.

2. Crie uma senha para sua chave SSH.

Pressione Enter para deixá-la em branco e use apenas a chave para estabelecer conexões SSH. Insira uma senha para uma camada extra de segurança.

3. Obtenha a chave pública gerada, lendo o conteúdo do arquivo público

cat ~/.ssh/id_rsa.pub

A chave gerada começará com ssh-rsa.

Agora, você pode copiar e colar sua chave SSH pública em seu console Shell ou em qualquer servidor para estabelecer uma conexão segura.

Windows

Gere chaves SSH, usando PuTTY. Instale o PuTTY na página do desenvolvedor: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

1. Gere chaves SSH, usando PuTTY

Instale o PuTTY na página do desenvolvedor: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

2. Execute o gerador de chaves PuTTY SSH

  • Pressione a tecla Windows.
  • Escreva puttygen.
  • Clique com o botão direito do mouse em PuTTYgen.
  • Clique em Executar como administrador.
  • ​Clique em Sim se o sistema gerar a seguinte consulta: Deseja permitir que este aplicativo faça alterações em seu dispositivo?

3. Use PuTTY para criar um par de chaves SSH

Embora a ferramenta de geração de chaves PuTTY ofereça vários outros algoritmos, mostraremos como gerar chaves RSA, uma das mais usadas:

  • Na janela do gerador de chaves PuTTY, clique em Gerar.
  • Mova o cursor na caixa cinza para preencher a barra verde.
  • Gerando um par de chaves SSH no Putty.
  • Salve a chave pública, clicando no botão Salvar chave pública. Você terá, então, de escolher um local para salvar a chave e dar um nome à chave.
  • Salve a chave privada:
    • Clique no menu Conversões, na parte superior da tela.
    • Clique em Exportar chave OpenSSH.
    • O sistema perguntará se você quer salvar uma chave sem uma senha. Clique em Sim.
    • Escolha um local para salvar a chave (geralmente, a mesma pasta da chave pública).
    • Nomeie a chave (por exemplo, putty_key).

Autorizar transação

O endpoint /transactions/authorizations permite autorizar transações.

Enviaremos uma solicitação para autorizar ou recusar a transação.

Considerações

Esperamos uma resposta rápida para garantir uma boa experiência. Se a resposta demorar, recusaremos a transação.

Parâmetros disponíveis
Body Parameters
transactionobject
Informações relacionadas à transação
merchantobject
Informações relacionadas ao estabelecimento.
cardobject
Informações não confidenciais relacionadas ao cartão
installmentsobject
Informações relacionadas às parcelas de transação, este parâmetro será recebido apenas para autorizações de compra com parcelas em cartão de crédito.
userobject
Informações relacionadas ao usuário que realizou a transação.
amountobject
Informações relacionadas aos valores da transação. Podem ser maiores ou iguais a zero.
extra_dataobject
Informações relacionadas aos campos extras da transação.
Detalhe de respostas
statusstring
Status que nos indica se devemos aprovar ou recusar a transação
Enum: APPROVEDREJECTED
messagestring
Mensagem descritiva com o resultado da operação
status_detailstring
Campo que permite rastrear por que a transação não foi aprovada
Enum: APPROVEDINSUFFICIENT_FUNDSINVALID_MERCHANTINVALID_AMOUNTSYSTEM_ERROROTHER
balanceobject
Saldo da conta. Retorna apenas quando o tipo 'BALANCE_INQUIRY' é inserido. Disponível apenas no México.

Esta seção foi útil para você?

POST/transactions/authorizations
{
"transaction":{
"id":
"ctx-200kXoaEJLNzcsvNxY1pmBO7fEx"
"type":
"PURCHASE"
"point_type":
"POS"
"entry_mode":
"MANUAL"
"country_code":
"ARG"
"origin":
"DOMESTIC"
"source":
"ONLINE"
"network":
"MASTERCARD"
"cardless_withdrawal_user_id":
"string"
"cardless_withdrawal_token":
"string"
"original_transaction_id":
"ctx-200kirg6qicg1qHSCbgaStrEHjI"
"local_date_time":
"2019-08-24T14:15:22"
}
"merchant":{
"id":
"string"
"mcc":
"string"
"address":
"string"
"name":
"string"
"terminal_id":
"string"
}
"card":{
"id":
"c-1625519392748E6XZBK"
"product_type":
"PREPAID"
"provider":
"MASTERCARD"
"last_four":
"1573"
}
"installments":{
"quantity":
"12"
"credit_type":
"NO_PROMOTION"
"grace_period":
"0"
"current_installment":
"1"
}
"user":{
"id":
"u-1625758043579BAR6D4"
}
"amount":{
"local":{
...
}
"settlement":{
...
}
"transaction":{
...
}
"details":[
...
]
}
"extra_data":{
"cardholder_verification_method":
"FAIL_PROCESSING"
"pin_presence":
"ONLINE"
"pin_validation":
"VALID"
"cvv_presence":
"PRESENT"
"cvv_validation":
"MATCHING"
"expiration_date_presence":
"PRESENT"
"expiration_date_validation":
"EXPIRED"
"function_code":
"PREAUTH"
"tokenization_wallet_name":
"Apple_Pay"
"tokenization_wallet_id":
"0"
"cardholder_presence":
"CARDHOLDER_PRESENCE_PRESENT"
"card_presence":
"PRESENT"
"pin_change_send":
"SENT"
"pin_change_result":
"APPLIED"
}
}
Respostas de amostra
{
"status":
"APPROVED"
"message":
"string"
"status_detail":
"APPROVED"
"balance":{
"total":
"982345.12"
"currency":
"ARS"
}
}

Ajustes

O endpoint /transactions/adjustments/{type} permite que você faça ajustes de crédito e débito nas transações.

Enviaremos uma solicitação para informar que a rede (MC, VISA) forçou uma autorização.

Considerações

Este endpoint é utilizado durante a conciliação e fluxos on-line, principalmente para ajustes durante o processo de liquidação e também em caso de devoluções.

Parâmetros disponíveis
Body Parameters
transactionobject
Informações relacionadas à transação
merchantobject
Informações relacionadas ao estabelecimento.
cardobject
Informações não confidenciais relacionadas ao cartão
installmentsobject
Informações relacionadas às parcelas de transação, este parâmetro será recebido apenas para autorizações de compra com parcelas em cartão de crédito.
userobject
Informações relacionadas ao usuário que realizou a transação.
amountobject
Informações relacionadas aos valores da transação. Podem ser maiores ou iguais a zero.
Path Parameters
typestringrequired
Tipo de operação que será executada sobre o saldo do usuário. Se for débito, o valor deverá ser descontado do saldo do usuário. Se for crédito, o valor deve ser adicionado ao saldo do usuário. OBSERVAÇÃO: É possível receber ajustes com valores muito pequenos, fica a critério do cliente afetá-los no saldo do usuário ou não.
Enum: debitcredit
Detalhe de respostas

Esta seção foi útil para você?

POST/transactions/adjustments/{type}
{
"transaction":{
"id":
"ctx-200kXoaEJLNzcsvNxY1pmBO7fEx"
"type":
"PURCHASE"
"point_type":
"POS"
"entry_mode":
"MANUAL"
"country_code":
"ARG"
"origin":
"DOMESTIC"
"source":
"ONLINE"
"network":
"MASTERCARD"
"cardless_withdrawal_user_id":
"string"
"cardless_withdrawal_token":
"string"
"original_transaction_id":
"ctx-200kirg6qicg1qHSCbgaStrEHjI"
"local_date_time":
"2019-08-24T14:15:22"
}
"merchant":{
"id":
"string"
"mcc":
"string"
"address":
"string"
"name":
"string"
"terminal_id":
"string"
}
"card":{
"id":
"c-1625519392748E6XZBK"
"product_type":
"PREPAID"
"provider":
"MASTERCARD"
"last_four":
"1573"
}
"installments":{
"quantity":
"12"
"credit_type":
"NO_PROMOTION"
"grace_period":
"0"
"current_installment":
"1"
}
"user":{
"id":
"u-1625758043579BAR6D4"
}
"amount":{
"local":{
...
}
"settlement":{
...
}
"transaction":{
...
}
"details":[
...
]
}
}
Respostas de amostra

Notificações

Este serviço permite que você notifique quando uma transação é resolvida, seja pela Pomelo ou pela bandeira (Mastercard, Visa, etc.).

Considerações

Esperamos uma resposta do tipo 2XX para termos certeza de que a notificação foi recebida. Caso contrário, vamos enviá-la novamente.

Parâmetros disponíveis
Body Parameters
event_idstring
Identificador de evento.
Exemplo: authorization-advice
event_detailobject
Informações relacionadas ao evento. Isso pode variar dependendo do tipo de evento.
idempotency_keystring
Identificador idempotente para criar o evento.
Exemplo: ctx-2CIllOHdIcC5qWjpiwRlFy2nZM8

Esta seção foi útil para você?

POST/transactions/v1/notifications
{
"event_id":
"authorization-advice"
"event_detail":{
"transaction":{
...
}
"merchant":{
...
}
"card":{
...
}
"installments":{
...
}
"user":{
...
}
"amount":{
...
}
"status":
"REJECTED"
"status_detail":
"string"
"extra_detail":
"string"
"extra_data":{
...
}
}
"idempotency_key":
"ctx-2CIllOHdIcC5qWjpiwRlFy2nZM8"
}
Respostas de amostra