PRIMEIROS PASSOS
Essa seção tem como objetivo prover o ferramental necessário para entendimento da documentação a seguir, como por exemplo os endpoints das APIs, variáveis, códigos de erro, instruções da utilização dos simuladores de adquirente e antifraude, bem como enumeradores e exemplos de utilização no Postman.
Introdução
Resposta padrão das APIs
{
"traceKey": "guid",
"errors": [
{
"errorCode": int,
"message": "string",
"field": "string"
}
],
"success": bool
}
A forma principal de integração com a é com a utilização de APIs, através das quais é possível usufruir de funcionalidades como pagamentos e-commerce e cartão presente, e-wallet, conciliação, split de pagamentos, extrato digital, entre outras. Essa documentação tem como objetivo facilitar a integração com nossos parceiros e dar autonomia aos desenvolvedores responsáveis pela integração. As APIs da foram implementadas com base na arquitetura RESTful, e são divididas por produto, portanto ao longo da documentação serão utilizados endpoints diferentes para pagamento (gateway), gestão (portal) e conciliação. A utilização de cada API pode diferir minimamente, porém todas usam JSON como media-type padrão, JWT como Bearer token na autenticação e sempre com o encoding UTF-8. Além disso, todas as APIs possuem uma resposta padrão.
Segurança
Para que a esteja apta a processar pagamentos, é necessário estarmos adequados às regras do PCI DSS, exigidas e atualizadas trimestralmente. Ao integrar com a , nossos parceiros utilizam uma infraestrutura com foco em performance e segurança, que, seguindo normas do PCI, é testada trimestralmente afim de garantir a segurança dos membros do arranjo de pagamentos, estabelecimentos comerciais e prestadores de serviço que armazenam ou transmitam dados de cartões de crédito. Os testes feitos são auditados por empresas terceiras e submetidos ao PCI Council anualmente. Através da certificação PCI DSS, a oferece: - Acesso a 5 anos de armazenamento dos dados - Rastreabilidade das operações realizadas na plataforma - Utilização de certificado SSL 1.2 em todas as APIs - Acesso à gestão de mundaças e changelog
Endpoints
As URLs que serão utiizadas para fazer as requisições.
Desenvolvimento
Endpoint | Link | Descrição |
---|---|---|
{{ENDPOINT_PORTAL}} | https://portal-dev.aditum.com.br | Url do portal de desenvolvimento. |
{{ENDPOINT_GATEWAY}} | https://payment-dev.aditum.com.br | Url do gateway de desenvolvimento. |
{{ENDPOINT_RECONCILIATION}} | https://reconciliation-dev.aditum.com.br | Url do reconciliation de desenvolvimento. |
{{ENDPOINT_WEBHOOK}} | https://webhook-dev.aditum.com.br | Url do Webhook de desenvolvimento. |
{{OAUTH_URL}} | https://dashboard-dev.aditum.com.br/ | Url utilizada para acessar o portal de desenvolvimento. |
Produção
Endpoint | Link | Descrição |
---|---|---|
{{ENDPOINT_PORTAL}} | https://portal-api.aditum.com.br | Url do portal. |
{{ENDPOINT_GATEWAY}} | https://payment.aditum.com.br | Url do gateway. |
{{ENDPOINT_RECONCILIATION}} | https://reconciliation-api.aditum.com.br | Url do reconciliation. |
{{ENDPOINT_WEBHOOK}} | https://webhook.aditum.com.br | Url do Webhook. |
{{OAUTH_URL}} | https://portal.aditum.com.br | Url utilizada para acessar o portal. |
Variáveis
Uma variável é um valor nomeado dinamicamente que pode interagir com as funções introduzindo valores predeterminados.
Variáveis | Descrição |
---|---|
{{accessToken}} | Token de autorização, que pode ser criado na API do portal e na do gateway. |
{{merchantId}} | O id do comerciante. |
{{cardId}} | O id de um cartão. |
{{smartCheckoutId}} | O id de um smartCheckout. |
{{customerId}} | O id de um cliente. |
{{receiverId}} | O id de um recebedor. |
{{chargeId}} | O id de uma cobrança. |
{{taxPlanId}} | O id de uma taxa. |
{{acquirerCode}} | O id da adquirente. |
{{cardBrand}} | O id da bandeira do cartão. |
{{taxId}} | O id da taxa. |
{{transactionsStatus}} | O status da transação de conciliação. |
{{transactionsType}} | O tipo da transação de conciliação. |
{{startDate}} | A data inicial a ser filtrada. |
{{endDate}} | A data final a ser filtrada. |
{{planId}} | O id do plano. |
{{bankSlipTaxPlanId}} | O id do plano de taxas de boletos. |
{{invoiceId}} | O id da fatura. |
{{productId}} | O id do produto. |
{{subscriptionId}} | O id da assinatura. |
{{transferOrderId}} | O id do pedido de transferência. |
{{virtualAcquirerId}} | O id da adquirente virtual. |
{{clientId}} | ID de EDI definido pelo adquirente. |
{{document}} | Número do documento do comprador. |
{{userId}} | O ID do usuário. |
{{roleId}} | O número que define a função do perfil do usuário. |
{{partner_token}} | Código de identificação do integrador, utilizado na integração com TEF. |
Códigos de Erros
Lista com os possíveis códigos de erros que uma requisição não sucedida pode apresentar.
Valor inteiro | Descrição |
---|---|
1 | Uma propriedade obrigatória ou condicional está vazia, apenas com espaços em branco, apenas com zeros ou nula. |
2 | Merchant Token inválido. |
3 | Cartão não suportado. |
4 | Cartão não encontrado na wallet. |
5 | Mês de expiração do cartão inválido. |
6 | Ano de expiração do cartão inválido. |
7 | Cartão expirado. |
8 | Comprador não encontrado na . |
9 | Número de parcelas inválido. |
10 | Erro de comunicação com a adquirente. Tentar mais tarde ou entrar em contato com a . |
11 | Adquirente inválida. |
12 | Tipo de pagamento inválido. |
13 | Prioridade do tipo de pagamento inválida. |
14 | Taxa percentual inválida. |
15 | Valor inválido. |
16 | Cobrança cancelada. |
17 | Cobrança não encontrada na . |
18 | Data inválida. |
19 | Frequência de recorrência inválida. |
20 | Plano não encontrado na . |
21 | Intervalo de datas inválido. |
22 | ID do cartão inválido. |
23 | Recebedor não encontrado. |
24 | Opção de enumerador inválida ou não suportada. |
25 | Banco não suportado. |
26 | Comprador não pode fazer ou requisitar a operação. |
27 | Erro na cobrança recorrente. |
28 | Erro ao executar os comandos. |
29 | Usuário não encontrado na . |
31 | Data de início é mais recente que a data final. |
32 | CNPJ inválido. |
33 | E-mail inválido. |
34 | ID da adquirente inválido. |
35 | Token da loja pai inválido. |
36 | Operação não permitida para a loja. |
37 | Operação não permitida. |
38 | ID da loja inválido. |
39 | Permissão não encontrada. |
40 | PAN encriptado está ausente. |
41 | PAN sequence number (5F34) inválido. |
42 | Terminal não encontrado na . |
43 | Loja não encontrada na . |
44 | Erro na senha. |
45 | Propriedade inválida (genérico). |
46 | Tamanho da página ausente. |
47 | Numero da página atual ausente. |
48 | Data e hora inválidos. |
49 | Transação não suportada. |
50 | Erro interno de atualização. |
51 | Não foi possível se conectar ao gateway de pagamentos. |
52 | A assinatura foi desativada. |
53 | A assinatura foi desativada devido a quantidade excessiva de não autorização. |
54 | Valor excede o limite. |
55 | Assinatura não encontrada. |
56 | Cartão inválido. |
57 | Histórico de comunicação da loja não encontrado. |
58 | Operação não suportada pela adquirente. |
59 | ID de conciliação já existe. |
60 | ID de conciliação não existe. |
61 | Data requisitava é mais recente que a data atual. |
62 | Erro de requisição no Safrapay. |
63 | O cartão é diferente da transação original. |
64 | Transação não pode ser cancelada. |
65 | Falha no upload do arquivo .OFX. |
66 | Valor requisitado é maior que o saldo atual do recebedor. |
67 | Data requisitada é mais antiga que a data atual. |
68 | Valor de transferência inválido. |
69 | Data requisitava é mais recente que a data atual. |
70 | Data requisitada é mais antiga que a data atual. |
71 | Formato do GUID inválido. |
72 | Status inválido para cancelamento de pedido de transferência. Tente novamente mais tarde. |
73 | ID do pedido de transferência não encontrado. |
74 | Número de transferências por dia excedido. |
75 | ID da linha de extrato no arquivo .OFX é inválida. |
76 | Cliente já foi credenciado. |
77 | ID do cliente é inválido. |
78 | ID do cliente não existe. |
79 | Valor não aceito. O valor deve estar no intervalo especificado na mensagem de erro. |
80 | Recebedor já possui conta vinculada. |
81 | Checkout / link de pagamento expirado. |
82 | Erro ao salvar dados. |
83 | Cobrança não cancelada. |
84 | Checkout / link de pagamento não encontrado. |
85 | ID da taxa não encontrado. |
86 | Ordem de transferência está em processamento. |
87 | Nenhum plano de taxas cadastrado. |
88 | Conciliação não cadastrada. |
89 | O documento do comprador é inválido para o e-mail requisitado. Isso pode ocorrer se o e-mail já foi cadastrado para um comprador, com outro CPF / CNPJ. |
90 | Status da transação conciliada é inválido. |
91 | Código da bandeira do cartão é inválido. |
92 | Conta bancária não encontrada para o pedido de transferência. |
93 | Conta bancária inválida para o pedido de transferência. |
94 | O valor solicitado é inferior ao saldo total disponível, descontando o valor total das ordens de transferência em progresso no momento. |
95 | Nenhum recebedor encontrado. |
96 | Cobrança não elegível para split. |
97 | Tipo de ajuste inválido. |
98 | Razão do ajuste inválida. |
99 | Tamanho da lista é inválido. Verifique o tamanho suportado na mensagem de erro. |
100 | CNPJ já cadastrado. |
101 | Cobrança já autorizada. |
102 | Valor inválido (genérico). |
103 | Movimentação de ajuste já processada. |
104 | Configuração de desconto do boleto está inválida. |
105 | Configuração de desconto do boleto está inválida. |
106 | Item do plano com valor inválido. |
107 | Erro na configuração da fatura. |
108 | Erro ao requisitar parâmetros da adquirente. |
109 | Erro de ativação na adquirente. |
110 | Erro na mensageria ISO-8583. |
111 | Erro ao fazer login no portal . |
112 | Terminal não está ativado na adquirente. |
113 | Transação por boleto não suportada. |
114 | Fatura não encontrada pelo ID. |
115 | Saldo atual insuficiente, descontando a taxa de transferência eletrônica. |
116 | Código do banco inválido. |
117 | Agência inválida. |
118 | Tamanho da agência inválido. |
119 | Código de verificação da agência inválido. |
120 | Conta bancária inválida. |
121 | Tamanho da conta bancária inválido. |
122 | Código de verificação da conta bancária inválido. |
123 | Dados bancários em branco. |
124 | Tipo de conta bancária inválido. |
125 | Não foi possível se comunicar com o banco. |
126 | Erro no desfazimento. |
127 | E-mail já existe. |
128 | Comprador não encontrado pelo documento (CPF / CNPJ). |
129 | CPF inválido. |
130 | Código de área do telefone é inválido. |
131 | Código do país do telefone é inválido. |
132 | Telefone é inválido. |
133 | Documento é inválido. |
134 | A origem da requisição é inválida para a operação. |
135 | Informação de parcelamento é inválida. |
136 | Bandeira do cartão não suportada pela adquirente. |
137 | Lançamento futuro não encontrada. |
138 | Lançamento futuro já existe. |
139 | Tipos de pagamento suportados não encontrados. |
140 | Webhook já cadastrado. |
141 | URL inválida. |
142 | Origem da requisição não suportada. |
143 | Modo de entrada do cartão não suportado. |
144 | Código de transação não suportado, verifique os códigos de transação suportados. |
145 | A loja não pode configurar antecipação. |
146 | Acesso negado ao checkout de pagamentos. |
147 | Não foi possível processar a transação. Tente novamente em alguns minutos ou entre em contato com a loja. |
148 | Código de processamento não suportado, verifique os códigos de processamento suportados. |
149 | O valor mínimo da parcela não pode ser maior que o valor do Link de Pagamento ou Checkout. |
150 | O webhook informado não foi encontrado. |
151 | Número de série do terminal é inválido. |
152 | NSU inválido. |
153 | Loja requer motor de antifraude cadastrado. |
9999 | Outros. |
Simulador
Simulador de Adquirente
No ambiente sandbox, por padrão a loja de testes será configurada para usar o simulador, que retorna respostas pré-definidas afim de testar comportamentos diversos pelo integrador. O simulador de adquirente utiliza os centavos do valor da transação para definir se a transação será aprovada ou não, seguindo a regra abaixo:
Centavos | comportamentos |
---|---|
*,00 | Transação aprovada |
*,01 | Transação negada com código 1007 - Consultar o emissor |
*,02 | Transação negada com código 1011 - Cartão inválido |
*,03 | Transação negada com código 1016 - Saldo insuficiente |
*,04 | Transação negada com código 1017 - Senha inválida |
*,05 | Transação negada com código 1019 - Transação não permitida para o portador |
*,06 | Transação negada com código 1020 - Transação não permitida para o terminal |
*,07 | Transação negada com código 1025 - Cartão bloqueado |
*,08 | Transação negada com código 2001 - Cartão vencido |
*,09 | Transação negada com código 2002 - Suspeita de fraude |
*,10 | Timeout |
Outros | Transação negada com código 1000 - Não aprovado |
Simulador de Antifraude
Por padrão esse simulador não estará ativado. Para utilizá-lo, entre em contato com o time de integrações. O funcionamento do simulador de antifraude utiliza a numeração do cartão (PAN) para decidir se será retornado transação aprovada, pendente ou negada, de acordo com a regra abaixo:
PAN | Comportamento |
---|---|
4444333322221111 | Transação aprovada |
4222222222222224 | Transação pendente seguido de notificação de transação aprovada |
4222222222222225 | Transação pendente seguido de notificação de transação negada |
Outros | Transação negada pelo antifraude. Gateway retornará erro 62 - Negada por risco de fraude |
Enumeradores
Lista com os enumeradores, eles te ajudarão a escolher a opção correta dentro de um campo da requisição.
Phone
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Inválido ou não informado. |
1 | Residencial | Telefone Residencial. |
2 | Commercial | Telefone Comercial. |
3 | Voicemail | Correio de Voz. |
4 | Temporary | Telefone Temporário. |
5 | Mobile | Celular. |
SmartCheckoutType
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Tipo não definido. |
1 | PaymentLink | SmartCheckout do tipo Link de Pagamento, criado via endpoint /paymentlink. |
2 | Checkout | SmartCheckout do tipo Checkout, criado via endpoint /smartcheckout. |
PaymentType
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Indefinido. |
1 | Debit | Débito. |
2 | Credit | Crédito. |
3 | Voucher | Voucher. |
4 | Boleto | Boleto. |
5 | Ted | Transferência Eletrônica de Fundos. |
6 | Doc | Documento de Ordem de Crédito. |
7 | SafetyPay | SafetyPay. |
8 | Pix | Pix. |
9 | Wallet | Wallet. |
InstallmentType
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | None | Transação a vista. |
1 | Merchant | Transação parcelada pelo lojista, ou seja, sem juros. |
2 | Issuer | Transação parcelada pelo emissor do cartão, ou seja, com juros. |
NotificationMethod
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Valor inválido ou não inserido. |
1 | As notificações são enviadas por e-mail. |
TransferOrderStatus
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Valor inválido e não definido. |
1 | Ordered | Quando a transferência é solicitada. |
2 | Transferred | Quando o pedido de transferência é feito, ou seja, pago. |
3 | Cancelled | Status de quando o usuário cancela o pedido de transferência. |
4 | NotTransferred | Situação de quando o pedido de transferência não é realizada por motivos internos. |
5 | Processing | Status de quando a transferência está sendo processada. |
6 | InsufficientBalanceAtExecuteTed | Saldo total no inferior ao solicitado no momento da TED. Como as transferências podem ser agendadas e não é necessário prever o saldo no horário agendado, visto que muitas operações podem ocorrer naquele horário, então no momento do TED é feita uma verificação para ver se o saldo da conta é maior que o valor de TED solicitado. |
7 | BankAccountInexistent | Acontece quando a conta bancária não é encontrada antes do envio do TED. |
8 | BankAccountInvalid | Acontece quando a conta bancária encontrada é inválida antes do envio do TED. |
CardBrand
Valor inteiro | Valor string |
---|---|
1 | Visa |
2 | MasterCard |
3 | Amex |
4 | Elo |
5 | Aura |
6 | Jcb |
7 | Diners |
8 | Discover |
9 | Hipercard |
11 | Enroute |
12 | Ticket |
13 | Sodexo |
14 | Vr |
15 | Alelo |
16 | Setra |
18 | Vero |
19 | Sorocred |
20 | GreenCard |
21 | Cabal |
22 | Banescard |
23 | VerdeCard |
24 | ValeCard |
25 | UnionPay |
26 | Up |
27 | Tricard |
28 | Bigcard |
29 | Ben |
30 | RedeCompras |
31 | SafrapayDigital |
32 | BamexBenefits |
33 | Cdc |
34 | SindCredit |
35 | IdealCard |
36 | NutriCash |
37 | BiqCard |
38 | PersonalCard |
39 | EuCard |
40 | Planvale |
41 | LiberCard |
42 | MaxxCard |
43 | VsCard |
44 | CooperCard |
45 | Megavalecard |
46 | Abrapetite |
47 | Agiplan |
48 | Credsystem |
49 | Esplanada |
50 | Credz |
51 | Ourocard |
ChargeStatus
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Não definido ou inválido. |
1 | Authorized | Todas as transações da cobrança foram aprovadas. |
2 | PreAuthorized | Todas as transações da cobrança foram pré-autorizadas. |
4 | Canceled | Todas as transações da cobrança foram canceladas. |
5 | Partial | As transações da cobrança diferem em status. Verificar o status de cada transação individualmente. |
6 | NotAuthorized | Todas as transações da cobrança foram negadas. |
7 | PendingCancel | Todas as transações da cobrança estão com cancelamento pendente. |
8 | Expired | Cobrança expirada. |
9 | Timeout | A cobrança não foi processada devido ao tempo limite. |
MerchantType
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Não definido. |
1 | Upsell | O comerciante que terá impostos predefinidos e fará upsell para um estabelecimento, também pode gerenciar o portal. |
2 | Establishment | Comerciante que não pode vender, mas terá impostos definidos por um comerciante de upsell. Normalmente, esse tipo de comerciante vende produtos aos clientes e não adiciona novos comerciantes. |
3 | ISO | Comerciante que é o parceiro que usa nossa plataforma e gerencia todos os impostos para seus parceiros. |
4 | Developer | Comerciante que será usado como um visitante no projeto da SandBox. |
TransactionStatus
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Não definido ou inválido. |
1 | PreAuthorized | Transação pré-autorizada. |
2 | Captured | Transação autorizada ou capturada posteriormente. |
3 | Denied | Transação negada. |
4 | Pending | Transação pendente, a ser processada pela adquirente ou banco. |
5 | Canceled | Transação cancelada. |
6 | PendingCancel | Transação com cancelamento pendente pela adquirente ou banco. |
7 | PendingPayment | Transação enviada a adquirente ou banco, aguardando retorno. |
8 | Paid | Boleto pago. |
9 | ErrorCreation | Erro ao criar boleto. |
10 | Expired | Boleto expirado. |
11 | PendingNewDeadline | Nova data de vencimento pendente. |
12 | Timeout | Tempo expirado. |
13 | PendingReferral | Pendente validação do portador. |
SmartCheckoutStatus
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Status não definido. |
1 | Pending | Pendente de pagamento, nenhuma cobrança foi feita ainda. |
2 | Activated | Alguma cobrança foi feita, porém não atingiu ainda o limite ou expiração. |
3 | Canceled | Cancelado. |
100 | ExpiredByMaximumApprovals | Expirado, porque o numero de cobranças atingiu o máximo. |
101 | ExpiredByDate | Expirado, porque atingiu a data de expiração. |
102 | ExpiredByTooManyDenials | Expirado / bloqueado, devido a muitas tentativas não aprovadas. |
ReceivableMode
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Não definido ou valor inválido. |
1 | Default | Usado para recebíveis comuns. D + 30. |
2 | NextDay | Usado para recebíveis do dia seguinte. D + 1. |
AcquirerCode
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Indefinido |
1 | Cielo | Cielo |
2 | Rede | Rede |
3 | Stone | Stone |
4 | VBI | VBI |
5 | Granito | Granito |
6 | InfinitePay | InfinitePay |
7 | Safrapay | SafraPay |
8 | Adiq (e-commerce) | Aditum |
9 | PagSeguro | PagSeguro |
10 | Adiq (TEF) | Adiq |
11 | SafrapayTef | SafrapayTef |
12 | VrBenefits | VR |
13 | GlobalPayments | GlobalPayments |
14 | PicPay | PicPay |
15 | MercadoPago | MercadoPago |
16 | GetNet | GetNet |
999 | Simulador | Simulador |
EventType
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Não definido ou inválido. |
1 | Created | Evento disparado quando uma cobrança é feita. |
2 | Updated | Evento disparado quando uma atualização na cobrança é feita, ou seja, captura, cancelamento, etc. |
WebhookStatus
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Não definido ou inválido. |
1 | Pending | Webhook pendente, ou seja, eventos não serão enviados para ele nesse momento. |
2 | Active | Webhook está ativo, ou seja, os eventos configurados serão entregues. |
3 | Failed | Limite máximo de falhas atingidos. |
4 | Canceled | Webhook cancelado pelo usuário. |
EntityType
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Não definido ou inválido. |
1 | IndividualMerchant | Pessoa Física |
2 | Company | Pessoa Jurídica |
DocumentType
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Desconhecido |
1 | Cpf | CPF |
2 | Cnpj | CNPJ |
3 | Passport | Passaporte |
DocumentFileType
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Valor inválido ou não inserido. |
1 | Cnpj | Principal documento jurídico da empresa. |
2 | OwnerLegalDocument | Documento jurídico principal do proprietário da empresa. |
3 | ProofOfAddress | Documento que comprova o endereço da empresa. |
4 | CompanyActivity | Documento que especifica quais produtos ou serviços uma determinada empresa vende. |
5 | ReconciliationAgreement | Documento que especifica que contém permissão para acessar EDI. |
Gender
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Não definido |
1 | Female | Mulher |
2 | Male | Homem |
3 | Other | Outro |
CancelStatus
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | PendingCancel | Cancelamento pendente. |
1 | Canceled | Transação cancelada. |
2 | NotCanceled | Transação não cancelada ou cancelamento não aprovado. |
SortDirection
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Valor inválido ou não inserido. |
1 | Ascending | Usado para classificação crescente. |
2 | Descending | Usado para classificação decrescente. |
EstablishmentStatusEnum
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Valor inválido ou indefinido. |
1 | Pending | Validação pendente e envio para registro. |
2 | Active | Ativo no registro e com adquirentes ativos. |
3 | Inactive | O estabelecimento não possui transações a serem pagas e não é capaz de efetuar transações no Gateway. |
4 | Canceled | O estabelecimento foi cancelado pela matriz. |
5 | Suspended | Estabelecimento foi desativado pela matriz e contém transações a serem pagas. |
6 | InactiveByRegister | Estabelecimento foi enviado para registro e, em seguida, retornou erro. |
PaymentSupportedTypes
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Indefinido. |
1 | Debit | Débito. |
2 | Credit | Crédito. |
3 | Voucher | Voucher. |
4 | Boleto | Boleto. |
5 | Ted | Ted. |
6 | Doc | Doc. |
7 | SafetyPay | SafetyPay. |
8 | Pix | Pix. |
9 | Wallet | Wallet. |
RolesEnum
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Indefinido |
1 | Master | Usuário com nível absoluto de permissões. |
2 | Administrator | Usuário pode gerenciar e criar outros usuários. Deve ser capaz de cancelar e capturar cobranças. |
3 | Operator | Usuário com permissões básicas, como visualização de cobranças. Não é possível gerenciar outros usuários nem criar novos usuários. |
4 | Affiliator | Usuário com permissão apenas para adicionar comerciante dentro de um comerciante pai e ver comerciantes que adicionaram comerciante. |
5 | Manager | Usuário com permissão para gerenciar apenas seu comerciante, sem adquirente ou qualquer capacidade para adicionar novo comerciante. |
6 | Attendant | Usuário com permissão para visualizar informações no portal mas não pode executar nenhuma ação, como cancelar, criar ou atualizar. |
7 | Establishment | Usuário sem permissão para visualizar a conciliação. |
BankAccounts
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Não definido ou inválido. |
1 | CheckingAccount | Ele está disponível para o proprietário da conta "sob demanda" e está disponível para acesso imediato pelo proprietário da conta ou a outros conforme o proprietário da conta pode direcionar. O acesso pode ser feito de várias maneiras, como saques em dinheiro, uso de cartões de débito, cheques (cheques) e transferência eletrônica. Em termos econômicos, os fundos detidos em um as contas de transações são consideradas como fundos líquidos. Em termos contábeis, eles são considerado como dinheiro. |
2 | SavingsAccount | Uma conta de poupança é uma conta de depósito mantida em um banco de varejo que paga juros, mas não pode ser usado diretamente como dinheiro no sentido estrito de um meio de troca (pois exemplo, preenchendo um cheque). Essas contas permitem que os clientes reservem uma parte de seus ativos líquidos enquanto ganham um retorno monetário. |
EntryMode
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Indefinido |
1 | MagneticStripe | Fita Magnética |
2 | Emv | EMV |
3 | ContactlessMagneticStripe | Fita Magnética sem contato |
4 | ContactlessEmv | EMV sem contato |
5 | Typed | Digitado |
ReconciliationAdjustment
Valor inteiro | Valor string | Descrição |
---|---|---|
1 | Credit | O ajuste de crédito adicionará mais dinheiro para a conta do comerciante. |
2 | Debit | O ajuste de débito subtrairá o dinheiro das contas a receber do comerciante. |
ReconciliationType
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Indefinido |
1 | Sale | Tipo relacionado a conciliações com base na data de venda / transação. |
2 | Receivable | Tipo relacionado a conciliações com base na data de pagamento. |
ReconciliationTransactionStatus
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Indefinido. |
1 | PendingPayment | Pendente de Pagamento. |
2 | Paid | Pago |
3 | Anticipated | Antecipado. |
4 | Canceled | Cancelado. |
5 | Chargeback | Chargeback. |
6 | PendingAnticipation | Pendente de antecipação. |
ReconciliationAdjustmentReason
Valor inteiro | Valor string | Descrição |
---|---|---|
1 | Payment | Valor de crédito que se refere a uma transação. |
2 | Chargeback | Valor de débito que vem de uma transação estornada. |
3 | Cancellation | Valor de débito que se refere a uma transação cancelada. |
4 | POSRent | Debit value that refers to a POS rent. |
5 | Antecipation | Valor de crédito referente a antecipação de transação. |
6 | ChargebackRefund | Valor de crédito que se refere a um estorno que foi refutado. |
7 | ChargebackNotification | Uma notificação de estorno foi recebida, pode ser um estorno ou abertura de disputa. |
8 | BlockedAmount | Valor bloqueado, por exemplo: por ordem judicial. |
9 | ChargeFee | Usado para taxas de cobrança, por exemplo: taxa de registro. |
999 | Others | Outros motivos que não são mapeados. |
DocumentFile
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Valor inválido ou não inserido. |
1 | CNPJ | Principal documento jurídico da empresa. |
2 | OwnerLegalDocument | Documento jurídico principal do proprietário da empresa. |
3 | ProofOfAddress | Documento que comprova o endereço da empresa. |
4 | CompanyActivity | Documento que especifica quais produtos ou serviços uma determinada empresa vende. |
5 | ReconciliationAgreement | Documento que especifica que contém permissão para acessar EDI. |
ReconciliationSettingsStatus
Valor inteiro | Valor string | Descrição |
---|---|---|
1 | Enabled | Quando EDI está disponível para obter registros. |
2 | Disabled | O comerciante desativa as configurações de reconciliação ou o EDI não está habilitado. |
3 | PendingTerm | O comerciante não enviou termo assinado para . |
4 | WaitingActivation | O termo foi enviado para o adquirente, mas o EDI ainda não estava habilitado. |
5 | PendingAcquirer | Pendente para aprovação do adquirente. |
DiscountType
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Indefinido |
1 | Percentual | Aplicará desconto percentual com base em uma data de pagamento. |
2 | Fixed | Aplicará um valor fixo em centavos com base na data de pagamento. |
3 | Daily | Aplicará um valor diário em centavos com base na data de pagamento. |
AntifraudCode
Valor inteiro | Valor string |
---|---|
0 | Undefined |
1 | ClearSale |
2 | Konduto |
3 | Aditum |
4 | CyberSource |
999 | Simulador |
PaymentSource
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Indefinido |
1 | Gateway | Gateway |
2 | Pos | POS |
3 | Pinpad | Pinpad |
4 | Recurrency | Recorrência |
5 | PaymentLink | Link de Pagamento |
6 | MobilePos | POS Móvel |
7 | BankSlip | Boleto Bancário |
8 | ThirdPartyEcommerce | Comércio eletrônico de terceiros |
9 | Others | Outros |
10 | Checkout | Checkout |
11 | RecurrencyCheckout | Recorrência Checkout |
12 | VtexPaymentProvider | Provedor de Pagamento VTEX |
13 | SmartPos | Android POS Terminal |
14 | Magento | Loja virtual Magento |
15 | ManagementDashboard | Dashboard de gestão |
1001 | SafrapayCheckout | Checkout Safrapay |
1002 | SafrapayPaymentLink | Link de Pagamento Safrapay |
1003 | SafrapayCatalogPaymentLink | Link de pagamento do catálogo Safrapay |
Frequency
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Não definido |
1 | Daily | Diário |
2 | Weekly | Semanal |
3 | Monthly | Mensal |
6 | Annual | Anual |
BankSlipIssuer
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Valor inválido ou indefinido. |
1 | Bs2 | Banco Bs2. |
2 | Safra | Banco Safra. |
3 | Santander | Banco Santander. |
ChargeEventMode
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Define como os eventos de cobrança são aplicados a uma determinada assinatura. |
1 | ApplyToFirstCharges | O evento de cobrança será aplicado apenas nas primeiras N cobranças recorrentes. N também é definido ao criar ou atualizar um plano. |
ReceiverType
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Indefinido |
1 | Distributor | Distribuidor |
2 | Seller | Vendedor |
3 | MerchantReceiver | Comerciante Destinatário |
TransferInterval
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Indefinido |
1 | Day | Dia |
2 | Week | Semana |
3 | Month | Mês |
4 | Year | Ano |
ContactType
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Indefinido |
1 | Administration | Administração |
2 | Financial | Financeiro |
3 | Technical | Técnico |
AditumProduct
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Valor inválido ou não definido |
1 | Ecommerce | Representa o produto de comércio eletrônico |
2 | Pos | Representa o produto PDV |
3 | Tef | Representa o produto TEF |
4 | BankSlip | Representa o produto Boleto Bancário |
5 | Voucher | Representa processo de transações VAN, integrando-se diretamente com as bandeiras e adquirentes de cartões voucher. |
6 | PaymentLink | Transações de Ecommerce que venham através de um link de pagamento. |
7 | Checkout | Transações de Loja virtual que venham através de um checkout. |
AdjustmentsType
Valor inteiro | Valor string | Descrição |
---|---|---|
1 | Credit | O ajuste de crédito adicionará mais dinheiro para a conta do comerciante |
2 | Debit | O ajuste de débito subtrairá o dinheiro das contas a receber do comerciante |
AdjustmentsReason
Valor inteiro | Valor string | Descrição |
---|---|---|
1 | Payment | Valor de crédito que se refere a uma transação |
2 | Chargeback | Valor de débito que vem de uma transação estornada |
3 | Cancellation | Valor de débito que se refere a uma transação cancelada |
4 | POSRent | Valor de débito que se refere a um aluguel de POS |
5 | Antecipation | Valor de crédito referente a antecipação de transação |
6 | ChargebackRefund | Valor de crédito que se refere a um estorno que foi refutado |
999 | Others | Outros motivos que não são mapeados |
TransactionStatus
Valor inteiro | Valor string | Descrição |
---|---|---|
0 | Undefined | Valor inválido ou não definido |
1 | PreAuthorized | Transação aprovada |
2 | Captured | Transação aprovada e capturada |
3 | Denied | Transação não aprovada ou rejeitada |
4 | Pending | Transação ainda não processada pela adquirente |
5 | Canceled | Transação cancelada |
6 | PendingCancel | Transação com cancelamento pendente |
7 | PendingPayment | Transação com pagamento pendente |
8 | Paid | Transação paga |
9 | ErrorCreation | Houve um erro com a transação |
10 | Expired | Transação vencida |
11 | PendingNewDeadline | Nova data de vencimento pendente |
12 | Timeout | Transação não processada devido ao limite de tempo |
13 | PendingReferral | Pendente validação do portador |
Postman
Uma biblioteca com todos os endpoints do SandBox predefinidos, onde você pode acessar clicando no botão abaixo.
AUTENTICAÇÃO
A autenticação é a forma que deve ser utilizada para gerar um Token de acesso, para que você consiga utilizar os endpoints.
Portal API
A autenticação do Portal é feita através do envio do MerchantToken
(Chave de Acesso) gerando de um Token JWT. Liberando assim o acesso para utilizar os endpoints do Portal.
POST /login/generateToken
Versão v1.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_PORTAL}}/v1/Login/GenerateToken")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["MerchantToken"] = "{{MerchantToken}}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_PORTAL}}/v1/Login/GenerateToken"
payload={}
headers = {
'MerchantToken': '{{MerchantToken}}'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
curl --location --request POST '{{ENDPOINT_PORTAL}}/v1/Login/GenerateToken' \
--header 'MerchantToken: {{MerchantToken}}'
var myHeaders = new Headers();
myHeaders.append("MerchantToken", "{{MerchantToken}}");
var requestOptions = {
method: 'POST',
headers: myHeaders,
redirect: 'follow'
};
fetch("{{ENDPOINT_PORTAL}}/v1/Login/GenerateToken", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"generatedToken": "eyJhbHciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6Im1rX2c1RHJLQ0RzRGt1RjFpTFBuRFdvbUEiLCJNZXJjaGFudFRva2VuIjoibWtfZzVEcktDRHNEa3VGMWlMUG5EV29tQSIsIm1lcmNoYW50Um9sZSI6IntcInBhcmVudE1lcmNoYW50SWRcIjpcImNlODY5Yjc3LWEyYjItNGI5NS04ODYzLTJmNzQ3MzNhMzkyOVwiLFwibWVyY2hhbnRJZFwiOlwiMjhlYjkwODMtZWMyMC00YjBlLTg1ZDYtMjJjZjljMzVhODk4XCIsXCJmYW50YXN5TmFtZVwiOlwiQkVOQ0hNQVJLIFJQQ1wiLFwicm9sZXNcIjpbMl0sXCJtZXJjaGFudFRva2VuXCI6XCJta19nNURyS0NEc0RrdUYxaUxQbkRXb21BXCJ9IiwiUmV0dXJuVXJsIjoiIiwibmJmIjoxNjI0MDE5NTIwLCJleHAiOjE2MjQwMjEzMjAsImlhdCI6MTYyNDAxOTUyMCwiaXNzIjoiQWRpdHVtIiwiYXVkIjoiQWRpdHVtIn0.LGPlDY8qKOvh4UiE2Dq_c3xUJ6gMXjvt_ggC3gQN9tWXXfIhXeDJCqfAuK7omn8OpfnRD3h5Hz2NoAnQOMD4Su-wZB-5SkffhX_DkxeGnyzqnx2wvyinMsbPO55uphW2ed1sLtB1PTTxNTmVSsbzr2W214qTLOJnbf3TTU6oO4NBs5unCte7wDB4uhosPj58uiRqXiiCnGEZeRR9n3qxRLRVJOgoCKhTi5-ewnE0ITppoWWOSY3TuHfvr4B2zfBCMYF8XDxV-W-4xtssR2AvHeHyY345e8N-THa01STPSKl5iK5PyuzuOrrzMpkbIAsqVXVdexl0fMeuoTuwBJl0hg",
"refreshToken": "740efb81fcaa4875a54ce724edaf3125",
"success": true,
"errors": [],
"traceKey": "375c5e3e-7369-48ea-b036-d9ac65e98182"
}
O Endpoint é utilizado para fazer login no portal da , sem que o usuário precise inserir login e senha. Essa funcionalidade pode ser utilizada por sistemas que queiram embutir o portal da .
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
MerchantToken | string | Sim | Chave de acesso à API. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
generatedToken | string | Token JWT que deve ser utilizado no Authorization das próximas requisições. Esse token expira em 30 minutos. |
refreshToken | string | Token utilizado para gerar outros JWT sem precisar enviar o merchantToken . |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
MerchantToken | {{MerchantToken}} |
-- | Chave de acesso à API |
POST /login/RefreshToken
Versão v1.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_PORTAL}}/v1/Login/RefreshToken")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
request.body = "{\r\n \"refreshToken\": \"740egb91fcaa4875a54ce724edaf3125\"\r\n}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_PORTAL}}/v1/Login/RefreshToken"
payload="{\r\n \"refreshToken\": \"740egb91fcaa4875a54ce724edaf3125\"\r\n}"
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
curl --location --request POST '{{ENDPOINT_PORTAL}}/v1/Login/RefreshToken' \
--header 'Content-Type: application/json' \
--data-raw '{
"refreshToken": "740egb91fcaa4875a54ce724edaf3125"
}'
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({"refreshToken":"740egb91fcaa4875a54ce724edaf3125"});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("{{ENDPOINT_PORTAL}}/v1/Login/RefreshToken", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"accessToken": "eyJhbHciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6Im1rX2c1RHJLQ0RzRGt1RjFpTFBuRFdvbUEiLCJNZXJjaGFudFRva2VuIjoibWtfZzVEcktDRHNEa3VGMWlMUG5EV29tQSIsIm1lcmNoYW50Um9sZSI6IntcInBhcmVudE1lcmNoYW50SWRcIjpcImNlODY5Yjc3LWEyYjItNGI5NS04ODYzLTJmNzQ3MzNhMzkyOVwiLFwibWVyY2hhbnRJZFwiOlwiMjhlYjkwODMtZWMyMC00YjBlLTg1ZDYtMjJjZjljMzVhODk4XCIsXCJmYW50YXN5TmFtZVwiOlwiQkVOQ0hNQVJLIFJQQ1wiLFwicm9sZXNcIjpbMl0sXCJtZXJjaGFudFRva2VuXCI6XCJta19nNURyS0NEc0RrdUYxaUxQbkRXb21BXCJ9IiwiUmV0dXJuVXJsIjoiIiwibmJmIjoxNjI0MDI4MDE2LCJleHAiOjE2MjQwMjk4MTYsImlhdCI6MTYyNDAyODAxNiwiaXNzIjoiQWRpdHVtIiwiYXVkIjoiQWRpdHVtIn0.j7aM4SnGRfA7mt5sXqhccznTPsHeMzAj2kC-Kc6zoEhAyA1eY41ThjWeV7GCxWj9PbPucPgv1Knw1ZYJxyAplSL_k_xaP_t5mLbdSOXG2o9yszeIGdoQuMDbh3_YJpem7kLI23yEYRMvt3GxgGEYFd9h9ah7pRzWDPX8WxKThyWfafSSQ4j5CXOz49k9ksIOArqqAJ6Ap5tA6qezOuf8co_21gJk2qWDcN6SO2y9soYhO_SGEcuzgyEDgDOhVXjIX-BM0oN1Id3FPd8omJARs43LSMDso9CGiQE-2R9oQ0pA3NrfZ0y_PHFfnTIkSOLoQ8KjCcY6H6QLGLfrlp3BRw",
"refreshToken": "740egb91fcaa4875a54ce724edaf3125",
"success": true,
"errors": [],
"traceKey": "854e236a-1aea-4882-b062-f8cc2d32ab76"
}
O Endpoint é utilizado para atualizar um token de um usuário que está logado no aplicativo.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
refreshToken | string | Sim | O token de atualização do usuário. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
generatedToken | string | Token JWT que deve ser utilizado no Authorization das próximas requisições. Esse token expira em 30 minutos. |
refreshToken | string | Token utilizado para gerar outros JWT sem precisar enviar o merchantToken . |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
traceKey | string | Identificador da operação. |
BODY Raw
"refreshToken": "740egb91fcaa4875a54ce724edaf3125"
}
Gateway API
A autenticação do Gateway é feita através do envio do BCRYPT
(código gerado contendo CNPJ e MerchantToken da loja) e CNPJ
. Liberando assim o acesso para utilizar os endpoints do Gateway.
POST /merchant/auth
Versão v2.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/merchant/auth")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "{{BCRYPT}}"
request["merchantCredential"] = "{{CNPJ}}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_GATEWAY}}/v2/merchant/auth"
payload={}
headers = {
'Authorization': '{{BCRYPT}}',
'merchantCredential': '{{CNPJ}}'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
curl --location --request POST '{{ENDPOINT_GATEWAY}}/v2/merchant/auth' \
--header 'Authorization: {{BCRYPT}}' \
--header 'merchantCredential: {{CNPJ}}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "{{BCRYPT}}");
myHeaders.append("merchantCredential", "{{CNPJ}}");
var requestOptions = {
method: 'POST',
headers: myHeaders,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/merchant/auth", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"accessToken": "eyJhbHciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6Im1rX2c1RHJLQ0RzRGt1RjFpTFBuRFdvbUEiLCJuYW1laWQiOiJta19nNURyS0NEc0RrdUYxaUxQbkRXb21BIiwibmJmIjoxNjI0MDIzNDc3LCJleHAiOjE2MjUyMzMwNzcsImlhdCI6MTYyNDAyMzQ3NywiaXNzIjoiQWRpdHVtIiwiYXVkIjoiQWRpdHVtIn0.g9jVQKHCsmCwj35ST-tIkhpilGivLKMXG_rVJSI9hXUK5kTklEjV-Pzta5j94UwpvAljcbVAG0uuyL06-Vg1qTMq9UoieynGwzyDXDbKMC8bVbcioJaN7XSLqCEUS6dTizhyXESCaZtpQop0_ibAaBa0yJAIfzCyZYQxeLBcvNENOiaKrMRSYLzAmsBcBsg7EgnD_VvAoqvdQG9J_ZkdDxMlc0e8UHrDlSVBUoEpF09UOH7TtHedHFpgeF5CANUU9-MD7epb5AGLR6cOR-HvHIyrGH-mdKcCXQiGj5tZ8JIcH6diLOp1AP5DZQecCvHxGChIIV2MF2f55OeuMwvZnQ",
"refreshToken": "6546f5a4a9bb43d39b7cde6b8fdce5d9",
"success": true,
"errors": [],
"traceKey": "e899d6bc-954b-46b7-a52d-5d9ddcf9dbb0"
}
O Endpoint é utilizado para gerar um par de acessos, token de acesso e token de atualização, que são necessários para consumir a API.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
Authorization | string | Sim | BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token. |
merchantCredencial | string | Sim | CNPJ / CPF da loja. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
accessToken | string | Token JWT que deve ser utilizado no Authorization das próximas requisições. Esse token expira em 30 minutos e pode ser atualizado com o refreshToken . |
refreshToken | string | Token utilizado para gerar outros JWT sem precisar enviar o merchantToken . |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Authorization | {{BCRYPT}} |
-- | BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token. |
merchantCredential | {{CNPJ}} |
-- | CNPJ da loja. |
POST /refreshtoken
Versão v2.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/refreshtoken")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n \"accessToken\": \"eyJhbHciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6Im1rX2c1RHJLQ0RzRGt1RjFpTFBuRFdvbUEiLCJuYW1laWQiOiJta19nNURyS0NEc0RrdUYxaUxQbkRXb21BIiwibmJmIjoxNjI0MDIzNDc3LCJleHAiOjE2MjUyMzMwNzcsImlhdCI6MTYyNDAyMzQ3NywiaXNzIjoiQWRpdHVtIiwiYXVkIjoiQWRpdHVtIn0.g9jVQKHCsmCwj35ST-tIkhpilGivLKMXG_rVJSI9hXUK5kTklEjV-Pzta5j94UwpvAljcbVAG0uuyL06-Vg1qTMq9UoieynGwzyDXDbKMC8bVbcioJaN7XSLqCEUS6dTizhyXESCaZtpQop0_ibAaBa0yJAIfzCyZYQxeLBcvNENOiaKrMRSYLzAmsBcBsg7EgnD_VvAoqvdQG9J_ZkdDxMlc0e8UHrDlSVBUoEpF09UOH7TtHedHFpgeF5CANUU9-MD7epb5AGLR6cOR-HvHIyrGH-mdKcCXQiGj5tZ8JIcH6diLOp1AP5DZQecCvHxGChIIV2MF2f55OeuMwvZnQ\",\r\n \"refreshToken\": \"612179235e914cba90a9743803ba397f\"\r\n}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_GATEWAY}}/v2/refreshtoken"
payload="{\r\n \"accessToken\": \"eyJhbHciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6Im1rX2c1RHJLQ0RzRGt1RjFpTFBuRFdvbUEiLCJuYW1laWQiOiJta19nNURyS0NEc0RrdUYxaUxQbkRXb21BIiwibmJmIjoxNjI0MDIzNDc3LCJleHAiOjE2MjUyMzMwNzcsImlhdCI6MTYyNDAyMzQ3NywiaXNzIjoiQWRpdHVtIiwiYXVkIjoiQWRpdHVtIn0.g9jVQKHCsmCwj35ST-tIkhpilGivLKMXG_rVJSI9hXUK5kTklEjV-Pzta5j94UwpvAljcbVAG0uuyL06-Vg1qTMq9UoieynGwzyDXDbKMC8bVbcioJaN7XSLqCEUS6dTizhyXESCaZtpQop0_ibAaBa0yJAIfzCyZYQxeLBcvNENOiaKrMRSYLzAmsBcBsg7EgnD_VvAoqvdQG9J_ZkdDxMlc0e8UHrDlSVBUoEpF09UOH7TtHedHFpgeF5CANUU9-MD7epb5AGLR6cOR-HvHIyrGH-mdKcCXQiGj5tZ8JIcH6diLOp1AP5DZQecCvHxGChIIV2MF2f55OeuMwvZnQ\",\r\n \"refreshToken\": \"612179235e914cba90a9743803ba397f\"\r\n}"
headers = {
'Authorization': 'Bearer {{accessToken}}',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
curl --location --request POST '{{ENDPOINT_GATEWAY}}/v2/refreshtoken' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"accessToken": "eyJhbHciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6Im1rX2c1RHJLQ0RzRGt1RjFpTFBuRFdvbUEiLCJuYW1laWQiOiJta19nNURyS0NEc0RrdUYxaUxQbkRXb21BIiwibmJmIjoxNjI0MDIzNDc3LCJleHAiOjE2MjUyMzMwNzcsImlhdCI6MTYyNDAyMzQ3NywiaXNzIjoiQWRpdHVtIiwiYXVkIjoiQWRpdHVtIn0.g9jVQKHCsmCwj35ST-tIkhpilGivLKMXG_rVJSI9hXUK5kTklEjV-Pzta5j94UwpvAljcbVAG0uuyL06-Vg1qTMq9UoieynGwzyDXDbKMC8bVbcioJaN7XSLqCEUS6dTizhyXESCaZtpQop0_ibAaBa0yJAIfzCyZYQxeLBcvNENOiaKrMRSYLzAmsBcBsg7EgnD_VvAoqvdQG9J_ZkdDxMlc0e8UHrDlSVBUoEpF09UOH7TtHedHFpgeF5CANUU9-MD7epb5AGLR6cOR-HvHIyrGH-mdKcCXQiGj5tZ8JIcH6diLOp1AP5DZQecCvHxGChIIV2MF2f55OeuMwvZnQ",
"refreshToken": "612179235e914cba90a9743803ba397f"
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({"accessToken":"eyJhbHciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6Im1rX2c1RHJLQ0RzRGt1RjFpTFBuRFdvbUEiLCJuYW1laWQiOiJta19nNURyS0NEc0RrdUYxaUxQbkRXb21BIiwibmJmIjoxNjI0MDIzNDc3LCJleHAiOjE2MjUyMzMwNzcsImlhdCI6MTYyNDAyMzQ3NywiaXNzIjoiQWRpdHVtIiwiYXVkIjoiQWRpdHVtIn0.g9jVQKHCsmCwj35ST-tIkhpilGivLKMXG_rVJSI9hXUK5kTklEjV-Pzta5j94UwpvAljcbVAG0uuyL06-Vg1qTMq9UoieynGwzyDXDbKMC8bVbcioJaN7XSLqCEUS6dTizhyXESCaZtpQop0_ibAaBa0yJAIfzCyZYQxeLBcvNENOiaKrMRSYLzAmsBcBsg7EgnD_VvAoqvdQG9J_ZkdDxMlc0e8UHrDlSVBUoEpF09UOH7TtHedHFpgeF5CANUU9-MD7epb5AGLR6cOR-HvHIyrGH-mdKcCXQiGj5tZ8JIcH6diLOp1AP5DZQecCvHxGChIIV2MF2f55OeuMwvZnQ","refreshToken":"612179235e914cba90a9743803ba397f"});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/refreshtoken", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"accessToken": "eyJhbHciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6Im1rX2c1RHJLQ0RzRGt1RjFpTFBuRFdvbUEiLCJuYW1laWQiOiJta19nNURyS0NEc0RrdUYxaUxQbkRXb21BIiwibmJmIjoxNjI0MDI4MTE2LCJleHAiOjE2MjUyMzc3MTYsImlhdCI6MTYyNDAyODExNiwiaXNzIjoiQWRpdHVtIiwiYXVkIjoiQWRpdHVtIn0.Vzt387BFC1amWYPdbm0vf2wPYwwak1Gj7dmyGWJhpgzIfX9QET1sQTE7YJdFmN6JPKcTnArPzx80wY68hte9_AyDYkSa_P-Jeg6x3NxOyvCxcMPfnv1Qv-gtrfWyA7mnPm2nXXfavzeTZZ7ZQjfMvYBR15a2QVvKLyU3MYFLLo3swW5fsKzxmkn7RaqSFLwS4XI8rNXqLN_zKjGCBu7F4gV-3G2YGivaabZ8nqB1ODo5LDqNieFBnuVAMUiU5s-eORVeEhB-j40LDPICG5poeXYPw7L4VXMhNH8ivY5mCtxbfvk9jWIVBQkWAGrSjRWvOIU35h2-Ym2A8O4-hdqUjw",
"refreshToken": "612179235e914cba90a9743803ba397f",
"success": true,
"errors": [],
"traceKey": "498c960d-8b70-4658-9d13-fac92eaec6b8"
}
O endpoint é utilizado para atualizar o token de acesso.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
accessToken | string | Sim | Token JWT que deve ser utilizado no Authorization das próximas requisições. Esse token expira em 30 minutos e pode ser atualizado com o refreshToken . |
refreshToken | string | Sim | Token utilizado para gerar outros JWT sem precisar enviar o merchantToken . |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
accessToken | string | Token JWT que deve ser utilizado no Authorization das próximas requisições. Esse token expira em 30 minutos e pode ser atualizado com o refreshToken . |
refreshToken | string | Token utilizado para gerar outros JWT sem precisar enviar o merchantToken . |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token. |
OAuth
OAuth é a forma de carregar o Portal da dentro da sua aplicação, com a utilização do SSO
(Single Sign On);
Para carregar o Portal na sua aplicação, é necessário fazer login através do endpoint POSTv1/login/generateToken
Em seguida deve chamar a URL utilizando SSO
passando os dados do accessToken
e refreshToken
, desta forma:
Caso deseje embutir o portal sem o menu utilize &mode=webview
no final do URL mostrado a cima
Este processo contém rotas alternativas, você pode utiliza-las da seguinte forma:
Você pode coloca-lo em um <iframe src="{{URL}}"></iframe>
direcionando para a URL, assim terá o Portal dentro de sua própria plataforma. No exemplo abaixo, a página de cobranças foi utilizada.
Nome da rota | Rota |
---|---|
Lista de Cobranças | &route=charges |
Listagem de Link de Pagamento | &route=paymentLinkList |
Dashboard de Link de Pagamento | &route=paymentLinkDashboard |
Listagem de Plano | &route=plan-list |
Calendário da Conciliação | &route=calendar |
Dashboard da Conciliação | &route=reconciliation-dashboard |
Extrato Digital | &route=movements |
Assinaturas | &route=subscriptions |
Gestão de Usuários
POST /user
Versão v1.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "json"
require "net/http"
url = URI("{{ENDPOINT_PORTAL}}/v1/user")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["merchantId"] = "{{merchantId}}"
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = JSON.dump({
"email": "emaildousuario@email.com.br",
"merchantId": "77fc7b0a-a99z-4ff5-5er2-6f2cbab07894",
"firstName": "João",
"lastName": "Paulo",
"roles": [
2
],
"hostUrl": "https://portal.aditum.com.br/"
})
response = https.request(request)
puts response.read_body
import requests
import json
url = "{{ENDPOINT_PORTAL}}/v1/user"
payload = json.dumps({
"email": "emaildousuario@email.com.br",
"merchantId": "77fc7b0a-a99z-4ff5-5er2-6f2cbab07894",
"firstName": "João",
"lastName": "Paulo",
"roles": [
2
],
"hostUrl": "https://portal.aditum.com.br/"
})
headers = {
'merchantId': '{{merchantId}}',
'Authorization': 'Bearer {{accessToken}}',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
curl --location --request POST '{{ENDPOINT_PORTAL}}/v1/user' \
--header 'merchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"email": "emaildousuario@email.com.br",
"merchantId": "77fc7b0a-a99z-4ff5-5er2-6f2cbab07894",
"firstName": "João",
"lastName": "Paulo",
"roles": [
2
],
"hostUrl": "https://portal.aditum.com.br/"
}'
var myHeaders = new Headers();
myHeaders.append("merchantId", "{{merchantId}}");
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
"email": "emaildousuario@email.com.br",
"merchantId": "77fc7b0a-a99z-4ff5-5er2-6f2cbab07894",
"firstName": "João",
"lastName": "Paulo",
"roles": [
2
],
"hostUrl": "https://portal.aditum.com.br/"
});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("{{ENDPOINT_PORTAL}}/v1/user", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"userId": "6202f934-eq9e-4dc5-9a55-4f479572a1fc",
"success": true,
"errors": [],
"traceKey": "980492a8-c82c-4509-8113-ee12b07afd90"
}
Endpoint responsável por criar um novo usuário dentro de um estabelecimento.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
string | Sim | Email do usuário. | |
merchantId | string | Sim | ID do estabelecimento que será criado o novo usuário. |
firstName | string | Sim | Nome do usuário. |
lastName | string | Sim | Sobrenome do usuário. |
roles | int | Sim | Função do usuário. |
hostUrl | string | Sim | URL do portal. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
userId | string | ID único do novo usuário. |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | Use o Merchant Token para gerar o accessToken do ENDPOINT_PORTAL. |
merchantId | {{merchantId}} |
-- | O ID do estabelecimento. |
GET /user
Versão v1.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_PORTAL}}/v1/user?merchantId={{merchantId}}")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["merchantId"] = "{{merchantId}}"
request["Authorization"] = "Bearer {{accessToken}}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_PORTAL}}/v1/user?merchantId={{merchantId}}"
payload={}
headers = {
'merchantId': '{{merchantId}}',
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
curl --location -g --request GET '{{ENDPOINT_PORTAL}}/v1/user?merchantId={{merchantId}}' \
--header 'merchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("merchantId", "{{merchantId}}");
myHeaders.append("Authorization", "Bearer {{accessToken}}");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("{{ENDPOINT_PORTAL}}/v1/user?merchantId={{merchantId}}", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"users": [
{
"id": "c67d777e-59ff-4feb-b9fd-99f246d42f84",
"email": "jorge.felipe@email.com.br",
"firstName": "Jorge",
"lastName": "Felipe",
"roles": [
"Administrator"
]
}
],
"success": true,
"errors": [],
"traceKey": "d2f22ea1-ccc9-99dc-b760-a6acb1649a20"
}
Endpoint responsável por obter os usuários cadastrados em um estabelecimento.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
merchantId | string | Sim | O ID do estabelecimento. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
users | array | Lista dos usuários cadastrados. |
user.id | string | ID do usuário. |
user.email | string | E-mail do usuário. |
user.firstName | string | Nome do usuário. |
user.lastName | string | Sobrenome do usuário. |
roles | string | Função do perfil do usuário. |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | Use o Merchant Token para gerar o accessToken do ENDPOINT_PORTAL. |
merchantId | {{merchantId}} |
-- | O ID do estabelecimento. |
PUT /user
Versão v1.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "json"
require "net/http"
url = URI("{{ENDPOINT_PORTAL}}/v1/user")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Put.new(url)
request["merchantId"] = "{{merchantId}}"
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = JSON.dump({
"id": "7894b8ca-c999-4d1c-ab85-5558e2d21dcb",
"firstName": "João",
"lastName": "Felipe",
"merchantId": "{{merchantId}}",
"roles": [
2
]
})
response = https.request(request)
puts response.read_body
import requests
import json
url = "{{ENDPOINT_PORTAL}}/v1/user"
payload = json.dumps({
"id": "7894b8ca-c999-4d1c-ab85-5558e2d21dcb",
"firstName": "João",
"lastName": "Felipe",
"merchantId": "{{merchantId}}",
"roles": [
2
]
})
headers = {
'merchantId': '{{merchantId}}',
'Authorization': 'Bearer {{accessToken}}',
'Content-Type': 'application/json'
}
response = requests.request("PUT", url, headers=headers, data=payload)
print(response.text)
curl --location --request PUT '{{ENDPOINT_PORTAL}}/v1/user' \
--header 'merchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"id": "7894b8ca-c999-4d1c-ab85-5558e2d21dcb",
"firstName": "João",
"lastName": "Felipe",
"merchantId": "{{merchantId}}",
"roles": [
2
]
}'
var myHeaders = new Headers();
myHeaders.append("merchantId", "{{merchantId}}");
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
"id": "7894b8ca-c999-4d1c-ab85-5558e2d21dcb",
"firstName": "João",
"lastName": "Felipe",
"merchantId": "{{merchantId}}",
"roles": [
2
]
});
var requestOptions = {
method: 'PUT',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("{{ENDPOINT_PORTAL}}/v1/user", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"success": true,
"errors": [],
"traceKey": "8f84715b-dfc8-99c9-a593-ae15ed84fa99"
}
Endpoint responsável por atualizar os dados do usuário.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
id | string | Sim | O ID do usuário. |
firstName | string | Sim | Nome do usuário. |
lastName | string | Sim | Sobrenome do usuário. |
merchantId | string | Sim | O ID do estabelecimento. |
roles | int | Sim | Função do perfil do usuário. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | Use o Merchant Token para gerar o accessToken do ENDPOINT_PORTAL. |
merchantId | {{merchantId}} |
-- | O ID do estabelecimento. |
PUT /user/ChangePasswordRequest
Versão v1.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_PORTAL}}/v1/user/{{userId}}/roles/{{rolesId}}")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Put.new(url)
request["merchantId"] = "{{merchantId}}"
request["Authorization"] = "Bearer {{accessToken}}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_PORTAL}}/v1/user/{{userId}}/roles/{{rolesId}}"
payload={}
headers = {
'merchantId': '{{merchantId}}',
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("PUT", url, headers=headers, data=payload)
print(response.text)
curl --location -g --request PUT '{{ENDPOINT_PORTAL}}/v1/user/{{userId}}/roles/{{rolesId}}' \
--header 'merchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("merchantId", "{{merchantId}}");
myHeaders.append("Authorization", "Bearer {{accessToken}}");
var requestOptions = {
method: 'PUT',
headers: myHeaders,
redirect: 'follow'
};
fetch("{{ENDPOINT_PORTAL}}/v1/user/{{userId}}/roles/{{rolesId}}", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"id": "c67d564e-99ff-7feb-b9fd-99f246d42f84",
"success": true,
"errors": [],
"traceKey": "2a8c999d-7ab5-41f5-999d-9d10d04c05b8"
}
Endpoint responsável por atualizar a função do perfil do usuário.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
userId | string | Sim | O ID do usuário. |
rolesId | int | Sim | O enumerador da função do usuário. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
id | string | O ID do usuário. |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | Use o Merchant Token para gerar o accessToken do ENDPOINT_PORTAL. |
merchantId | {{merchantId}} |
-- | O ID do estabelecimento. |
POST /user/ChangePasswordRequest
Versão v1.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "json"
require "net/http"
url = URI("{{ENDPOINT_PORTAL}}/v1/user/ChangePasswordRequest")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["merchantId"] = "{{merchantId}}"
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = JSON.dump({
"email": "usuario@email.com.br",
"hostUrl": "https://portal.aditum.com.br/"
})
response = https.request(request)
puts response.read_body
import requests
import json
url = "{{ENDPOINT_PORTAL}}/v1/user/ChangePasswordRequest"
payload = json.dumps({
"email": "usuario@email.com.br",
"hostUrl": "https://portal.aditum.com.br/"
})
headers = {
'merchantId': '{{merchantId}}',
'Authorization': 'Bearer {{accessToken}}',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
curl --location --request POST '{{ENDPOINT_PORTAL}}/v1/user/ChangePasswordRequest' \
--header 'merchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"email": "usuario@email.com.br",
"hostUrl": "https://portal.aditum.com.br/"
}'
var myHeaders = new Headers();
myHeaders.append("merchantId", "{{merchantId}}");
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
"email": "usuario@email.com.br",
"hostUrl": "https://portal.aditum.com.br/"
});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("{{ENDPOINT_PORTAL}}/v1/user/ChangePasswordRequest", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"executed": true,
"success": true,
"errors": [],
"traceKey": "e9857894-07a9-4fd7-8ca0-78b9903bccac"
}
Endpoint responsável por enviar um e-mail para o usuário redefinir sua senha.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
string | Sim | E-mail do usuário. | |
hostUrl | string | Sim | Url do portal. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
id | string | O ID do usuário. |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | Use o Merchant Token para gerar o accessToken do ENDPOINT_PORTAL. |
merchantId | {{merchantId}} |
-- | O ID do estabelecimento. |
GET /user/Merchants
Versão v1.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_PORTAL}}/v1/user/Merchants?pageSize=10¤tPage=1&sortDirection=1")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_PORTAL}}/v1/user/Merchants?pageSize=10¤tPage=1&sortDirection=1"
payload={}
headers = {
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
curl --location --request GET '{{ENDPOINT_PORTAL}}/v1/user/Merchants?pageSize=10¤tPage=1&sortDirection=1' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("{{ENDPOINT_PORTAL}}/v1/user/Merchants?pageSize=10¤tPage=1&sortDirection=1", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"merchants": [
{
"merchantId": "99eb9099-ec29-4b0e-99d6-22cf9c35a898",
"fantasyName": "LOJA DO MANÉL",
"roles": [
"Administrator"
],
"merchantToken": "mk_g9DrKCDsTjuF1iLPnDMamA"
}
],
"totalMerchants": 1,
"success": true,
"errors": [],
"traceKey": "3dc0c2f5-41f6-4331-bc95-e0a8e2a603df"
}
Endpoint responsável por obter estabelecimentos com base no MerchantToken ou UserID passados no JWT.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
pageSize | int | Sim | Quantidade de items por página. |
currentPage | int | Sim | Página atual da busca. |
fantasyName | string | Sim | Nome fantasia do estabelecimento. |
sortDirection | int | Não | A ordem da lista, crescente ou decrescente. |
sortFieldName | int | Não | O campo em que a classificação deve ser feita. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
merchants | array | Lista com os estabelecimentos obtidos. |
merchants.merchantId | string | O ID do estabelecimento. |
merchants.fantasyName | string | O nome fantasia do estabelecimento. |
merchants.roles | string | Função do perfil do estabelecimento. |
merchants.merchantToken | string | O token do estabelecimento. |
totalMerchants | int | Quantidade de estabelecimentos encontrados. |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | Use o Merchant Token para gerar o accessToken do ENDPOINT_PORTAL. |
DELETE /user/{{userId}}
Versão v1.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_PORTAL}}/v1/user/{{userId}}?merchantId={{merchantId}}")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["merchantId"] = "{{merchantId}}"
request["Authorization"] = "Bearer {{accessToken}}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_PORTAL}}/v1/user/{{userId}}?merchantId={{merchantId}}"
payload={}
headers = {
'merchantId': '{{merchantId}}',
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("DELETE", url, headers=headers, data=payload)
print(response.text)
curl --location -g --request DELETE '{{ENDPOINT_PORTAL}}/v1/user/{{userId}}?merchantId={{merchantId}}' \
--header 'merchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("merchantId", "{{merchantId}}");
myHeaders.append("Authorization", "Bearer {{accessToken}}");
var requestOptions = {
method: 'DELETE',
headers: myHeaders,
redirect: 'follow'
};
fetch("{{ENDPOINT_PORTAL}}/v1/user/{{userId}}?merchantId={{merchantId}}", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"success": true,
"errors": [],
"traceKey": "47624987-1e95-4d9a-944e-e036db17ee15"
}
Endpoint responsável por desativar um usuario do estabelecimento.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
userId | string | Sim | O ID do usuário. |
merchantId | string | Sim | O ID do estabelecimento. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | Use o Merchant Token para gerar o accessToken do ENDPOINT_PORTAL. |
merchantId | {{merchantId}} |
-- | O ID do estabelecimento. |
LINK DE PAGAMENTOS
Link de pagamento é uma alternativa para efetuar uma venda sem que o cliente precise acessar seu site ou ir à sua loja. Basta enviar o link por mensagem ou e-mail para concluir o procedimento.
🚧 Quando for criado através do Portal , sempre será criado um link de pagamentos (ao invés de checkout).
A diferença entre o checkout e o link de pagamentos é que no checkout, o comprador está autenticado em uma loja virtual. O link de pagamentos, por sua vez, é público e não necessita de autenticação. Por isso, no checkout é possível visualizar a wallet de cartões do comprador, enquanto no link de pagamentos isso não é possível.
POST /paymentlink
Versão v2.0
Requisição HTTP
Exemplo de requisição (
Plano
)
require "uri"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/paymentlink")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n \"planId\": \"932168be-46b8-45d3-80f1-45cdd0cd7d6a\",\r\n \"customer\": {\r\n \"name\": \"Jorge Filipe\",\r\n \"email\": \"jorginho.felps@email.com.br\",\r\n \"document\": \"01234567891\",\r\n \"phone\": {\r\n \"countryCode\": \"+55\",\r\n \"areaCode\": \"21\",\r\n \"number\": \"999999999\",\r\n \"type\": 5\r\n }\r\n }\r\n}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_GATEWAY}}/v2/paymentlink"
payload="{\r\n \"planId\": \"932168be-46b8-45d3-80f1-45cdd0cd7d6a\",\r\n \"customer\": {\r\n \"name\": \"Jorge Filipe\",\r\n \"email\": \"jorginho.felps@email.com.br\",\r\n \"document\": \"01234567891\",\r\n \"phone\": {\r\n \"countryCode\": \"+55\",\r\n \"areaCode\": \"21\",\r\n \"number\": \"999999999\",\r\n \"type\": 5\r\n }\r\n }\r\n}"
headers = {
'Authorization': 'Bearer {{accessToken}}',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
curl --location --request POST '{{ENDPOINT_GATEWAY}}/v2/paymentlink' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"planId": "932168be-46b8-45d3-80f1-45cdd0cd7d6a",
"customer": {
"name": "Jorge Filipe",
"email": "jorginho.felps@email.com.br",
"document": "01234567891",
"phone": {
"countryCode": "+55",
"areaCode": "21",
"number": "999999999",
"type": 5
}
}
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({"planId":"932168be-46b8-45d3-80f1-45cdd0cd7d6a","customer":{"name":"Jorge Filipe","email":"jorginho.felps@email.com.br","document":"01234567891","phone":{"countryCode":"+55","areaCode":"21","number":"999999999","type":5}}});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/paymentlink", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
Exemplo de requisição (
Valor Avulso
)
require "uri"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/paymentlink")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n \"amount\": 1000,\r\n \"description\": \"Descrição do Link\",\r\n \"emailNotification\": \"jorginho.felps@email.com.br\",\r\n \"phoneNotification\": \"21999999999\"\r\n}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_GATEWAY}}/v2/paymentlink"
payload="{\r\n \"amount\": 1000,\r\n \"description\": \"Descrição do Link\",\r\n \"emailNotification\": \"jorginho.felps@email.com.br\",\r\n \"phoneNotification\": \"21999999999\"\r\n}"
headers = {
'Authorization': 'Bearer {{accessToken}}',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
curl --location --request POST '{{ENDPOINT_GATEWAY}}/v2/paymentlink' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"amount": 1000,
"description": "Descrição do Link",
"emailNotification": "jorginho.felps@email.com.br",
"phoneNotification": "21999999999"
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({"amount":1000,"description":"Descrição do Link","emailNotification":"jorginho.felps@email.com.br","phoneNotification":"21999999999"});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/paymentlink", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
Exemplo de requisição (
Produtos
)
require "uri"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/paymentlink")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n \"emailNotification\": \"jorginho.felps@email.com.br\",\r\n \"phoneNotification\": \"21999999999\",\r\n \"newProducts\": {\r\n \"merchantId\": \"e4a78487-ac6d-4d18-8312-934399d70616\",\r\n \"products\": [\r\n {\r\n \"name\": \"Maçã\",\r\n \"amount\": 500,\r\n \"sku\": \"SKU_MACA\",\r\n \"isActive\": true\r\n }\r\n ]\r\n }\r\n}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_GATEWAY}}/v2/paymentlink"
payload="{\r\n \"emailNotification\": \"jorginho.felps@email.com.br\",\r\n \"phoneNotification\": \"21999999999\",\r\n \"newProducts\": {\r\n \"merchantId\": \"e4a78487-ac6d-4d18-8312-934399d70616\",\r\n \"products\": [\r\n {\r\n \"name\": \"Maçã\",\r\n \"amount\": 500,\r\n \"sku\": \"SKU_MACA\",\r\n \"isActive\": true\r\n }\r\n ]\r\n }\r\n}"
headers = {
'Authorization': 'Bearer {{accessToken}}',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
curl --location --request POST '{{ENDPOINT_GATEWAY}}/v2/paymentlink' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"emailNotification": "jorginho.felps@email.com.br",
"phoneNotification": "21999999999",
"newProducts": {
"merchantId": "e4a78487-ac6d-4d18-8312-934399d70616",
"products": [
{
"name": "Maçã",
"amount": 500,
"sku": "SKU_MACA",
"isActive": true
}
]
}
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({"emailNotification":"jorginho.felps@email.com.br","phoneNotification":"21999999999","newProducts":{"merchantId":"e4a78487-ac6d-4d18-8312-934399d70616","products":[{"name":"Maçã","amount":500,"sku":"SKU_MACA","isActive":true}]}});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/paymentlink", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
Resposta (
Plano
)
{
"id": "50025917-afac-4d16-9b5f-982840064591",
"smartCheckoutUrl": "/v2/checkout/50025917-afac-4d16-9b5f-982840064591?signinToken=eyJhbHciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MjQwMzIwOTQsImlzcyI6IkFkaXR1bSIsImF1ZCI6IndhbGxldCJ9.QzuLYDtGOcjwH6-jc7UFEHo_iTWqYVM9yvQfHirfNmw",
"success": true,
"errors": [],
"traceKey": "17139692-d012-441d-bb34-fa4007383ba2"
}
Resposta (
Valor Avulso
)
{
"id": "84e6e7c9-d56d-4418-bd82-cdbb92c0302a",
"smartCheckoutUrl": "/v2/checkout/84e6e7c9-d56d-4418-bd82-cdbb92c0302a?signinToken=eyJhbHciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MjQwMzE5MjQsImlzcyI6IkFkaXR1bSIsImF1ZCI6IndhbGxldCJ9.tlusUUQaRK8Fsnk_-EYJl05mr7IXhEnDTzmiptuKWaY",
"success": true,
"errors": [],
"traceKey": "f6c98b33-a433-4686-b463-5267d6aa73dd"
}
Resposta (
Produtos
)
{
"id": "2efa5041-3c12-47e7-bc89-d1b34cb806ab",
"smartCheckoutUrl": "/v2/checkout/2efa5041-3c12-47e7-bc89-d1b34cb806ab?signinToken=eyJhbHciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MjQwMzE3NzYsImlzcyI6IkFkaXR1bSIsImF1ZCI6IndhbGxldCJ9.RLXiLOu2fNVqErAilrfdh4lpY9OqxO38Y7WNBoUWEzY",
"products": [
{
"amount": 500,
"name": "Maçã",
"quantity": 1,
"id": "4a60763a-9912-49df-98c9-8bb813e6a885",
"sku": "SKU_MACA"
}
],
"success": true,
"errors": [],
"traceKey": "d00525ff-f58c-41ee-8849-4e598404d1c7"
}
O endpoint responsável por criar um link de pagamentos.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
amount | int | Condicional | Valor a ser cobrado. Obrigatório se o checkout / link de pagamento não possui produto(s). |
orderCode | string | Não | Código ou descrição enviado pelo lojista pra identificar o link de pagamento/checkout. |
description | string | Não | Descrição do checkout / link de pagamento. |
customer | object | Condicional | Dados do comprador. Obrigatório se o customerId não estiver presente. |
customer.name | string | Sim | Nome completo do comprador. |
customer.email | string | Sim | E-mail do comprador. |
customer.entityType | entityType | Sim | Se é pessoa física ou jurídica. . |
customer.documentType | documentType | Sim | Tipo do documento do comprador. . |
customer.document | string | Sim | Documento do comprador. |
customer.birthday | date | Não | Data de nascimento do comprador. |
customer.gender | Gender | Não | Gênero do comprador. . |
customer.phone | object | Sim | Telefone do comprador. |
customer.phone.countryCode | string | Sim | Código do país. |
customer.phone.areaCode | string | Sim | Código de área. |
customer.phone.number | string | Sim | Número do Telefone. |
customer.phone.type | PhoneType | Sim | Tipo do telefone. |
customer.address | object | Sim | Endereço do comprador. |
customer.address.street | string | Sim | Rua. |
customer.address.number | string | Sim | Número. |
customer.address.neighborhood | string | Sim | Bairro. |
customer.address.city | string | Sim | Cidade. |
customer.address.state | string | Sim | Estado. |
customer.address.country | string | Sim | País. |
customer.address.zipCode | string | Sim | CEP. |
customer.address.complement | string | Sim | Complemento. |
customerId | string | Condicional | ID do comprador. Obrigatório se o customer não estiver presente e preenchido. |
products | string[] | Não | ID dos produtos vendidos no checkout / link de pagamentos. |
emailNotification | string | Não | E-mail do comprador. Se preenchido, será enviado link para pagamento por e-mail. |
phoneNotification | string | Não | Telefone do comprador. Se preenchido, será enviado link para pagamento por SMS. |
paymentSupportedTypes | int[] | Não | ipos de pagamento suportados no checkout. O comprador só poderá pagar ou optar por um dos meios de pagamentos descritos aqui. |
discount | int | Não | Desconto no pagamento em centavos. |
shippingAmount | int | Não | Valor do frete em centavos. |
hostUrl | string | Não | URL de origem do link de pagamento e responsável por inserir Logo e Cor no e-mail. (Necessário para inserir url no botão de pagar do e-mail) |
shippingAddress | Address | Não | Endereço de entrega dos produtos. |
shippingAddress.street | string | Sim | Rua. |
shippingAddress.number | string | Sim | Número. |
shippingAddress.neighborhood | string | Sim | Bairro. |
shippingAddress.city | string | Sim | Cidade. |
shippingAddress.state | string | Sim | Estado. |
shippingAddress.country | string | Sim | País. |
shippingAddress.zipCode | string | Sim | CEP. |
shippingAddress.complement | string | Sim | Complemento. |
newProducts | NewProducts | Não | Produtos a serem cadastrados e vendidos no checkout / link de pagamentos. Importante: Os produtos nesse objeto também podem já ter sido cadastrados, porém seus IDs são desconhecidos. Nesse caso, a estrutura do produto deve ser reenviada utilizando o SKU original. |
newProducts.merchantId | string | Sim | ID da loja dona dos produtos cadastrados. |
newProducts.products | Product[] | Sim | Informação dos produtos cadastrados. |
newProducts.products.name | string | Sim | Nome do produto, campo livre. |
newProducts.products.description | string | Não | Descrição do produto, campo livre. |
newProducts.products.imagesRef | string[] | Não | URLs de Imagens relacionados ao produto, string deve ser URL válida. |
newProducts.products.amount | string | Sim | Valor do produto em centavos. |
newProducts.products.sku | string | Sim | Identificador único do produto na loja. Não é permitido valor duplicado. |
newProducts.products.isActive | bool | Não | Se o produto está disponível na loja. Default false . |
expiration | date | Não | Data de expiração do checkout / link de pagamento. Valor default próximo dia (+ 24 horas). |
maxInstallmentNumber | int | Não | Número máximo de parcelas suportadas pelo checkout / link de pagamentos. Valor default 12. |
minInstallmentAmount | int | Não | Valor mínimo por parcela. Valor default ilimitado. |
limitApprovedCharges | int | Não | Número limite de transações aprovadas para o checkout / link de pagamentos. Valor default ilimitado. |
primaryColor | string | Não | RGB da cor primária da loja. Utilizado para customizar o tema do e-mail com o link para pagamento. |
secondaryColor | string | Não | RGB da cor secundária da loja. Utilizado para customizar o tema do e-mail com o link para pagamento. |
installmentNumber | int | Não | Número exato de parcelas suportado pelo checkout / link de pagamentos. Se esse valor for recebido, maxInstallmentNumber é ignorado. Se não for enviado, será considerado apenas o maxInstallmentNumber . |
limitDeniedCharges | int | Não | Número limite de transações negadas para o checkout / link de pagamentos. Valor default ilimitado. |
customTemplate | string | Não | Identificador do layout a ser exibido na URL do checkout / link de pagamentos. Se não for enviado, será usado o template default. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
id | string | ID do checkout / link de pagamento criado. |
smartCheckoutUrl | string | URI que deverá ser utilizada em conjunto com uma URL base para acessar a tela de pagamentos. |
products | Product[] | Lista de produtos criados, se houve algum novo produto na criação do checkout / link de pagamento. |
products.name | string | Nome do produto, campo livre. |
products.description | string | Descrição do produto, campo livre. |
products.imagesRef | string[] | URLs de Imagens relacionados ao produto, string deve ser URL válida. |
products.amount | string | Valor do produto em centavos. |
products.sku | string | Identificador único do produto na loja. Não é permitido valor duplicado. |
products.isActive | bool | Se o produto está disponível na loja. Default false . |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
errors.errorCode | int | Código do erro. |
errors.message | string | Mensagem para identificar qual foi o erro retornado. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token. |
BODY Raw
Plano
"planId": "932168be-46b8-45d3-80f1-45cdd0cd7d6a",
"customer": {
"name": "Jorge Filipe",
"email": "jorginho.felps@email.com.br",
"document": "01234567891",
"phone": {
"countryCode": "+55",
"areaCode": "21",
"number": "999999999",
"type": 5
}
}
}
Valor Avulso
"amount": 1000,
"description": "Descrição do Link",
"emailNotification": "jorginho.felps@email.com.br",
"phoneNotification": "21999999999"
}
Produtos
"emailNotification": "jorginho.felps@email.com.br",
"phoneNotification": "21999999999",
"newProducts": {
"merchantId": "e4a78487-ac6d-4d18-8312-934399d70616",
"products": [
{
"name": "Maçã",
"amount": 500,
"sku": "SKU_MACA",
"isActive": true
}
]
}
}
GET /smartcheckout/{smartcheckoutId}/detail
Versão v1.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_PORTAL}}/v1/smartcheckout/{{smartCheckoutId}}/detail")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["MerchantId"] = "{{merchantId}}"
request[""] = ""
request["Authorization"] = "Bearer {{accessToken}}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_PORTAL}}/v1/smartcheckout/{{smartCheckoutId}}/detail"
payload={}
headers = {
'MerchantId': '{{merchantId}}',
'': '',
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
curl --location -g --request GET '{{ENDPOINT_PORTAL}}/v1/smartcheckout/{{smartCheckoutId}}/detail' \
--header 'MerchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("MerchantId", "{{merchantId}}");
myHeaders.append("", "");
myHeaders.append("Authorization", "Bearer {{accessToken}}");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("{{ENDPOINT_PORTAL}}/v1/smartcheckout/{{smartCheckoutId}}/detail", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"smartCheckout": {
"creationDate": "2021-06-18T16:16:25.956",
"id": "5c233e94-ea21-438b-95e5-ed38df758534",
"amount": 1000,
"description": "Descrição do Link",
"paymentSupportedTypes": [
"Credit"
],
"discount": 0,
"expiration": "2021-06-19T16:16:25.956",
"limitApprovedCharges": 1,
"type": 1,
"status": 1,
"limitDeniedCharges": 5,
"charges": []
},
"success": true,
"errors": [],
"traceKey": "77a5ce37-fb8e-46c8-92e9-761b1964af3b"
}
Endpoint responsável por obter os detalhes de um link de pagamento, incluindo informações de cada cobrança efetuada, se houver.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
smartcheckoutId | string | Sim | Número de identificação da cobrança. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
creationDate | string | Data de criação do smartCheckout. |
id | string | ID do smartCheckout. |
amount | int | O valor do smartCheckout. |
description | string | A descrição do smartCheckout. |
paymentSupportedTypes | string | Tipo de pagamentos. |
discount | int | O valor do disconto. |
shippingAmount | int | O valor do frete. |
maxInstallmentNumber | int | O número máximo de prestações. |
expiration | string | Data de expiração do smartCheckout. |
shippingAddress | Address | Endereço de entrega dos produtos. |
shippingAddress.street | string | Rua. |
shippingAddress.number | string | Número. |
shippingAddress.neighborhood | string | Bairro. |
shippingAddress.city | string | Cidade. |
shippingAddress.state | string | Estado. |
shippingAddress.country | string | País. |
shippingAddress.zipCode | string | CEP. |
shippingAddress.complement | string | Complemento. |
limitApprovedCharges | int | O limite de cobranças aprovadas. |
productsDetail | ProductDetail | Detalhes dos produtos. |
productsDetail.amount | int | O valor do produto. |
productsDetail.name | string | Nome do produto. |
productsDetail.quantity | int | A quantidade de produtos. |
productsDetail.id | int | ID do produto. |
productsDetail.sku | string | É um código identificador do produto que pode ser usado pela loja pra identificar em seu próprio sistema. |
type | int | Tipo de smartCheckout. . |
status | int | Status do smartCheckout. |
limitDeniedCharges | int | O limite de cobranças negadas. |
charges | array | Cobranças do smartCheckout. |
charges.id | string | O ID da cobrança. |
charges.addedAtUtc | string | A data de adição da cobrança. |
charges.nsu | string | O número da transação. |
charges.chargeStatus | int | Indica o status da cobrança. |
charges.transactions | array | Transações da cobrança. |
charges.transactions.card | array | O cartão utilizado na transação. |
charges.transactions.card.firstSixDigits | string | Os 6 primeiros dígitos do cartão. |
charges.transactions.card.lasFourDigits | string | Os 4 últimos dígitos do cartão. |
charges.transactions.card.brandName | string | O nome da bandeira do cartão. |
charges.transactions.card.cardHolderName | string | O nome do títular impresso na frente do cartão. |
charges.transactions.card.cardHolderDocument | string | O documento do títular do cartão. |
charges.transactions.amount | int | O valor da transação. |
charges.transactions.transactionId | string | O ID da transação. |
charges.transactions.transactionsStatus | int | Indica o status da transação. |
charges.transactions.paymentType | int | Indica o tipo de pagamento da transação. |
charges.transactions.installmentNumber | int | Quantidade de parcelas. Só pode ser maior que 1 se o tipo de transação for crédito. |
charges.transactions.acquirerId | int | O ID da adquirente. |
charges.transactions.bankIssuerId | int | O ID do banco. |
charges.transactions.creationDateTime | string | A data de criação da transação. |
charges.transactions.captureDateTime | string | A data de captura da transação. |
customer | Customer | O cliente do smartCheckout. |
customer.id | string | ID do cliente. |
customer.name | string | O nome do cliente. |
customer.email | string | O e-mail do cliente. |
customer.document | string | O documento do cliente. |
customer.documentType | string | O tipo do documento. . |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
errors.errorCode | int | Código do erro. |
errors.message | string | Mensagem para identificar qual foi o erro retornado. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | Use o Merchant Token para gerar o accessToken do ENDPOINT_PORTAL. |
MerchantId | {{merchantId}} |
-- | Número de identificação da loja. |
DELETE /smartcheckout/{smartcheckoutId}
Versão v1.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_PORTAL}}/v1/smartcheckout/{{smartcheckoutId}}")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["merchantId"] = "{{merchantId}}"
request["Authorization"] = "Bearer {{accessToken}}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_PORTAL}}/v1/smartcheckout/{{smartcheckoutId}}"
payload={}
headers = {
'merchantId': '{{merchantId}}',
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("DELETE", url, headers=headers, data=payload)
print(response.text)
curl --location -g --request DELETE '{{ENDPOINT_PORTAL}}/v1/smartcheckout/{{smartcheckoutId}}' \
--header 'merchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("merchantId", "{{merchantId}}");
myHeaders.append("Authorization", "Bearer {{accessToken}}");
var requestOptions = {
method: 'DELETE',
headers: myHeaders,
redirect: 'follow'
};
fetch("{{ENDPOINT_PORTAL}}/v1/smartcheckout/{{smartcheckoutId}}", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"success": true,
"errors": [],
"traceKey": "587c72cf-a761-599f-989b-7e46b21204fa"
}
Endpoint responsável por deletar um link de pagamento.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
smartcheckoutId | string | Sim | Número de identificação da cobrança. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
errors.errorCode | int | Código do erro. |
errors.message | string | Mensagem para identificar qual foi o erro retornado. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | Use o Merchant Token para gerar o accessToken do ENDPOINT_PORTAL. |
MerchantId | {{merchantId}} |
-- | Número de identificação da loja. |
GET /smartcheckout
Versão v1.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_PORTAL}}/v1/smartcheckout?startDate=2020-09-27&endDate=2021-09-29&type=1&status=1&pageSize=10¤tPage=1")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["MerchantId"] = "{{merchantId}}"
request["Authorization"] = "Bearer {{accessToken}}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_PORTAL}}/v1/smartcheckout?startDate=2020-09-27&endDate=2021-09-29&type=1&status=1&pageSize=10¤tPage=1"
payload={}
headers = {
'MerchantId': '{{merchantId}}',
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
curl --location --request GET '{{ENDPOINT_PORTAL}}/v1/smartcheckout?startDate=2020-09-27&endDate=2021-09-29&type=1&status=1&pageSize=10¤tPage=1' \
--header 'MerchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("MerchantId", "{{merchantId}}");
myHeaders.append("Authorization", "Bearer {{accessToken}}");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("{{ENDPOINT_PORTAL}}/v1/smartcheckout?startDate=2020-09-27&endDate=2021-09-29&type=1&status=1&pageSize=10¤tPage=1", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"smartcheckouts": [
{
"id": "5c700232-c987-4a3a-bb99-c8286c20324b",
"amount": 999,
"creationDate": "2021-06-01 15:00:44Z",
"expiration": "2021-06-02 15:00:44Z",
"status": 101,
"statusDescription": "Expirado pelo limite de tempo"
}
],
"total": 1,
"success": true,
"errors": [],
"traceKey": "300f7c93-2cc5-7893-ad52-1b9151b345e2"
}
Endpoint responsável por obter a lista de checkouts, por data, status e/ou tipo
🚧OBS: Se não for passado data e status a consulta irá trazer os links de pagamento com data de expiração maior que o dia atual.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
startDate | string | Não | A data inicial da consulta |
endDate | string | Não | A data final da consulta |
type | int | Sim | O tipo de smartCheckout |
status | int | Não | O status de smartCheckout |
pageSize | int | Sim | Quantidade de items por pagina de consulta |
currentPage | int | Sim | O número da página atual da consulta |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
id | string | O número de identificação do smartCheckout |
amount | int | A valor do smartCheckout |
creationDate | string | Data de criação do smartCheckout |
expiration | string | Data de expiração do smartCheckout |
status | int | O status de smartCheckout |
statusDescription | string | Descrição do status. |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
errors.errorCode | int | Código do erro. |
errors.message | string | Mensagem para identificar qual foi o erro retornado. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | Use o Merchant Token para gerar o accessToken do ENDPOINT_PORTAL. |
MerchantId | {{merchantId}} |
-- | Número de identificação da loja. |
CONCILIAÇÃO
Conciliação é o processo de verificação das transações feitas, com as processadas por uma adquirente. Esse procedimento é importante para garantir que os recebíveis estão de acordo com o esperado, evitando prejuízo em caso de taxas mal cadastradas ou pagamentos errados por parte da adquirente.
Para que a conciliação seja feita com sucesso, é importante a criação das taxas negociadas com a adquirente. É através dessas taxas que a é capaz de verificar se os pagamentos estão sendo feitos corretamente.
Também é possível fazer a conciliação bancária, que, através do upload de arquivos OFX, faz o batimento da transação efetuada no gateway com o recebido da adquirente e o recebido na conta bancária.
Taxas da Conciliação
A onde é definido as taxas transacionais e taxas de antecipação separados por adquirente, bandeira e tipo de pagamento, como: Débito, Crédito e Crédito Parcelado.
POST /TaxPlan
Versão v1.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_RECONCILIATION}}/v1/TaxPlan")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer {{accessToken}}"
request.body = "{\n \"acquirer\": 999,\n \"clientId\": \"24754f0a-5419-4493-a0fa-620807e392a7\",\n \"merchantId\": \"{{merchantId}}\",\n \"isActive\": true,\n \"taxes\": [\n {\n \"isActive\": true,\n \"cardBrand\": 1,\n \"paymentType\": 2,\n \"installmentMin\": 1,\n \"installmentMax\": 12,\n \"anticipationTax\": 100,\n \"transactionalTax\": 100,\n \"isInInstallment\": true\n }\n ]\n}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_RECONCILIATION}}/v1/TaxPlan"
payload="{\n \"acquirer\": 999,\n \"clientId\": \"24754f0a-5419-4493-a0fa-620807e392a7\",\n \"merchantId\": \"{{merchantId}}\",\n \"isActive\": true,\n \"taxes\": [\n {\n \"isActive\": true,\n \"cardBrand\": 1,\n \"paymentType\": 2,\n \"installmentMin\": 1,\n \"installmentMax\": 12,\n \"anticipationTax\": 100,\n \"transactionalTax\": 100,\n \"isInInstallment\": true\n }\n ]\n}"
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
curl --location --request POST '{{ENDPOINT_RECONCILIATION}}/v1/TaxPlan' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--data-raw '{
"acquirer": 999,
"clientId": "24754f0a-5419-4493-a0fa-620807e392a7",
"merchantId": "{{merchantId}}",
"isActive": true,
"taxes": [
{
"isActive": true,
"cardBrand": 1,
"paymentType": 2,
"installmentMin": 1,
"installmentMax": 12,
"anticipationTax": 2,
"transactionalTax": 2,
"isInInstallment": true
}
]
}'
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Authorization", "Bearer {{accessToken}}");
var raw = JSON.stringify({"acquirer":999,"clientId":"24754f0a-5419-4493-a0fa-620807e392a7","merchantId":"{{merchantId}}","isActive":true,"taxes":[{"isActive":true,"cardBrand":1,"paymentType":2,"installmentMin":1,"installmentMax":12,"anticipationTax":100,"transactionalTax":100,"isInInstallment":true}]});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("{{ENDPOINT_RECONCILIATION}}/v1/TaxPlan", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"taxPlanEntity": {
"taxes": [
{
"paymentType": "Credit",
"isInInstallment": true,
"installmentRange": {
"minimum": 1,
"maximum": 12
},
"taxPercentage": 2.0,
"cardBrand": "Visa",
"priority": 1,
"anticipationTax": 2.0,
"isActive": true,
"id": "06019bbb-0d70-43d6-8fd5-8273a01ef63a",
"addedAtUtc": "2021-06-18T17:36:35.2392904Z",
"version": 1
}
],
"clientId": "24754f0a-5419-4493-a0fa-620807e392a7",
"acquirer": "Simulator",
"merchantId": "57eb9084-ec20-4b0e-85d6-22cf9c35a898",
"aditumProduct": "Undefined",
"receivableMode": "Undefined",
"isActive": true,
"id": "db9d1228-a87a-4a20-ac7c-834c0cbbb6e8",
"addedAtUtc": "2021-06-18T17:36:35.2316015Z",
"version": 1
},
"success": true,
"errors": [],
"traceKey": "9580e8e7-cf6e-4eb9-b895-e14455f93db3"
}
Endpoint responsável por criar uma nova taxa de conciliação.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
acquirer | int | Sim | O ID da adquirente. . |
clientId | string | Não | O ID do cliente. |
merchantId | string | Não | O ID do comerciante. |
isActive | bool | Sim | Define se o plano está ativo ou não. |
taxes | object | Não | A lista de taxas. |
taxes.isActive | bool | Não | Define se taxa está ativo ou não. |
taxes.cardBrand | int | Não | A bandeira do cartão à qual o imposto se aplica. . |
taxes.paymentType | int | Não | Tipo de transação. . |
taxes.installmentMin | int | Não | O valor mínimo de prestação. |
taxes.installmentMax | int | Não | O valor máximo de prestação. |
taxes.anticipationTax | int | Não | O valor da taxa de antecipação. |
taxes.transactionalTax | int | Não | O valor da taxa de transação. |
taxes.isInInstallment | bool | Não | Define se está parcelando ou não. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
clientId | string | O ID do cliente. |
acquirer | string | O nome da adquirente. |
merchantId | string | O ID do comerciante. |
taxes | object | As taxas de um plano de taxa. |
taxes.paymentType | string | Tipo de transação. |
taxes.isInIstallment | bool | Indica se está parcelando ou não. |
taxes.installmentRange | array | Indica faixa de parcelamento, em um crédito tributário, de 2 a 6x ou de 7 a 12x. |
taxes.taxPercentage | number | O valor da taxa em porcentagem. |
taxes.cardBrand | string | O nome da bandeira. |
taxes.priority | int | O nível de prioridade. |
taxes.anticipationTax | number | O valor da taxa de antecipação. |
taxes.isActive | bool | Indica se a taxa está ativa ou não. |
taxes.id | string | O ID da taxa. |
taxes.addedAtUtc | string | A data de adição da taxa. |
taxes.version | int | O número da versão da taxa. |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token. |
BODY Raw
"acquirer": 999,
"clientId": "24754f0a-5419-4493-a0fa-620807e392a7",
"merchantId": "{{MerchantId}}",
"isActive": true,
"taxes": [
{
"isActive": true,
"cardBrand": 1,
"paymentType": 2,
"installmentMin": 1,
"installmentMax": 12,
"anticipationTax": 2,
"transactionalTax": 2,
"isInInstallment": true
}
]
}
GET /TaxPlan
Versão v1.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_RECONCILIATION}}/v1/TaxPlan?acquirerCode={{acquirerCode}}&cardBrand={{cardBrand}}")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["MerchantId"] = "{{merchantId}}"
request["Authorization"] = "Bearer {{accessToken}}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_RECONCILIATION}}/v1/TaxPlan?acquirerCode={{acquirerCode}}&cardBrand={{cardBrand}}"
payload={}
headers = {
'MerchantId': '{{merchantId}}',
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
curl --location -g --request GET '{{ENDPOINT_RECONCILIATION}}/v1/TaxPlan?acquirerCode={{acquirerCode}}&cardBrand={{cardBrand}}' \
--header 'MerchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("MerchantId", "{{merchantId}}");
myHeaders.append("Authorization", "Bearer {{accessToken}}");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("{{ENDPOINT_RECONCILIATION}}/v1/TaxPlan?acquirerCode={{acquirerCode}}&cardBrand={{cardBrand}}", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"listTaxPlan": [
{
"paymentType": "Credit",
"installmentMin": 1,
"installmentMax": 12,
"isInInstallment": true,
"taxes": [
{
"id": "06019aaa-0d70-43d6-8fd5-8273a01ef63a",
"merchantId": "57eb9084-ec20-4b0e-85d6-22cf9c35a898",
"acquirer": "Simulator",
"cardBrand": "Visa",
"anticipationTax": 2.0,
"transactionalTax": 2.0,
"isActive": true
}
]
}
],
"success": true,
"errors": [],
"traceKey": "c197d2d9-3f05-48fe-ac1b-9d366f2d157c"
}
Endpoint responsável por obter as taxas da conciliação de acordo com adquirente e bandeira do cartão.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
acquirerCode | int | Sim | O ID da adquirente. |
cardBrand | int | Sim | A bandeira do cartão à qual o imposto se aplica. . |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
paymentType | string | Tipo de transação. |
installmentMin | int | O valor mínimo de parcelas. |
installmentMax | int | O valor máximo de parcelas. |
isInIstallment | bool | Indica se está parcelando ou não. |
taxes.id | string | O ID da taxa. |
taxes.merchantId | string | O ID do comerciante. |
taxes.acquirer | string | O nome da adquirente. |
taxes.cardBrand | string | O nome da bandeira. |
taxes.anticipationTax | number | O valor da taxa de antecipação. |
taxes.transactionalTax | number | O valor da taxa de transação. |
taxes.isActive | bool | Indica se a taxa está ativa ou não. |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token. |
PARAMS | - |
---|---|
acquirerCode | {{acquirerCode}} |
-- | O número de identificação da adquirente. |
cardBrand | {{cardBrand}} |
-- | O número de identificação da bandeira do cartão. |
PATCH /TaxPlan
Versão v1.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINTE_RECONCILIATION}}/v1/TaxPlan")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n \"taxId\": \"06019aaa-0d70-43d6-8fd5-8273a01ef63a\",\r\n \"anticipationTax\": 2,\r\n \"transactionalTax\": 2\r\n}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINTE_RECONCILIATION}}/v1/TaxPlan"
payload="{\r\n \"taxId\": \"06019aaa-0d70-43d6-8fd5-8273a01ef63a\",\r\n \"anticipationTax\": 2,\r\n \"transactionalTax\": 2\r\n}"
headers = {
'Authorization': 'Bearer {{accessToken}}',
'Content-Type': 'application/json'
}
response = requests.request("PATCH", url, headers=headers, data=payload)
print(response.text)
curl --location --request PATCH '{{ENDPOINTE_RECONCILIATION}}/v1/TaxPlan' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"taxId": "06019aaa-0d70-43d6-8fd5-8273a01ef63a",
"anticipationTax": 2,
"transactionalTax": 2
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({"taxId":"06019aaa-0d70-43d6-8fd5-8273a01ef63a","anticipationTax":2,"transactionalTax":2});
var requestOptions = {
method: 'PATCH',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("{{ENDPOINTE_RECONCILIATION}}/v1/TaxPlan", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"taxPlanUpdated": {
"taxes": [
{
"paymentType": "Credit",
"isInInstallment": true,
"installmentRange": {
"minimum": 1,
"maximum": 12
},
"taxPercentage": 2.0,
"cardBrand": "Visa",
"priority": 1,
"anticipationTax": 2.0,
"isActive": true,
"id": "06019ccc-0d70-43d6-8fd5-8273a01ef63a",
"addedAtUtc": "2021-06-18T17:36:35.239",
"version": 1
}
],
"clientId": "24754f0a-5419-4493-a0fa-620807e392a7",
"acquirer": "Simulator",
"merchantId": "57eb9084-ec20-4b0e-85d6-22cf9c35a898",
"aditumProduct": "Undefined",
"receivableMode": "Undefined",
"isActive": true,
"id": "db9d1229-a87b-4a20-ac7c-834c0cbbb6e8",
"addedAtUtc": "2021-06-18T17:36:35.231",
"version": 1
},
"success": true,
"errors": [],
"traceKey": "6f6b3624-e7ac-4fe0-a580-14544d8dc3c7"
}
O Endpoint responsável por atualizar os valores de antecipação e/ou transação de uma taxa.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
taxId | string | Sim | O ID da taxa. |
anticipationTax | number | Sim | O valor da taxa de antecipação. |
transactionalTax | number | Não | O valor da taxa da transação. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
clientId | string | O ID do cliente. |
acquirer | string | O nome da adquirente. |
merchantId | string | O ID do comerciante. |
taxes | object | As taxas de um plano de taxa. |
taxes.paymentType | string | Tipo de transação. |
taxes.isInIstallment | bool | Indica se está parcelando ou não. |
taxes.installmentRange | array | Indica faixa de parcelamento, em um crédito tributário, de 2 a 6x ou de 7 a 12x. |
taxes.taxPercentage | number | O valor da taxa em porcentagem. |
taxes.cardBrand | string | O nome da bandeira. |
taxes.priority | int | O nível de prioridade. |
taxes.anticipationTax | number | O valor da taxa de antecipação. |
taxes.isActive | bool | Indica se a taxa está ativa ou não. |
taxes | array | Os dados da taxa. |
taxes.id | string | O ID da taxa. |
taxes.addedAtUtc | string | A data de adição da taxa. |
taxes.version | int | O número da versão da taxa. |
isActive | bool | Indica se o plano de taxas está ativo ou não. |
id | string | O ID do plano de taxas. |
addedAtUtc | string | A data de adição do plano de taxas. |
version | int | O número da versão do plano de taxas. |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token. |
BODY Raw
"taxId": "06019aaa-0d70-43d6-8fd5-8273a01ef63a",
"anticipationTax": 1,
"transactionalTax": 2
}
DELETE /TaxPlan
Versão v1.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_RECONCILIATION}}/v1/TaxPlan?taxId={{taxId}}")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_RECONCILIATION}}/v1/TaxPlan?taxId={{taxId}}"
payload={}
headers = {
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("DELETE", url, headers=headers, data=payload)
print(response.text)
curl --location -g --request DELETE '{{ENDPOINT_RECONCILIATION}}/v1/TaxPlan?taxId={{taxId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
var requestOptions = {
method: 'DELETE',
headers: myHeaders,
redirect: 'follow'
};
fetch("{{ENDPOINT_RECONCILIATION}}/v1/TaxPlan?taxId={{taxId}}", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"taxDeleted": {
"paymentType": "Credit",
"isInInstallment": true,
"installmentRange": {
"minimum": 1,
"maximum": 12
},
"taxPercentage": 2.0,
"cardBrand": "Visa",
"priority": 1,
"anticipationTax": 2.0,
"isActive": false,
"id": "06019ccc-0d70-43d6-8fd5-8273a01ef63a",
"addedAtUtc": "2021-06-18T17:36:35.239",
"version": 1
},
"success": true,
"errors": [],
"traceKey": "9728268c-b204-4ab0-aa26-3da80dbc15dc"
}
O Endpoint responsável por deletar uma taxa pelo seu ID.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
taxId | string | Sim | O ID da taxa. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
paymentType | string | Tipo de transação. |
installmentMin | int | O valor mínimo de parcelas. |
installmentMax | int | O valor máximo de parcelas. |
isInIstallment | bool | Indica se está parcelando ou não. |
taxes.id | string | O ID da taxa. |
taxes.merchantId | string | O ID do comerciante. |
taxes.acquirer | string | O nome da adquirente. |
taxes.cardBrand | string | O nome da bandeira. |
taxes.anticipationTax | number | O valor da taxa de antecipação. |
taxes.transactionalTax | number | O valor da taxa de transação. |
taxes.isActive | bool | Indica se a taxa está ativa ou não. |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token. |
PARAMS | - |
---|---|
taxId | {{taxId}} |
-- | O número identificador da taxa. |
Ajustes
São valores que creditam ou debitam das transações do cliente, ou seja, se a adquirente pagou um valor menor que o esperado ela lança um ajuste de crédito com o valor restante fazendo essa correção do que deveria ser pago.
Os de débito são correções negativas, ou seja, é reduzido o valor total que seria recebido no dia. E isso pode ser proveniente de um Chargeback, Cancelamento ou até um pagamento a mais que a adquirente fez e viu que estava errado.
GET /Adjustments
Versão v1.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_RECONCILIATION}}/v1/Adjustments?merchantId={{MerchantId}}&startDate=2021-03-29%2000:00:00&endDate=2021-03-29%2023:59:59¤tPage=1&pageSize=10&type=2&reason=2")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["MerchantId"] = "{{merchantId}}"
request["Authorization"] = "Bearer {{accessToken}}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_RECONCILIATION}}/v1/Adjustments?merchantId={{MerchantId}}&startDate=2021-03-29%2000:00:00&endDate=2021-03-29%2023:59:59¤tPage=1&pageSize=10&type=2&reason=2"
payload={}
headers = {
'MerchantId': '{{merchantId}}',
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
curl --location --request GET '{{ENDPOINT_RECONCILIATION}}/v1/Adjustments?merchantId={{MerchantId}}&startDate=2021-03-29%2000:00:00&endDate=2021-03-29%2023:59:59¤tPage=1&pageSize=10&type=2&reason=2' \
--header 'MerchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("MerchantId", "{{merchantId}}");
myHeaders.append("Authorization", "Bearer {{accessToken}}");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("{{ENDPOINT_RECONCILIATION}}/v1/Adjustments?merchantId={{MerchantId}}&startDate=2021-03-29%2000:00:00&endDate=2021-03-29%2023:59:59¤tPage=1&pageSize=10&type=2&reason=2", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"adjustments": [],
"totalAdjustments": 0,
"success": true,
"errors": [],
"traceKey": "e7434015-2df9-4cc8-a5ef-4be47aafcd10"
}
O Endpoint responsável por obter ajustes de débito e chargebacks.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
startDate | string | Sim | A data inicial. |
endDate | string | Sim | A data final. |
type | int | Sim | Tipo de ajustes. |
merchantId | string | Sim | O ID do comerciante. |
pageSize | int | Sim | Quantidade de itens por página. |
currentPage | int | Sim | Página atual. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
adjustments | array | Detalha os ajustes. |
totalAdjusments | int | O número total de ajustes. |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token. |
merchantId | {{merchantId}} |
-- | O ID do comerciante. |
PARAMS | - |
---|---|
startDate | {{startDate}} |
-- | A data inicial que deseja filtrar. |
endDate | {{endDate}} |
-- | A data final que deseja filtrar. |
type | {{adjustmentType}} |
-- | O tipo de ajuste. |
reason | {{adjustmentReason}} |
-- | Motivo do ajuste. |
merchantId | {{merchantId}} |
-- | O ID do comerciante. |
pageSize | {{pageSize}} |
-- | A quantidade de itens por página. |
currentPage | {{currentPage}} |
-- | A página atual. |
Transação de Conciliação
As transações que podem ser reajustadas pela adquirente, no caso de cobrança indevida ou valor incorreto, onde pode ocorrer correções ou cancelamentos.
GET /Reconciliation
Versão v1.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_PORTAL}}/v1/Reconciliation?merchantId={{merchantId}}&startDate=2021-03-01T00:00:00%20%20%20%20%20%20%20%20&endDate=2021-04-01T00:00:00")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["merchantId"] = "{{merchantId}}"
request["Authorization"] = "Bearer {{accessToken}}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_PORTAL}}/v1/Reconciliation?merchantId={{merchantId}}&startDate=2021-03-01T00:00:00%20%20%20%20%20%20%20%20&endDate=2021-04-01T00:00:00"
payload={}
headers = {
'merchantId': '{{merchantId}}',
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
curl --location --request GET '{{ENDPOINT_PORTAL}}/v1/Reconciliation?merchantId={{merchantId}}&startDate=2021-03-01T00:00:00%20%20%20%20%20%20%20%20&endDate=2021-04-01T00:00:00' \
--header 'merchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("merchantId", "{{merchantId}}");
myHeaders.append("Authorization", "Bearer {{accessToken}}");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("{{ENDPOINT_PORTAL}}/v1/Reconciliation?merchantId={{merchantId}}&startDate=2021-03-01T00:00:00%20%20%20%20%20%20%20%20&endDate=2021-04-01T00:00:00", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"conciliations": [],
"canceledReconciliations": [],
"antecipatedReconciliations": [],
"creditAdjustments": [],
"debitAdjustments": [],
"totalAmountByDay": [],
"success": true,
"errors": [],
"traceKey": "string"
}
O Endpoint responsável por recuperar transações de uma data única.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
startDate | string | Sim | A data inicial. |
endDate | string | Sim | A data final. |
merchantId | string | Sim | O ID do comerciante. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
conciliations | array | transações de conciliação. |
canceledReconciliations | array | transações de conciliação canceladas. |
antecipatedReconciliations | array | transações de conciliação antecipadas. |
creditAdjustments | array | Ajustes de crédito. |
debitAdjustments | array | Ajustes de débito. |
totalAmountByDay | array | Quantia total do dia. |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | Use o Merchant Token para gerar o accessToken do ENDPOINT_PORTAL. |
merchantId | {{merchantId}} |
-- | O ID do comerciante. |
PARAMS | - |
---|---|
startDate | {{startDate}} |
-- | A data inicial que deseja filtrar. |
endDate | {{endDate}} |
-- | A data final que deseja filtrar. |
merchantId | {{merchantId}} |
-- | O ID do comerciante. |
GET /Reconciliation/Transactions
Versão v1.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_PORTAL}}/v1/Reconciliation/Transactions?merchantId={{merchantId}}&startDate=2021-03-29%2000:00:00%20%20%20%20%20%20%20%20&endDate=2021-03-29%2023:59:59%20%20%20%20%20%20%20%20&statusList[0]=1¤tPage=1%20%20%20%20%20%20%20%20&pageSize=10")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["merchantId"] = "{{merchantId}}"
request["Authorization"] = "Bearer {{accessToken}}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_PORTAL}}/v1/Reconciliation/Transactions?merchantId={{merchantId}}&startDate=2021-03-29%2000:00:00%20%20%20%20%20%20%20%20&endDate=2021-03-29%2023:59:59%20%20%20%20%20%20%20%20&statusList[0]=1¤tPage=1%20%20%20%20%20%20%20%20&pageSize=10"
payload={}
headers = {
'merchantId': '{{merchantId}}',
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
curl --location -g --request GET '{{ENDPOINT_PORTAL}}/v1/Reconciliation/Transactions?merchantId={{merchantToken}}&startDate=2021-03-29%2000:00:00%20%20%20%20%20%20%20%20&endDate=2021-03-29%2023:59:59%20%20%20%20%20%20%20%20&statusList[0]=1¤tPage=1%20%20%20%20%20%20%20%20&pageSize=10' \
--header 'merchantId: {{merchantToken}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("merchantId", "{{merchantId}}");
myHeaders.append("Authorization", "Bearer {{accessToken}}");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("{{ENDPOINT_PORTAL}}/v1/Reconciliation/Transactions?merchantId={{merchantId}}&startDate=2021-03-29%2000:00:00%20%20%20%20%20%20%20%20&endDate=2021-03-29%2023:59:59%20%20%20%20%20%20%20%20&statusList[0]=1¤tPage=1%20%20%20%20%20%20%20%20&pageSize=10", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"transactions": [],
"totalTransactions": 0,
"success": true,
"errors": [],
"traceKey": "string"
}
O Endpoint responsável por recuperar datas de vencimento de contas a receber.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
startDate | string | Sim | A data inicial. |
endDate | string | Sim | A data final. |
merchantId | string | Sim | O ID do comerciante. |
statusList[0] | array | Sim | Lista de status Multiselect. |
pageSize | int | Sim | Quantidade de itens por página. |
currentPage | int | Sim | Página atual. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
transactions | array | Dados das transações. |
totalTransactions | int | Quantidade de transações obtidas. |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | Use o Merchant Token para gerar o accessToken do ENDPOINT_PORTAL. |
merchantId | {{merchantId}} |
-- | O ID do comerciante. |
PARAMS | - |
---|---|
startDate | {{startDate}} |
-- | A data inicial que deseja filtrar. |
endDate | {{endDate}} |
-- | A data final que deseja filtrar. |
merchantId | {{merchantId}} |
-- | O ID do comerciante. |
statusList | statusList[0]=int |
-- | Multiselect de status para filtrar as transações. |
pageSize | {{pageSize}} |
-- | A quantidade de itens por página. |
currentPage | {{currentPage}} |
-- | A página atual. |
OfxStatement
O OFX(Open Financial Exchange) é um tipo de arquivo de extrato sobre as finanças de sua empresa. O OFX foi criado a fim de facilitar a troca de informações entre instituições.
Esse arquivo pode ser exportado do internet banking e tem como finalidade relacionar o extrato bancário com os registros da conciliação, a fim de confirmar que os recebimentos estão corretos.
GET /OfxStatement
Versão v1.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_PORTAL}}/v1/OfxStatement?startDate=2021-03-23%2000:00:00&endDate=2021-03-23%2023:59:59")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["merchantId"] = "{{merchantId}}"
request["Authorization"] = "Bearer {{accessToken}}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_PORTAL}}/v1/OfxStatement?startDate=2021-03-23%2000:00:00&endDate=2021-03-23%2023:59:59"
payload={}
headers = {
'merchantId': '{{merchantId}}',
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
curl --location --request GET '{{ENDPOINT_PORTAL}}/v1/OfxStatement?startDate=2021-03-23%2000:00:00&endDate=2021-03-23%2023:59:59' \
--header 'merchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("merchantId", "{{merchantId}}");
myHeaders.append("Authorization", "Bearer {{accessToken}}");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("{{ENDPOINT_PORTAL}}/v1/OfxStatement?startDate=2021-03-23%2000:00:00&endDate=2021-03-23%2023:59:59", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"ofxStatements": [
{
"id": "string",
"type": "string",
"transactionDate": "2020-12-01T00:00:00",
"amount": 0.0,
"statementId": "string",
"description": "string",
"bankId": "string",
"accountId": "string",
"isActive": true
}
],
"success": true,
"errors": [],
"traceKey": "string"
}
Endpoint responsável por recuperar as transações em extrato ofx.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
startDate | string | Sim | A data inicial. |
endDate | string | Sim | A data final. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
ofxStatements | array | Representa uma declaração no banco de dados. |
ofxStatements.id | string | ID único da declaração OFX. |
ofxStatements.type | string | Tipo de declaração: DEBIT ou CREDIT. |
ofxStatements.transactionDate | string | Data da declaração em formato ISODate. |
ofxStatements.amount | double | Valor da declaração. |
ofxStatements.statementId | string | ID único da declaração. |
ofxStatements.description | string | Descrição da declaração. |
ofxStatements.bankId | string | ID único do banco relacionado. |
ofxStatements.accountId | string | ID único para a conta bancária relacionada. |
ofxStatements.isActive | bool | Indica se OFX esta ativa ou não. |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | Use o Merchant Token para gerar o accessToken do ENDPOINT_PORTAL. |
merchantId | {{merchantId}} |
-- | O ID do comerciante. |
PARAMS | - |
---|---|
startDate | {{startDate}} |
-- | A data inicial que deseja filtrar. |
endDate | {{endDate}} |
-- | A data final que deseja filtrar. |
PATCH /OfxStatement/{{ofxStatementId}}
Versão v1.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_PORTAL}}/v1/OfxStatement/{{ofxStatementId}}")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["merchantId"] = "{{merchantId}}"
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n \"clientDescription\": \"string\",\r\n \"reconciliationIds\": [\r\n \"string\"\r\n ]\r\n}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_PORTAL}}/v1/OfxStatement/{{ofxStatementId}}"
payload="{\r\n \"clientDescription\": \"string\",\r\n \"reconciliationIds\": [\r\n \"string\"\r\n ]\r\n}"
headers = {
'merchantId': '{{merchantId}}',
'Authorization': 'Bearer {{accessToken}}',
'Content-Type': 'application/json'
}
response = requests.request("PATCH", url, headers=headers, data=payload)
print(response.text)
curl --location -g --request PATCH '{{ENDPOINT_PORTAL}}/v1/OfxStatement/{{ofxStatementId}}' \
--header 'merchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"clientDescription": "string",
"reconciliationIds": [
"string"
]
}'
var myHeaders = new Headers();
myHeaders.append("merchantId", "{{merchantId}}");
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({"clientDescription":"string","reconciliationIds":["string"]});
var requestOptions = {
method: 'PATCH',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("{{ENDPOINT_PORTAL}}/v1/OfxStatement/{{ofxStatementId}}", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"ofxStatementUpdated": [
{
"id": "string",
"type": "string",
"transactionDate": "2020-12-01T00:00:00",
"amount": 0.0,
"statementId": "string",
"description": "string",
"bankId": "string",
"accountId": "string",
"isActive": true
}
],
"success": true,
"errors": [],
"traceKey": "string"
}
Endpoint responsável pela reconciliação de links com extrato de declaração ofx.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
ofxStatementId | string | Sim | ID único da declaração. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
ofxStatementUpdated | array | Representa a declaração atualizada no banco de dados. |
ofxStatements.id | string | ID único da declaração OFX. |
ofxStatements.type | string | Tipo de declaração: DEBIT ou CREDIT. |
ofxStatements.transactionDate | string | Data da declaração em formato ISODate. |
ofxStatements.amount | double | Valor da declaração. |
ofxStatements.statementId | string | ID único da declaração. |
ofxStatements.description | string | Descrição da declaração. |
ofxStatements.bankId | string | ID único do banco relacionado. |
ofxStatements.accountId | string | ID único para a conta bancária relacionada. |
ofxStatements.isActive | bool | Indica se OFX esta ativa ou não. |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token. |
merchantId | {{merchantId}} |
-- | O ID do comerciante. |
BODY raw
{
"clientDescription": "string",
"reconciliationIds": [
"string"
]
}
DELETE /OfxStatement/{{ofxStatementId}}
Versão v1.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_PORTAL}}/v1/OfxStatement/{{ofxStatementId}}")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["merchantId"] = "{{merchantId}}"
request["Authorization"] = "Bearer {{accessToken}}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_PORTAL}}/v1/OfxStatement/{{ofxStatementId}}"
payload={}
headers = {
'merchantId': '{{merchantId}}',
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("DELETE", url, headers=headers, data=payload)
print(response.text)
curl --location -g --request DELETE '{{ENDPOINT_PORTAL}}/v1/OfxStatement/{{ofxStatementId}}' \
--header 'merchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("merchantId", "{{merchantId}}");
myHeaders.append("Authorization", "Bearer {{accessToken}}");
var requestOptions = {
method: 'DELETE',
headers: myHeaders,
redirect: 'follow'
};
fetch("{{ENDPOINT_PORTAL}}/v1/OfxStatement/{{ofxStatementId}}", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"ofxStatementDeleted": [
{
"id": "string",
"type": "string",
"transactionDate": "2020-12-01T00:00:00",
"amount": 0.0,
"statementId": "string",
"description": "string",
"bankId": "string",
"accountId": "string",
"isActive": true
}
],
"success": true,
"errors": [],
"traceKey": "string"
}
Endpoint responsável pela exclusão da instrução ofx.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
ofxStatementId | string | Sim | ID único da declaração. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
ofxStatementDeleted | array | Representa a declaração atualizada no banco de dados. |
ofxStatements.id | string | ID único da declaração OFX. |
ofxStatements.type | string | Tipo de declaração: DEBIT ou CREDIT. |
ofxStatements.transactionDate | string | Data da declaração em formato ISODate. |
ofxStatements.amount | double | Valor da declaração. |
ofxStatements.statementId | string | ID único da declaração. |
ofxStatements.description | string | Descrição da declaração. |
ofxStatements.bankId | string | ID único do banco relacionado. |
ofxStatements.accountId | string | ID único para a conta bancária relacionada. |
ofxStatements.isActive | bool | Indica se OFX esta ativa ou não. |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | Use o Merchant Token para gerar o accessToken do ENDPOINT_PORTAL. |
merchantId | {{merchantId}} |
-- | O ID do comerciante. |
CHECKOUT
Checkout é a última etapa do processo de vendas em uma loja virtual. Nesse momento, o comprador já selecionou os produtos, inseriu informações referentes à frete (se houver entrega) e agora deseja pagar pelos produtos a serem adquiridos.
A diferença entre o checkout e o link de pagamentos é que no checkout, o comprador está autenticado em uma loja virtual. O link de pagamentos, por sua vez, é público e não necessita de autenticação. Por isso, no checkout é possível visualizar a wallet de cartões do comprador, enquanto no link de pagamentos isso não é possível.
Na , existem 3 formas principais de integração com o checkout:
Checkout transparente: para o cliente final, não existirá diferença visual entre a loja virtual e a página de inserção dos dados do cartão. Para isso, o integrador deve usar a nossa SDK de checkout transparente.
Checkout lightbox: aparecerá para o cliente final um modal white-label com os dados de input do cartão para pagamento.
Checkout redirect: o cliente final será redirecionado à uma página de checkout white-label da , onde a logo e cores do cliente serão usadas.
POST /smartcheckout Chechout
Versão v2.0
Requisição HTTP
Exemplo de requisição (
Plano
)
require "uri"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/smartcheckout")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n \"planId\": \"932168be-46b8-45d3-80f1-45cdd0cd7d6a\",\r\n \"customer\": {\r\n \"name\": \"Jorge Felipe\",\r\n \"email\": \"jorginho.felps@email.com.br\",\r\n \"document\": \"01234567891\",\r\n \"phone\": {\r\n \"countryCode\": \"+55\",\r\n \"areaCode\": \"21\",\r\n \"number\": \"999999999\",\r\n \"type\": 5\r\n }\r\n }\r\n}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_GATEWAY}}/v2/smartcheckout"
payload="{\r\n \"planId\": \"932168be-46b8-45d3-80f1-45cdd0cd7d6a\",\r\n \"customer\": {\r\n \"name\": \"Jorge Felipe\",\r\n \"email\": \"jorginho.felps@email.com.br\",\r\n \"document\": \"01234567891\",\r\n \"phone\": {\r\n \"countryCode\": \"+55\",\r\n \"areaCode\": \"21\",\r\n \"number\": \"999999999\",\r\n \"type\": 5\r\n }\r\n }\r\n}"
headers = {
'Authorization': 'Bearer {{accessToken}}',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
curl --location --request POST '{{ENDPOINT_GATEWAY}}/v2/smartcheckout' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"planId": "932168be-46b8-45d3-80f1-45cdd0cd7d6a",
"customer": {
"name": "Jorge Felipe",
"email": "jorginho.felps@email.com.br",
"document": "01234567891",
"phone": {
"countryCode": "+55",
"areaCode": "21",
"number": "999999999",
"type": 5
}
}
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({"planId":"932168be-46b8-45d3-80f1-45cdd0cd7d6a","customer":{"name":"Jorge Felipe","email":"jorginho.felps@email.com.br","document":"01234567891","phone":{"countryCode":"+55","areaCode":"21","number":"999999999","type":5}}});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/smartcheckout", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
Exemplo de requisição (
Valor Avulso
)
require "uri"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/smartcheckout")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n \"amount\": 1000,\r\n \"description\": \"Descrição do Link\",\r\n \"emailNotification\": \"jorginho.felps@email.com.br\",\r\n \"phoneNotification\": \"21999999999\"\r\n}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_GATEWAY}}/v2/smartcheckout"
payload="{\r\n \"amount\": 1000,\r\n \"description\": \"Descrição do Link\",\r\n \"emailNotification\": \"jorginho.felps@email.com.br\",\r\n \"phoneNotification\": \"21999999999\"\r\n}"
headers = {
'Authorization': 'Bearer {{accessToken}}',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
curl --location --request POST '{{ENDPOINT_GATEWAY}}/v2/smartcheckout' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"amount": 1000,
"description": "Descrição do Link",
"emailNotification": "jorginho.felps@email.com.br",
"phoneNotification": "21999999999"
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({"amount":1000,"description":"Descrição do Link","emailNotification":"jorginho.felps@email.com.br","phoneNotification":"21999999999"});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/smartcheckout", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
Exemplo de requisição (
Produtos
)
require "uri"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/smartcheckout")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n \"emailNotification\": \"jorginho.felps@email.com.br\",\r\n \"phoneNotification\": \"21999999999\",\r\n \"newProducts\": {\r\n \"merchantId\": \"e4a78487-ac6d-4d18-8312-934399d70616\",\r\n \"products\": [\r\n {\r\n \"name\": \"Maçã\",\r\n \"amount\": 500,\r\n \"sku\": \"SKU_MACA\",\r\n \"isActive\": true\r\n }\r\n ]\r\n }\r\n}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_GATEWAY}}/v2/smartcheckout"
payload="{\r\n \"emailNotification\": \"jorginho.felps@email.com.br\",\r\n \"phoneNotification\": \"21999999999\",\r\n \"newProducts\": {\r\n \"merchantId\": \"e4a78487-ac6d-4d18-8312-934399d70616\",\r\n \"products\": [\r\n {\r\n \"name\": \"Maçã\",\r\n \"amount\": 500,\r\n \"sku\": \"SKU_MACA\",\r\n \"isActive\": true\r\n }\r\n ]\r\n }\r\n}"
headers = {
'Authorization': 'Bearer {{accessToken}}',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
curl --location --request POST '{{ENDPOINT_GATEWAY}}/v2/smartcheckout' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"emailNotification": "jorginho.felps@email.com.br",
"phoneNotification": "21999999999",
"newProducts": {
"merchantId": "e4a78487-ac6d-4d18-8312-934399d70616",
"products": [
{
"name": "Maçã",
"amount": 500,
"sku": "SKU_MACA",
"isActive": true
}
]
}
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({"emailNotification":"jorginho.felps@email.com.br","phoneNotification":"21999999999","newProducts":{"merchantId":"e4a78487-ac6d-4d18-8312-934399d70616","products":[{"name":"Maçã","amount":500,"sku":"SKU_MACA","isActive":true}]}});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/smartcheckout", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
Resposta (
Plano
)
{
"id": "50025917-afac-4d16-9b5f-982840064591",
"smartCheckoutUrl": "/v2/checkout/50025917-afac-4d16-9b5f-982840064591?signinToken=eyJhbHciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MjQwMzIwOTQsImlzcyI6IkFkaXR1bSIsImF1ZCI6IndhbGxldCJ9.QzuLYDtGOcjwH6-jc7UFEHo_iTWqYVM9yvQfHirfNmw",
"success": true,
"errors": [],
"traceKey": "17139692-d012-441d-bb34-fa4007383ba2"
}
Resposta (
Valor Avulso
)
{
"id": "84e6e7c9-d56d-4418-bd82-cdbb92c0302a",
"smartCheckoutUrl": "/v2/checkout/84e6e7c9-d56d-4418-bd82-cdbb92c0302a?signinToken=eyJhbHciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MjQwMzE5MjQsImlzcyI6IkFkaXR1bSIsImF1ZCI6IndhbGxldCJ9.tlusUUQaRK8Fsnk_-EYJl05mr7IXhEnDTzmiptuKWaY",
"success": true,
"errors": [],
"traceKey": "f6c98b33-a433-4686-b463-5267d6aa73dd"
}
Resposta (
Produtos
)
{
"id": "2efa5041-3c12-47e7-bc89-d1b34cb806ab",
"smartCheckoutUrl": "/v2/checkout/2efa5041-3c12-47e7-bc89-d1b34cb806ab?signinToken=eyJhbHciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MjQwMzE3NzYsImlzcyI6IkFkaXR1bSIsImF1ZCI6IndhbGxldCJ9.RLXiLOu2fNVqErAilrfdh4lpY9OqxO38Y7WNBoUWEzY",
"products": [
{
"amount": 500,
"name": "Maçã",
"quantity": 1,
"id": "4a60763a-9912-49df-98c9-8bb813e6a885",
"sku": "SKU_MACA"
}
],
"success": true,
"errors": [],
"traceKey": "d00525ff-f58c-41ee-8849-4e598404d1c7"
}
O endpoint responsável por criar um checkout.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
amount | int | Condicional | Valor a ser cobrado. Obrigatório se o checkout / link de pagamento não possui produto(s). |
orderCode | string | Não | Código ou descrição enviado pelo lojista pra identificar o link de pagamento/checkout. |
description | string | Não | Descrição do checkout / link de pagamento. |
customer | object | Condicional | Dados do comprador. Obrigatório se o customerId não estiver presente. |
customer.name | string | Sim | Nome completo do comprador. |
customer.email | string | Sim | E-mail do comprador. |
customer.entityType | entityType | Sim | Se é pessoa física ou jurídica |
customer.documentType | documentType | Sim | Tipo do documento do comprador |
customer.document | string | Sim | Documento do comprador. |
customer.birthday | date | Não | Data de nascimento do comprador. |
customer.gender | Gender | Não | Gênero do comprador. |
customer.phone | object | Sim | Telefone do comprador. |
customer.phone.countryCode | string | Sim | Código do país. |
customer.phone.areaCode | string | Sim | Código de área. |
customer.phone.number | string | Sim | Número do Telefone. |
customer.phone.type | PhoneType | Sim | Tipo do telefone. |
customer.address | object | Sim | Endereço do comprador. |
customer.address.street | string | Sim | Rua. |
customer.address.number | string | Sim | Número. |
customer.address.neighborhood | string | Sim | Bairro. |
customer.address.city | string | Sim | Cidade. |
customer.address.state | string | Sim | Estado. |
customer.address.country | string | Sim | País. |
customer.address.zipCode | string | Sim | CEP. |
customer.address.complement | string | Sim | Complemento. |
customerId | string | Condicional | ID do comprador. Obrigatório se o customer não estiver presente e preenchido. |
products | string[] | Não | ID dos produtos vendidos no checkout / link de pagamentos. |
emailNotification | string | Não | E-mail do comprador. Se preenchido, será enviado link para pagamento por e-mail. |
phoneNotification | string | Não | Telefone do comprador. Se preenchido, será enviado link para pagamento por SMS. |
paymentSupportedTypes | int[] | Não | Tipos de pagamento suportados no checkout. O comprador só poderá pagar ou optar por um dos meios de pagamentos descritos aqui |
discount | int | Não | Desconto no pagamento em centavos. |
shippingAmount | int | Não | Valor do frete em centavos. |
hostUrl | string | Não | URL de origem do checkout e responsável por inserir Logo e Cor no e-mail. (Necessário para inserir url no botão de pagar do e-mail) |
shippingAddress | Address | Não | Endereço de entrega dos produtos. |
shippingAddress.street | string | Sim | Rua. |
shippingAddress.number | string | Sim | Número. |
shippingAddress.neighborhood | string | Sim | Bairro. |
shippingAddress.city | string | Sim | Cidade. |
shippingAddress.state | string | Sim | Estado. |
shippingAddress.country | string | Sim | País. |
shippingAddress.zipCode | string | Sim | CEP. |
shippingAddress.complement | string | Sim | Complemento. |
newProducts | NewProducts | Não | Produtos a serem cadastrados e vendidos no checkout / link de pagamentos. Importante: Os produtos nesse objeto também podem já ter sido cadastrados, porém seus IDs são desconhecidos. Nesse caso, a estrutura do produto deve ser reenviada utilizando o SKU original. |
newProducts.merchantId | string | Sim | ID da loja dona dos produtos cadastrados. |
newProducts.products | Product[] | Sim | Informação dos produtos cadastrados. |
newProducts.products.name | string | Sim | Nome do produto, campo livre. |
newProducts.products.description | string | Não | Descrição do produto, campo livre. |
newProducts.products.imagesRef | string[] | Não | URLs de Imagens relacionados ao produto, string deve ser URL válida. |
newProducts.products.amount | string | Sim | Valor do produto em centavos. |
newProducts.products.sku | string | Sim | Identificador único do produto na loja. Não é permitido valor duplicado. |
newProducts.products.isActive | bool | Não | Se o produto está disponível na loja. Default false . |
expiration | date | Não | Data de expiração do checkout / link de pagamento. Valor default próximo dia (+ 24 horas). |
maxInstallmentNumber | int | Não | Número máximo de parcelas suportadas pelo checkout / link de pagamentos. Valor default 12. |
minInstallmentAmount | int | Não | Valor mínimo por parcela. Valor default ilimitado. |
limitApprovedCharges | int | Não | Número limite de transações aprovadas para o checkout / link de pagamentos. Valor default ilimitado. |
primaryColor | string | Não | RGB da cor primária da loja. Utilizado para customizar o tema do e-mail com o link para pagamento. |
secondaryColor | string | Não | RGB da cor secundária da loja. Utilizado para customizar o tema do e-mail com o link para pagamento. |
installmentNumber | int | Não | Número exato de parcelas suportado pelo checkout / link de pagamentos. Se esse valor for recebido, maxInstallmentNumber é ignorado. Se não for enviado, será considerado apenas o maxInstallmentNumber . |
limitDeniedCharges | int | Não | Número limite de transações negadas para o checkout / link de pagamentos. Valor default ilimitado. |
customTemplate | string | Não | Identificador do layout a ser exibido na URL do checkout / link de pagamentos. Se não for enviado, será usado o template default. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
id | string | ID do checkout / link de pagamento criado. |
smartCheckoutUrl | string | URI que deverá ser utilizada em conjunto com uma URL base para acessar a tela de pagamentos. |
products | Product[] | Lista de produtos criados, se houve algum novo produto na criação do checkout / link de pagamento. |
products.name | string | Sim |
products.description | string | Não |
products.imagesRef | string[] | Não |
products.amount | string | Sim |
products.sku | string | Sim |
products.isActive | bool | Não |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
errors.errorCode | int | Não |
errors.message | string | Não |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token. |
BODY Raw
Plano
"planId": "932168be-46b8-45d3-80f1-45cdd0cd7d6a",
"customer": {
"name": "Jorge Felipe",
"email": "jorginho.felps@email.com.br",
"document": "01234567891",
"phone": {
"countryCode": "+55",
"areaCode": "21",
"number": "999999999",
"type": 5
}
}
}
Valor Avulso
"amount": 1000,
"description": "Descrição do Link",
"emailNotification": "jorginho.felps@email.com.br",
"phoneNotification": "21999999999"
}
Produtos
"emailNotification": "jorginho.felps@email.com.br",
"phoneNotification": "21999999999",
"newProducts": {
"merchantId": "e4a78487-ac6d-4d18-8312-934399d70616",
"products": [
{
"name": "Maçã",
"amount": 500,
"sku": "SKU_MACA",
"isActive": true
}
]
}
}
GET /smartcheckout/{smartcheckoutId}/detail Checkout
Versão v1.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_PORTAL}}/v1/smartcheckout/{{smartCheckoutId}}/detail")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["MerchantId"] = "{{merchantId}}"
request[""] = ""
request["Authorization"] = "Bearer {{accessToken}}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_PORTAL}}/v1/smartcheckout/{{smartCheckoutId}}/detail"
payload={}
headers = {
'MerchantId': '{{merchantId}}',
'': '',
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
curl --location -g --request GET '{{ENDPOINT_PORTAL}}/v1/smartcheckout/{{smartCheckoutId}}/detail' \
--header 'MerchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("MerchantId", "{{merchantId}}");
myHeaders.append("", "");
myHeaders.append("Authorization", "Bearer {{accessToken}}");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("{{ENDPOINT_PORTAL}}/v1/smartcheckout/{{smartCheckoutId}}/detail", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"smartCheckout": {
"creationDate": "2021-06-18T16:16:25.956",
"id": "5c233e94-ea21-438b-95e5-ed38df758534",
"amount": 1000,
"description": "Descrição do Link",
"paymentSupportedTypes": [
"Credit"
],
"discount": 0,
"expiration": "2021-06-19T16:16:25.956",
"limitApprovedCharges": 1,
"type": 1,
"status": 1,
"limitDeniedCharges": 5,
"charges": []
},
"success": true,
"errors": [],
"traceKey": "77a5ce37-fb8e-46c8-92e9-761b1964af3b"
}
Endpoint responsável por obter as informações sobre um link de pagamentos ou checkout, incluindo as cobranças efetuadas, se houver alguma.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
smartcheckoutId | string | Sim | Número de identificação da cobrança. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
creationDate | string | Data de criação do smartCheckout. |
id | string | ID do smartCheckout. |
amount | int | O valor do smartCheckout. |
description | string | A descrição do smartCheckout. |
paymentSupportedTypes | string | Tipo de pagamentos. . |
discount | int | O valor do disconto. |
shippingAmount | int | O valor do frete. |
maxInstallmentNumber | int | O número máximo de prestações. |
expiration | string | Data de expiração do smartCheckout. |
shippingAddress | Address | Endereço de entrega dos produtos. |
shippingAddress.street | string | Rua. |
shippingAddress.number | string | Número. |
shippingAddress.neighborhood | string | Bairro. |
shippingAddress.city | string | Cidade. |
shippingAddress.state | string | Estado. |
shippingAddress.country | string | País. |
shippingAddress.zipCode | string | CEP. |
shippingAddress.complement | string | Complemento. |
limitApprovedCharges | int | O limite de cobranças aprovadas. |
productsDetail | ProductDetail | Detalhes dos produtos. |
productsDetail.amount | int | O valor do produto. |
productsDetail.name | string | Nome do produto. |
productsDetail.quantity | int | A quantidade de produtos. |
productsDetail.id | int | ID do produto. |
productsDetail.sku | string | É um código identificador do produto que pode ser usado pela loja pra identificar em seu próprio sistema. |
type | int | Tipo de smartCheckOut. . |
status | int | Status do smartCheckout. |
limitDeniedCharges | int | O limite de cobranças negadas. |
charges | array | Cobranças do smartCheckout. |
charges.id | string | O ID da cobrança. |
charges.addedAtUtc | string | A data de adição da cobrança. |
charges.nsu | string | O número da transação. |
charges.chargeStatus | int | Indica o status da cobrança. |
charges.transactions | array | Transações da cobrança. |
charges.transactions.card | array | O cartão utilizado na transação. |
charges.transactions.card.firstSixDigits | string | Os 6 primeiros dígitos do cartão. |
charges.transactions.card.lasFourDigits | string | Os 4 últimos dígitos do cartão. |
charges.transactions.card.brandName | string | O nome da bandeira do cartão. |
charges.transactions.card.cardHolderName | string | O nome do títular impresso na frente do cartão. |
charges.transactions.card.cardHolderDocument | string | O documento do títular do cartão. |
charges.transactions.amount | int | O valor da transação. |
charges.transactions.transactionId | string | O ID da transação. |
charges.transactions.transactionsStatus | int | Indica o status da transação. |
charges.transactions.paymentType | int | Indica o tipo de pagamento da transação. |
charges.transactions.installmentNumber | int | Quantidade de parcelas. Só pode ser maior que 1 se o tipo de transação for crédito. |
charges.transactions.acquirerId | int | O ID da adquirente. |
charges.transactions.bankIssuerId | int | O ID do banco. |
charges.transactions.creationDateTime | string | A data de criação da transação. |
charges.transactions.captureDateTime | string | A data de captura da transação. |
customer | Customer | O cliente do smartCheckout. |
customer.id | string | ID do cliente. |
customer.name | string | O nome do cliente. |
customer.email | string | O e-mail do cliente. |
customer.document | string | O documento do cliente. |
customer.documentType | string | Tipo de documento. . |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
errors.errorCode | int | Código do erro. |
errors.message | string | Mensagem para identificar qual foi o erro retornado. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | Use o Merchant Token para gerar o accessToken do ENDPOINT_PORTAL. |
MerchantId | {{merchantId}} |
-- | Número de identificação da loja. |
SDK Checkout Transparente
Instalação Checkout Transparente
Atualmente é possível instalar o Checkout Transparente de duas formas, utilizando o CDN ou NPM.
NPM
Para instalar utilizando o pacote NPM do checkout transparente pode ser inserido em seu projeto utilizando o comando a seguir:
Desenvolvimento
Produção
Após utilizar o código, faça o seguinte:
Desenvolvimento
Produção
CDN
Para instalar utilizando CDN basta inserir o script do checkout transparente apontando para o local onde ele esta salvo.
Link | Ambiente |
---|---|
https://cdn.aditum.com.br/adt-transparent-v1.0.0.js | Produção |
https://cdn-dev.aditum.com.br/adt-transparent-v1.0.0.js | Desenvolvimento |
Logo após a instalação, utilizando uma das opções mostradas acima, estará disponível o objeto chamado AditumTransparent
e nele contém os métodos necessários para tokenizar o cartão.
Passo 1
A primeira coisa a se fazer é registrar as credenciais da loja em que vai ser criado o cartão tokenizado, chamando o método setCredentials
da SDK. Nesse método é necessário passar a MerchantCredential(CNPJ) e o MerchantToken dessa forma aqui:
Passo 2
Após adicionar as credenciais deve chamar o método:
Onde o bin é os 6 primeiros dígitos do cartão usado para identificar a bandeira, success é o callback que vamos chamar retornando a resposta com a bandeira então deve passar uma função para fazer esse tratamento e o error é o callback quando acontecer algum erro no processamento da requisição. Lembrando que success e error são funções callback então não esqueça de construir-los.
e
Caso deseje ver o retorno no console de seu navegador utilize console.log(body)
dentro das funções.
- Objeto de sucesso na response
"brand":"Visa"
}
- Objeto de erro na response
"errors": [{
"errorCode": 1,
"message": "Propriedade 'CardBin' está ausente",
"field": "CardBin"v
}]
}
Passo 3
Após o retorno da bandeira de cartão, pode chamar o método AditumTransparent.createTemporaryCard({card, success, error})
que é responsável por criar o token do cartão, onde card é o objeto contendo informações do cartão, success é o callback onde será informado o token gerado e o error é o callback que será chamado quando estiver algum erro na requisição. Abaixo um exemplo do objeto card preenchido:
"brand":"Visa",
"number":"4111111111111111",
"holderName":"FULANO SILVA",
"holderDocument":"65844359038",
"expirationMonth":"02",
"expirationYear":"2026",
"cvv":"223"
}
- Objeto de retorno de sucesso:
"temporaryToken":"card_t/AIChh82EgN440hTW8vQqHcPC82EwBW"
}
- Objeto de retorno de erro:
"errors":[{
"errorCode":1,
"message":"Propriedade 'Cvv' está ausente.",
"field":"Cvv"
}]
}
Para múltiplos cartões, basta chamar esse método novamente com os dados do novo cartão e utilizar nos objetos de transação abaixo.
Passo 4
Após gerar o token, esse token pode ser enviado para seu servidor e ser usado pra passar uma requisição no endpoint POST /charge/authorization ou POST /charge/preauthorization. Para passar uma cobrança com múltiplos cartões, basta adicionar mais um objeto de transação, com o token gerado para este cartão. Abaixo um exemplo de requisição usando esse token temporário.
🚧 Obs.: Utilizando o endpoint /charge/authorization não é preciso enviar o campo capture
, pois a captura é automatica. O campo capture
é utilizado no endpoint /charge/preauthorization, sendo passado como true
ou false
.
"charge": {
"customer": {
"name": "FULANO SILVA",
"email": "fulano@email.com.br",
"entityType": 1,
"documentType": 1,
"document": "40398236720",
"gender": 2,
"phone": {
"countryCode": "55",
"areaCode": "21",
"number": "997027788",
"type": 5
},
"address": {
"street": "Nome da Rua",
"number": "999",
"neighborhood": "Nome do Bairro",
"city": "Nome da Cidade",
"state": "RJ",
"country": "BR",
"zipCode": "21229-999",
"complement": "Complemento"
}
},
"transactions": [
{
"temporaryCardToken": "d2rtf1yuenjkdsm327g38rhiue",
"paymentType": 2,
"amount": 1000,
"installmentNumber": 1,
"acquirer": 999
}
],
"source": 8,
"capture": true
}
}
SDK Checkout Lightbox
Instalação Checkout lightbox
Atualmente é possível instalar o Checkout lightbox de duas formas, utilizando o CDN ou NPM.
NPM
Para instalar utilizando o pacote NPM do checkout lightbox pode ser inserido em seu projeto utilizando o comando a seguir:
Desenvolvimento
Produção
Após utilizar o código, faça o seguinte:
Desenvolvimento
Produção
CDN
Para instalar utilizando CDN basta inserir o script do checkout transparente apontando para o local onde ele esta salvo.
Link | Ambiente |
---|---|
https://cdn.aditum.com.br/adt-checkout-v1.0.0.js | Produção |
https://cdn-dev.aditum.com.br/adt-checkout-v1.0.0.js | Desenvolvimento |
e estará disponível.
Após inserir o script deve ser adicionado no botão de Pagar da sua aplicação os seguintes atributos: data-adt-smartcheckout
e data-adt-callback-url
. Onde o primeiro vai ser o ID do SmartCheckout que deve ser gerado no endpoint v2/smartcheckout
e o segundo vai ser a URL chamada quando tiver sucesso na transação.
Ex.:
Quando o botão for clicado com essas informações preenchidas, a tela vai abaixo vai ser exibida:
Após o cliente executar o pagamento nessa tela exibimos a seguinte tela para voltar ao fluxo da loja:
Checkout Redirect
1º Crie o link de pagamento através do endpoint POST /smartcheckout.
2º Após a criação do link de pagamento, o mesmo deve ser enviado para o cliente com um novo parametro na URL, que é o redirect_url
.
Exemplo: https://link-do-portal.com.br/v2/checkout/cc3ef047-9876-49ca-bebe-92ec312a59a2?redirect_url=https://site-para-direcionar.com.br
🚧 Obs.: o valor do redirect_url
tem que ser passado com o https://
, caso contrário não irá funcionar.
3º Assim que o cliente receber o link de pagamento e efetuar o pagamento do mesmo, a página irá informar que o pagamento foi aprovado e redirecionará o cliente de volta ao site de compras.
🚧 Obs.: Após o redirecionamento será possível ver o chargeId
na URL, como mostrado na imagem abaixo.
WALLET
É a carteira virtual onde são guardados dados de cartões, para autilização posteriores. Podendo também ser gerado um cartão temporario, que expira após 5 minutos.
Cartão
Cartões que podem vir a ser guardados no sistema com criptografia mostrando apenas os 6 primeiros digitos e os 4 ultimos, possibilitando a utilização do mesmo a qualquer momento.
POST /card
Versão v2.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/card")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n \"customerId\": \"ffede3ee-37ab-47bb-9981-d3d14697d69g\",\r\n \"card\": {\r\n \"cardNumber\": \"4111111111111111\",\r\n \"cvv\": \"111\",\r\n \"brand\": 1,\r\n \"cardholderName\": \"Renan Soarez\",\r\n \"cardholderDocument\": \"01234567891\",\r\n \"expirationMonth\": 12,\r\n \"expirationYear\": 2026\r\n }\r\n}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_GATEWAY}}/v2/card"
payload="{\r\n \"customerId\": \"ffede3ee-37ab-47bb-9981-d3d14697d69g\",\r\n \"card\": {\r\n \"cardNumber\": \"4111111111111111\",\r\n \"cvv\": \"111\",\r\n \"brand\": 1,\r\n \"cardholderName\": \"Renan Soarez\",\r\n \"cardholderDocument\": \"01234567891\",\r\n \"expirationMonth\": 12,\r\n \"expirationYear\": 2026\r\n }\r\n}"
headers = {
'Authorization': 'Bearer {{accessToken}}',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
curl --location --request POST '{{ENDPOINT_GATEWAY}}/v2/card' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"customerId": "ffede3ee-37ab-47bb-9981-d3d14697d69g",
"card": {
"cardNumber": "4111111111111111",
"cvv": "111",
"brand": 1,
"cardholderName": "Renan Soarez",
"cardholderDocument": "01234567891",
"expirationMonth": 12,
"expirationYear": 2026
}
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({"customerId":"ffede3ee-37ab-47bb-9981-d3d14697d69g","card":{"cardNumber":"4111111111111111","cvv":"111","brand":1,"cardholderName":"Renan Soarez","cardholderDocument":"01234567891","expirationMonth":12,"expirationYear":2026}});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/card", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"card": {
"id": "7903ef10-81c3-458d-ad39-9ea9e736e59z",
"customerId": "ffede3ee-37ab-47bb-9981-d3d14697d69g",
"cardNumber": "411111******1111",
"brand": "Visa",
"cardholderName": "Renan Soarez",
"cardholderDocument": "01234567891",
"isPrivateLabel": false,
"expirationMonth": 12,
"expirationYear": 2026,
"brandName": "Visa"
},
"success": true,
"errors": [],
"traceKey": "48347500-d312-4d3b-aebe-c52f379e0386"
}
Endpoint responsável por adicionar um novo cartão à wallet de um comprador.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
customerId | string | Sim | ID exclusivo de cliente. |
card | object | Sim | Cartão a ser criado no sistema. |
card.cardNumber | string | Sim | Primary Account Number (PAN), o número impresso na frente do cartão. |
card.cvv | string | Sim | Card Verification Value (CVV), recurso de segurança para transações de cartão de pagamento com "ausência de cartão" instituídas para reduzir a incidência de fraude. |
card.brand | int | Sim | A bandeira do cartão à qual o imposto se aplica. . |
card.cardHolderName | string | Sim | Nome do títular do cartão. |
card.cardHolderDocument | string | Sim | Número do documento do títular, CNPJ ou CPF. |
card.billingAddress | array | Não | É o endereço conectado ao cartão de crédito ou débito. As empresas usam o endereço de cobrança para verificar o uso autorizado de tal cartão. É também para onde as empresas enviam contas em papel e extratos bancários. |
card.billingAddress.street | string | Não | Rua. |
card.billingAddress.number | string | Não | Número. |
card.billingAddress.neighborhood | string | Não | Bairro. |
card.billingAddress.city | string | Não | Cidade. |
card.billingAddress.state | string | Não | Estado. |
card.billingAddress.country | string | Não | País. |
card.billingAddress.zipCode | string | Não | CEP. |
card.expirationMonth | int | Sim | O Mês de expiração do cartão com 2 dígitos. |
card.expirationYear | int | Sim | O Ano de expiração do cartão com 4 dígitos. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
card.id | string | Número de identificação(ID) do cartão. |
card.customerId | string | ID do cliente. |
card.cardNumber | string | Número do cartão com criptografia, mostrando apenas os 6 primeiros e os 4 últimos dígitos. |
card.brand | string | Bandeira do cartão. |
card.cardHolderName | string | Nome do títular do cartão. |
card.cardHolderDocument | string | Número do documento do títular, CNPJ ou CPF. |
card.billingAddress | array | É o endereço conectado ao cartão de crédito ou débito. As empresas usam o endereço de cobrança para verificar o uso autorizado de tal cartão. É também para onde as empresas enviam contas em papel e extratos bancários. |
billingAddress.street | string | Rua. |
billingAddress.number | string | Número. |
billingAddress.neighborhood | string | Bairro. |
billingAddress.city | string | Cidade. |
billingAddress.state | string | Estado. |
billingAddress.country | string | País. |
billingAddress.zipCode | string | CEP. |
billingAddress.complement | string | Complemento. |
card.isPrivateLabel | bool | Indica se o cartão é um produto de whitelabel ou não. Whitelabel é um produto ou serviço que uma empresa produz e comercializa com outras empresas que tem interesse em utilizar o mesmo com sua marca estampada. |
card.expirationMonth | int | O Mês de expiração do cartão com 2 dígitos. |
card.expirationYear | int | O Ano de expiração do cartão com 4 dígitos. |
card.fallback | bool | Uma bandeira que informa se a cobrança necessária será feita como fita magnética substituta. |
card.brandName | string | O nome da bandeira do cartão. |
success | string | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
errors.errorCode | int | Código do erro. |
errors.message | string | Mensagem para identificar qual foi o erro retornado. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token. |
BODY Raw
"customerId": "ffede3ee-37ab-47bb-9981-d3d14697d69g",
"card": {
"cardNumber": "4111111111111111",
"cvv": "111",
"brand": 1,
"cardholderName": "Renan Soarez",
"cardholderDocument": "01234567891",
"expirationMonth": 12,
"expirationYear": 2026
}
}
PUT /card
Versão v2.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/card")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n \"card\": {\r\n \"id\": \"7903ef09-83c3-458d-ad39-9ea9e736e59z\",\r\n \"customerId\": \"ffede3ee-37ab-47bb-9981-d3d14697d69g\",\r\n \"cardNumber\": \"4111111111111111\",\r\n \"cvv\": \"111\",\r\n \"brand\": \"Visa\",\r\n \"cardholderName\": \"Renan Soarez\",\r\n \"cardholderDocument\": \"01234567891\",\r\n \"isPrivateLabel\": false,\r\n \"expirationMonth\": 12,\r\n \"expirationYear\": 2026,\r\n \"brandName\": \"Visa\"\r\n }\r\n}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_GATEWAY}}/v2/card"
payload="{\r\n \"card\": {\r\n \"id\": \"7903ef09-83c3-458d-ad39-9ea9e736e59z\",\r\n \"customerId\": \"ffede3ee-37ab-47bb-9981-d3d14697d69g\",\r\n \"cardNumber\": \"4111111111111111\",\r\n \"cvv\": \"111\",\r\n \"brand\": \"Visa\",\r\n \"cardholderName\": \"Renan Soarez\",\r\n \"cardholderDocument\": \"01234567891\",\r\n \"isPrivateLabel\": false,\r\n \"expirationMonth\": 12,\r\n \"expirationYear\": 2026,\r\n \"brandName\": \"Visa\"\r\n }\r\n}"
headers = {
'Authorization': 'Bearer {{accessToken}}',
'Content-Type': 'application/json'
}
response = requests.request("PUT", url, headers=headers, data=payload)
print(response.text)
curl --location --request PUT '{{ENDPOINT_GATEWAY}}/v2/card' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"card": {
"id": "7903ef09-83c3-458d-ad39-9ea9e736e59z",
"customerId": "ffede3ee-37ab-47bb-9981-d3d14697d69g",
"cardNumber": "4111111111111111",
"cvv": "111",
"brand": "Visa",
"cardholderName": "Renan Soarez",
"cardholderDocument": "01234567891",
"isPrivateLabel": false,
"expirationMonth": 12,
"expirationYear": 2026,
"brandName": "Visa"
}
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({"card":{"id":"7903ef09-83c3-458d-ad39-9ea9e736e59z","customerId":"ffede3ee-37ab-47bb-9981-d3d14697d69g","cardNumber":"4111111111111111","cvv":"111","brand":"Visa","cardholderName":"Renan Soarez","cardholderDocument":"01234567891","isPrivateLabel":false,"expirationMonth":12,"expirationYear":2026,"brandName":"Visa"}});
var requestOptions = {
method: 'PUT',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/card", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"updatedCard": {
"id": "7903ef09-83c3-458d-ad39-9ea9e736e59z",
"customerId": "ffede3ee-37ab-47bb-9981-d3d14697d69g",
"cardNumber": "411111******1111",
"isPrivateLabel": false,
"expirationMonth": 12,
"expirationYear": 2026
},
"success": true,
"errors": [],
"traceKey": "7ab17f07-8bcb-4634-b3f5-fca35bcb81c6"
}
O endpoint utilizado para atualizar um cartão existente por seu ID. Informações que podem ser atualizadas: ID do cliente, endereço de cobrança e bandeira de marca própria.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
customerId | string | Sim | ID exclusivo de cliente. |
card | object | Sim | Cartão a ser criado no sistema. |
card.id | string | Não | Número de identificação(ID) do cartão. |
card.customerId | string | Sim | ID do cliente. |
card.cardNumber | string | Sim | Primary Account Number (PAN), o número impresso na frente do cartão. |
card.cvv | string | Sim | Card Verification Value (CVV), recurso de segurança para transações de cartão de pagamento com "ausência de cartão" instituídas para reduzir a incidência de fraude. |
card.brand | int | Sim | A bandeira do cartão à qual o imposto se aplica. . |
card.cardHolderName | string | Sim | Nome do títular do cartão. |
card.cardHolderDocument | string | Sim | Número do documento do títular, CNPJ ou CPF. |
card.billingAddress | array | Não | É o endereço conectado ao cartão de crédito ou débito. As empresas usam o endereço de cobrança para verificar o uso autorizado de tal cartão. É também para onde as empresas enviam contas em papel e extratos bancários. |
card.billingAddress.street | string | Não | Rua. |
card.billingAddress.number | string | Não | Número. |
card.billingAddress.neighborhood | string | Não | Bairro. |
card.billingAddress.city | string | Não | Cidade. |
card.billingAddress.state | string | Não | Estado. |
card.billingAddress.country | string | Não | País. |
card.billingAddress.zipCode | string | Não | CEP. |
card.billingAddress.complement | string | Não | Complemento. |
card.isPrivateLabel | bool | Sim | Indica se o cartão é um produto de whitelabel ou não. Whitelabel é um produto ou serviço que uma empresa produz e comercializa com outras. |
card.expirationMonth | int | Sim | O Mês de expiração do cartão com 2 dígitos. |
card.expirationYear | int | Sim | O Ano de expiração do cartão com 4 dígitos. |
card.aid | string | Sim | Usado para uma transação EMV, este é o AID usado. |
card.entryMode | int | Sim | Tipo de leitura do cartão, por ex. fita magnética, chip EMV, tecnologia sem contato. . |
card.emvTags | string | Não | Tags EMV retornadas pelo cartão em caso de transação de contato emv. |
card.pinBlock | string | Não | O bloco de pins, no caso de pin online. |
card.ksn | string | Não | O número de série da chave usado para criptografar o pin. |
card.serviceCode | string | Não | Código de três dígitos, cada um representando uma configuração de cartão. |
card.acquirerVersion | string | Não | Versão das tabelas EMV definidas pelo adquirente. |
card.track1 | string | Não | Primeira fita magnética. |
card.track2 | string | Não | Segunda fita magnética. |
card.issuerScript | string | Não | Script do emissor a ser usado no comando FNC pelo pinpad ou POS. |
card.sequenceNumber | string | Não | O número que distingue entre cartões separados com o mesmo número de conta principal (PAN) ou PAN estendido. |
card.fallback | bool | Não | Uma bandeira que informa se a cobrança necessária será feita como fita magnética substituta. |
card.brandName | string | Não | O nome da bandeira do cartão. |
card.panEncryptionKsn | string | Não | Key Sequence Number (KSN) usado para criptografar. Aditum.EcommerceGateway.DataContract.V1.CardContract.EncryptedPan usando o pinpad. Usado apenas por InfinitePay. |
card.encryptedPan | string | Não | PAN recortado e criptografado. A criptografia ocorre dentro do pinpad. |
card.balance | int | Não | Saldo de cartões do tipo voucher. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
updatedCardid | string | Número de identificação(ID) do cartão. |
updatedCardcustomerId | string | ID do cliente. |
updatedCardcardNumber | string | Número do cartão com criptografia, mostrando apenas os 6 primeiros e os 4 últimos dígitos. |
updatedCardbrand | string | Bandeira do cartão. |
updatedCardcardHolderName | string | Nome do títular do cartão. |
updatedCardcardHolderDocument | string | Número do documento do títular, CNPJ ou CPF. |
updatedCardbillingAddress | array | É o endereço conectado ao cartão de crédito ou débito. As empresas usam o endereço de cobrança para verificar o uso autorizado de tal cartão. É também para onde as empresas enviam contas em papel e extratos bancários. |
updatedCard.billingAddress.street | string | Rua. |
updatedCard.billingAddress.number | string | Número. |
updatedCard.billingAddress.neighborhood | string | Bairro. |
updatedCard.billingAddress.city | string | Cidade. |
updatedCard.billingAddress.state | string | Estado. |
updatedCard.billingAddress.country | string | País. |
updatedCard.billingAddress.zipCode | string | CEP. |
updatedCard.billingAddress.complement | string | Complemento. |
updatedCardisPrivateLabel | bool | Indica se o cartão é um produto de whitelabel ou não. Whitelabel é um produto ou serviço que uma empresa produz e comercializa com outras empresas que tem interesse em utilizar o mesmo com sua marca estampada. |
updatedCardexpirationMonth | int | O Mês de expiração do cartão com 2 dígitos. |
updatedCardexpirationYear | int | O Ano de expiração do cartão com 4 dígitos. |
updatedCardfallback | bool | Uma bandeira que informa se a cobrança necessária será feita como fita magnética substituta. |
updatedCardbrandName | string | O nome da bandeira do cartão. |
success | string | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
errors.errorCode | int | Código do erro. |
errors.message | string | Mensagem para identificar qual foi o erro retornado. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token. |
BODY Raw
"card": {
"id": "7903ef09-83c3-458d-ad39-9ea9e736e59z",
"customerId": "ffede3ee-37ab-47bb-9981-d3d14697d69g",
"cardNumber": "4111111111111111",
"cvv": "111",
"brand": "Visa",
"cardholderName": "Renan Soarez",
"cardholderDocument": "01234567891",
"isPrivateLabel": false,
"expirationMonth": 12,
"expirationYear": 2026,
"brandName": "Visa"
}
}
GET /card
Versão v2.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/card?id={{cardId}}")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_GATEWAY}}/v2/card?id={{cardId}}"
payload={}
headers = {
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
curl --location -g --request GET '{{ENDPOINT_GATEWAY}}/v2/card?id={{cardId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/card?id={{cardId}}", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"card": {
"id": "7903ef09-83c3-458d-ad39-9ea9e736e59z",
"customerId": "ffede3ee-37ab-47bb-9981-d3d14697d69a",
"cardNumber": "411111******1111",
"isPrivateLabel": false,
"expirationMonth": 12,
"expirationYear": 2026
},
"success": true,
"errors": [],
"traceKey": "929bc149-4d64-4450-b5d1-800d5a4f5449"
}
O endpoint utilizado para pesquisar um cartão com base no ID recebido.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
id | string | Sim | ID do cartão. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
card.id | string | Número de identificação(ID) do cartão. |
card.customerId | string | ID do cliente. |
card.cardNumber | string | Número do cartão com criptografia, mostrando apenas os 6 primeiros e os 4 últimos dígitos. |
card.brand | string | Bandeira do cartão. |
card.cardHolderName | string | Nome do títular do cartão. |
card.cardHolderDocument | string | Número do documento do títular, CNPJ ou CPF. |
card.billingAddress | array | É o endereço conectado ao cartão de crédito ou débito. As empresas usam o endereço de cobrança para verificar o uso autorizado de tal cartão. É também para onde as empresas enviam contas em papel e extratos bancários. |
billingAddress.street | string | Rua. |
billingAddress.number | string | Número. |
billingAddress.neighborhood | string | Bairro. |
billingAddress.city | string | Cidade. |
billingAddress.state | string | Estado. |
billingAddress.country | string | País. |
billingAddress.zipCode | string | CEP. |
billingAddress.complement | string | Complemento. |
card.isPrivateLabel | bool | Indica se o cartão é um produto de whitelabel ou não. Whitelabel é um produto ou serviço que uma empresa produz e comercializa com outras empresas que tem interesse em utilizar o mesmo com sua marca estampada. |
card.expirationMonth | int | O Mês de expiração do cartão com 2 dígitos. |
card.expirationYear | int | O Ano de expiração do cartão com 4 dígitos. |
card.fallback | bool | Uma bandeira que informa se a cobrança necessária será feita como fita magnética substituta. |
card.brandName | string | O nome da bandeira do cartão. |
success | string | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
errors.errorCode | int | Código do erro. |
errors.message | string | Mensagem para identificar qual foi o erro retornado. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token. |
PARAMS | - |
---|---|
Id | {{cardId}} |
-- | Número de identificação do cartão. |
GET /card/byCustomer
Versão v2.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/card/byCustomer?id={{customerId}}")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_GATEWAY}}/v2/card/byCustomer?id={{customerId}}"
payload={}
headers = {
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
curl --location --request GET '{{ENDPOINT_GATEWAY}}/v2/card/byCustomer?id={{customerId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/card/byCustomer?id={{customerId}}", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"cards": [
{
"id": "7903ef09-83c3-458d-ad39-9ea9e736e59z",
"customerId": "ffede3ee-37ab-47bb-9981-d3d14697d69a",
"cardNumber": "411111******1111",
"brand": "Visa",
"cardholderName": "Renan Soarez",
"cardholderDocument": "01234567891",
"isPrivateLabel": false,
"expirationMonth": 12,
"expirationYear": 2026,
"brandName": "Visa"
}
],
"success": true,
"errors": [],
"traceKey": "e693cdb5-47d2-4fae-8670-bba1f8568d21"
}
O endpoint utilizado para pesquisar todos os cartões relacionados a um cliente com base em seu ID.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
id | string | Sim | ID do cliente. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
card.id | string | Número de identificação(ID) do cartão. |
card.customerId | string | ID do cliente. |
card.cardNumber | string | Número do cartão com criptografia, mostrando apenas os 6 primeiros e os 4 últimos dígitos. |
card.brand | string | Bandeira do cartão. |
card.cardHolderName | string | Nome do títular do cartão. |
card.cardHolderDocument | string | Número do documento do títular, CNPJ ou CPF. |
card.billingAddress | array | É o endereço conectado ao cartão de crédito ou débito. As empresas usam o endereço de cobrança para verificar o uso autorizado de tal cartão. É também para onde as empresas enviam contas em papel e extratos bancários. |
billingAddress.street | string | Rua. |
billingAddress.number | string | Número. |
billingAddress.neighborhood | string | Bairro. |
billingAddress.city | string | Cidade. |
billingAddress.state | string | Estado. |
billingAddress.country | string | País. |
billingAddress.zipCode | string | CEP. |
card.isPrivateLabel | bool | Indica se o cartão é um produto de whitelabel ou não. Whitelabel é um produto ou serviço que uma empresa produz e comercializa com outras empresas que tem interesse em utilizar o mesmo com sua marca estampada. |
card.expirationMonth | int | O Mês de expiração do cartão com 2 dígitos. |
card.expirationYear | int | O Ano de expiração do cartão com 4 dígitos. |
card.fallback | bool | Uma bandeira que informa se a cobrança necessária será feita como fita magnética substituta. |
card.brandName | string | O nome da bandeira do cartão. |
success | string | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
errors.errorCode | int | Código do erro. |
errors.message | string | Mensagem para identificar qual foi o erro retornado. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token. |
PARAMS | - |
---|---|
Id | {{customerId}} |
-- | Número de identificação do cliente. |
DELETE /card/{cardId}
Versão v2.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/card/{{cardId}}")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_GATEWAY}}/v2/card/{{cardId}}"
payload={}
headers = {
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("DELETE", url, headers=headers, data=payload)
print(response.text)
curl --location --request DELETE '{{ENDPOINT_GATEWAY}}/v2/card/{{cardId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
var requestOptions = {
method: 'DELETE',
headers: myHeaders,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/card/{{cardId}}", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"success": true,
"errors": [],
"traceKey": "string"
}
O endpoint utilizado para deletar um cartão com base em seu ID.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
id | string | Sim | ID do cartão. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
success | string | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
errors.errorCode | int | Código do erro. |
errors.message | string | Mensagem para identificar qual foi o erro retornado. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token. |
Cartão Temporário
Um cartão que é criado temporáriamente, podendo ser utilizado dentro de um período de 5 minutos.
POST /temporary/card
Versão v2.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/temporary/card")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n \"brand\": 1,\r\n \"cardNumber\": \"4111111111111111\",\r\n \"cardholderName\": \"Renan Soarez\",\r\n \"cardholderDocument\": \"01234567891\",\r\n \"expirationMonth\": 12,\r\n \"expirationYear\": 2026,\r\n \"cvv\": \"111\"\r\n}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_GATEWAY}}/v2/temporary/card"
payload="{\r\n \"brand\": 1,\r\n \"cardNumber\": \"4111111111111111\",\r\n \"cardholderName\": \"Renan Soarez\",\r\n \"cardholderDocument\": \"01234567891\",\r\n \"expirationMonth\": 12,\r\n \"expirationYear\": 2026,\r\n \"cvv\": \"111\"\r\n}"
headers = {
'Authorization': 'Bearer {{accessToken}}',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
curl --location --request POST '{{ENDPOINT_GATEWAY}}/v2/temporary/card' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"brand": 1,
"cardNumber": "4111111111111111",
"cardholderName": "Renan Soarez",
"cardholderDocument": "01234567891",
"expirationMonth": 12,
"expirationYear": 2026,
"cvv": "111"
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({"brand":1,"cardNumber":"4111111111111111","cardholderName":"Renan Soarez","cardholderDocument":"01234567891","expirationMonth":12,"expirationYear":2026,"cvv":"111"});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/temporary/card", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"cardToken": "card_0CLtvaYy2UgPN2U4Mq8UQqYZnxdxnhVc",
"success": true,
"errors": [],
"traceKey": "ddf2f808-2ce1-4d8a-88e4-1982b5ae7d8a"
}
O endpoint utilizado para criar um novo cartão temporário.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
brand | int | Sim | A bandeira do cartão à qual o imposto se aplica. . |
cardNumber | string | Sim | O número impresso na frente do cartão. |
cardholderName | string | Sim | O nome do títular do cartão. |
cardholderDocument | string | Sim | O documento do títular do cartão. |
expirationMonth | int | Sim | O Mês de expiração do cartão com 2 dígitos. |
expirationYear | int | Sim | O Ano de expiração do cartão com 4 dígitos. |
cvv | string | Sim | Card Verification Value (CVV), recurso de segurança para transações de cartão de pagamento com "ausência de cartão" instituídas para reduzir a incidência de fraude. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
success | string | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
errors.errorCode | int | Código do erro. |
errors.message | string | Mensagem para identificar qual foi o erro retornado. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token. |
BODY Raw
"brand": 1,
"cardNumber": "4111111111111111",
"cardholderName": "Renan Soarez",
"cardholderDocument": "01234567891",
"expirationMonth": 12,
"expirationYear": 2026,
"cvv": "111"
}
GATEWAY
Infraestrutura tecnológica para integrar a sua loja na internet com todos os meios de pagamentos. Isto é: com as bandeiras de cartão de crédito e débito e com bancos, para fazer a emissão de boletos bancários ou depósitos em conta, entre outros agentes financeiros.
Taxas
As taxas que serão utilizadas nas transações do gateway.
POST /tax
Versão v2.0
Requisição HTTP
Exemplo de requisição (
Plano de Taxas
)
require "uri"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/tax")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n \"acquirer\": 999,\r\n \"name\": \"Plano de Taxa\",\r\n \"parentTax\": \"b265018d-b935-5de5-85cf-d805be8ba5cf\",\r\n \"taxes\": [\r\n {\r\n \"paymentType\": 2,\r\n \"isInInstallment\": false,\r\n \"upsellAnticipationTax\": 1.0,\r\n \"upsellTax\": 1.0,\r\n \"cardBrand\": 2,\r\n \"priority\": 1\r\n }\r\n ],\r\n \"aditumProduct\": 1\r\n}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_GATEWAY}}/v2/tax"
payload="{\r\n \"acquirer\": 999,\r\n \"name\": \"Plano de Taxa\",\r\n \"parentTax\": \"b265018d-b935-5de5-85cf-d805be8ba5cf\",\r\n \"taxes\": [\r\n {\r\n \"paymentType\": 2,\r\n \"isInInstallment\": false,\r\n \"upsellAnticipationTax\": 1.0,\r\n \"upsellTax\": 1.0,\r\n \"cardBrand\": 2,\r\n \"priority\": 1\r\n }\r\n ],\r\n \"aditumProduct\": 1\r\n}"
headers = {
'Authorization': 'Bearer {{accessToken}}',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
curl --location --request POST '{{ENDPOINT_GATEWAY}}/v2/tax' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"acquirer": 999,
"name": "Plano de Taxa",
"parentTax": "b265018d-b935-5de5-85cf-d805be8ba5cf",
"taxes": [
{
"paymentType": 2,
"isInInstallment": false,
"upsellAnticipationTax": 1.0,
"upsellTax": 1.0,
"cardBrand": 2,
"priority": 1
}
],
"aditumProduct": 1
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({"acquirer":999,"name":"Plano de Taxa","parentTax":"b265018d-b935-5de5-85cf-d805be8ba5cf","taxes":[{"paymentType":2,"isInInstallment":false,"upsellAnticipationTax":1,"upsellTax":1,"cardBrand":2,"priority":1}],"aditumProduct":1});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/tax", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
Exemplo de requisição (
Taxa Base
)
require "uri"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/tax")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n \"acquirer\": 999,\r\n \"name\": \"Taxa Base\",\r\n \"taxes\": [\r\n {\r\n \"paymentType\": 2,\r\n \"isInInstallment\": false,\r\n \"anticipationTax\": 1.0,\r\n \"taxPercentage\": 1.0,\r\n \"cardBrand\": 2,\r\n \"priority\": 1\r\n }\r\n ],\r\n \"aditumProduct\": 1,\r\n \"mccs\": [\r\n \"763\"\r\n ],\r\n \"receivableMode\": 1\r\n}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_GATEWAY}}/v2/tax"
payload="{\r\n \"acquirer\": 999,\r\n \"name\": \"Taxa Base\",\r\n \"taxes\": [\r\n {\r\n \"paymentType\": 2,\r\n \"isInInstallment\": false,\r\n \"anticipationTax\": 1.0,\r\n \"taxPercentage\": 1.0,\r\n \"cardBrand\": 2,\r\n \"priority\": 1\r\n }\r\n ],\r\n \"aditumProduct\": 1,\r\n \"mccs\": [\r\n \"763\"\r\n ],\r\n \"receivableMode\": 1\r\n}"
headers = {
'Authorization': 'Bearer {{accessToken}}',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
curl --location --request POST '{{ENDPOINT_GATEWAY}}/v2/tax' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"acquirer": 999,
"name": "Taxa Base",
"taxes": [
{
"paymentType": 2,
"isInInstallment": false,
"anticipationTax": 1.0,
"taxPercentage": 1.0,
"cardBrand": 2,
"priority": 1
}
],
"aditumProduct": 1,
"mccs": [
"763"
],
"receivableMode": 1
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({"acquirer":999,"name":"Taxa Base","taxes":[{"paymentType":2,"isInInstallment":false,"anticipationTax":1,"taxPercentage":1,"cardBrand":2,"priority":1}],"aditumProduct":1,"mccs":["763"],"receivableMode":1});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/tax", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
Resposta (
Plano de Taxas
)
{
"taxes": {
"id": "27dcaa67-ec5e-4975-97fe-6396534506a4",
"isActive": true,
"acquirer": "Simulator",
"name": "Plano de Taxa",
"parentTax": "b265018d-b935-4de6-75cf-d805be8ba5cf",
"taxes": [
{
"paymentType": "Credit",
"isInInstallment": false,
"upsellAnticipationTax": 1.0,
"upsellTax": 1.0,
"cardBrand": "MasterCard",
"priority": 1
}
],
"aditumProduct": "Ecommerce",
"receivableMode": "Default",
"mccs": [
"763"
]
},
"success": true,
"errors": [],
"traceKey": "427c9a57-3225-4f6f-9590-b60f13f57d02"
}
Resposta (
Taxa Base
)
{
"taxes": {
"id": "b265018d-b936-7de5-85cf-d805be8ba5cf",
"isActive": true,
"acquirer": "Simulator",
"name": "Taxa Base",
"taxes": [
{
"paymentType": "Credit",
"isInInstallment": false,
"taxPercentage": 1.0,
"anticipationTax": 1.0,
"cardBrand": "MasterCard",
"priority": 1
}
],
"aditumProduct": "Ecommerce",
"receivableMode": "Default",
"mccs": [
"763"
]
},
"success": true,
"errors": [],
"traceKey": "91ce694e-4e7d-48ed-9cc4-ace6e68fd787"
}
Endpoint responsável por criar um novo plano de taxas. Esse plano de taxas será utilizado pelo gateway para identificar adquirente a processar uma transação especifica. O gateway utiliza a propriedade priority
para priorizar cada taxa, sendo a prioridade mais alta 1
.
Exemplo:
A LOJA_EXEMPLO
suporta as adquirentes ADQ_A
e ADQ_B
, sendo que a ADQ_B
é tem uma taxa mais baixa para transações de crédito a vista Elo. Nesse caso, a taxa da ADQ_B
para crédito a vista deve ter priority 1
enquanto a ADQ_A
tem prioridade priority 2
.
Em suma, o plano de taxas pode ser utilizado como uma ferramenta flexível de priorização e roteamento de transações.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
acquirer | int | Sim | O ID da adquirente. . |
name | string | Sim | O nome da adquirente. |
taxes | Taxes | Sim | Lista de taxas para o comerciante, definida por cada adquirente. |
taxes.paymentType | string | Sim | Tipo de transação. |
taxes.isInInstallment | bool | Sim | Se a estratégia está relacionada a um tipo de transação instalado ou não. |
taxes.installmentRange | array | Sim | Define faixa de parcelamento, em um crédito tributário, de 2 a 6x ou de 7 a 12x. |
taxes.taxPercentage | number | Sim | Percentual de taxa definido pelo adquirente. Pode ser nulo se o plano de taxas tiver taxa pai. |
taxes.anticipationTax | number | Sim | define a percentagem a cobrar quando o valor é antecipado. Pode ser nulo se o plano de taxas tiver taxa parental |
taxes.upsellTax | number | Sim | A porcentagem do parceiro a ser cobrada e somará ParentTax.TaxPercentage ou ParentTax.UpsellTax se parenttax tiver pai. |
taxes.cardBrand | int | Sim | A bandeira do cartão à qual o imposto se aplica. . |
taxes.priority | int | Sim | É um número inteiro positivo, cujo valor mais alto é 1. |
aditumProduct | int | Sim | É produto relacionado ao plano de taxas. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
acquirer | int | O ID da adquirente. . |
name | string | O nome da adquirente. |
taxes | Taxes | Lista de taxas para o comerciante, definida por cada adquirente. |
taxes.paymentType | string | Tipo de transação. . |
taxes.isInInstallment | bool | Se a estratégia está relacionada a um tipo de transação instalado ou não. |
taxes.installmentRange | array | Define faixa de parcelamento, em um crédito tributário, de 2 a 6x ou de 7 a 12x. |
taxes.taxPercentage | number | Percentual de taxa definido pelo adquirente. Pode ser nulo se o plano de taxas tiver taxa pai. |
taxes.anticipationTax | number | define a percentagem a cobrar quando o valor é antecipado. Pode ser nulo se o plano de taxas tiver taxa parental |
taxes.upsellTax | number | A porcentagem do parceiro a ser cobrada e somará ParentTax.TaxPercentage ou ParentTax.UpsellTax se parenttax tiver pai. |
taxes.cardBrand | int | A bandeira do cartão à qual o imposto se aplica. . |
taxes.priority | int | É um número inteiro positivo, cujo valor mais alto é 1. |
aditumProduct | int | É produto relacionado ao plano de taxas. |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token. |
BODY Raw
Plano de Taxas
"acquirer": 999,
"name": "Plano de Taxa",
"parentTax": "b265018d-b935-5de5-85cf-d805be8ba5cf",
"taxes": [
{
"paymentType": 2,
"isInInstallment": false,
"upsellAnticipationTax": 1.0,
"upsellTax": 1.0,
"cardBrand": 2,
"priority": 1
},
{
"paymentType": 2,
"isInInstallment": true,
"installmentRange": {
"minimum": 2,
"maximum": 6
},
"upsellAnticipationTax": 1.0,
"upsellTax": 1.0,
"cardBrand": 2,
"priority": 1
},
{
"paymentType": 2,
"isInInstallment": true,
"installmentRange": {
"minimum": 7,
"maximum": 12
},
"upsellAnticipationTax": 1.0,
"upsellTax": 1.0,
"cardBrand": 2,
"priority": 1
}
],
"aditumProduct": 1
}
Taxa Base
"acquirer": 999,
"name": "Taxa Base",
"taxes": [
{
"paymentType": 2,
"isInInstallment": false,
"anticipationTax": 1.0,
"taxPercentage": 1.0,
"cardBrand": 2,
"priority": 1
},
{
"paymentType": 2,
"isInInstallment": true,
"installmentRange": {
"minimum": 2,
"maximum": 6
},
"anticipationTax": 1.0,
"taxPercentage": 1.0,
"cardBrand": 2,
"priority": 1
},
{
"paymentType": 2,
"isInInstallment": true,
"installmentRange": {
"minimum": 7,
"maximum": 12
},
"anticipationTax": 1.0,
"taxPercentage": 1.0,
"cardBrand": 2,
"priority": 1
}
],
"aditumProduct": 1,
"mccs": [
"763"
],
"receivableMode": 1
}
GET /tax
Versão v2.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/tax")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_GATEWAY}}/v2/tax"
payload={}
headers = {
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
curl --location --request GET '{{ENDPOINT_GATEWAY}}/v2/tax' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/tax", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"taxes": [
{
"id": "f7b04a26-1cd8-4bc0-ae89-e9b7254817eb",
"isActive": true,
"acquirer": "Simulator",
"name": "Plano de Taxa Teste",
"parentTax": "7833d91f-57f5-4ee6-8862-f390b698fdc2",
"taxes": [
{
"paymentType": "Credit",
"isInInstallment": false,
"upsellAnticipationTax": 1.0,
"upsellTax": 1.0,
"cardBrand": "MasterCard",
"priority": 1
}
],
"aditumProduct": "Ecommerce",
"receivableMode": "Default"
}
],
"success": true,
"errors": [],
"traceKey": "6aa471e4-dc69-4c1a-a64d-749a9791eaf3"
}
Endpoint responsável por obter todas as taxas cadastradas por um comerciante.
Requisição
Enviar a requisição http com a autorização no header.
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
id | string | O ID da taxa. |
isActive | bool | Se a taxa está ativa ou não. |
acquirer | int | O ID da adquirente. . |
name | string | O nome da adquirente. |
parentTax | string | O ID de uma outra taxa, usado para venda. |
taxes | Taxes | Lista de taxas para o comerciante, definida por cada adquirente. |
taxes.paymentType | string | Tipo de transação. |
taxes.isInInstallment | bool | Se a estratégia está relacionada a um tipo de transação instalado ou não. |
taxes.installmentRange | array | Define faixa de parcelamento, em um crédito tributário, de 2 a 6x ou de 7 a 12x. |
taxes.upsellTax | number | A porcentagem do parceiro a ser cobrada e somará ParentTax.TaxPercentage ou ParentTax.UpsellTax se parenttax tiver pai. |
taxes.cardBrand | int | A bandeira do cartão à qual o imposto se aplica. . |
taxes.priority | int | É um número inteiro positivo, cujo valor mais alto é 1. |
aditumProduct | int | É produto relacionado ao plano de taxas. |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token. |
PUT /tax
Versão v2.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/tax")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n \"taxes\": [\r\n {\r\n \"id\": \"f7b04a26-1cd0-4bc9-ae89-e9b7254817eb\",\r\n \"isActive\": true,\r\n \"acquirer\": 999,\r\n \"name\": \"Plano de Taxa\",\r\n \"parentTax\": \"7833d91f-47f5-5ee7-8862-f390b698fdc2\",\r\n \"taxes\": [\r\n {\r\n \"paymentType\": 2,\r\n \"isInInstallment\": false,\r\n \"upsellAnticipationTax\": 1.0,\r\n \"upsellTax\": 1.0,\r\n \"cardBrand\": 2,\r\n \"priority\": 1\r\n }\r\n ],\r\n \"aditumProduct\": 1,\r\n \"receivableMode\": 1\r\n }\r\n ]\r\n}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_GATEWAY}}/v2/tax"
payload="{\r\n \"taxes\": [\r\n {\r\n \"id\": \"f7b04a26-1cd0-4bc9-ae89-e9b7254817eb\",\r\n \"isActive\": true,\r\n \"acquirer\": 999,\r\n \"name\": \"Plano de Taxa\",\r\n \"parentTax\": \"7833d91f-47f5-5ee7-8862-f390b698fdc2\",\r\n \"taxes\": [\r\n {\r\n \"paymentType\": 2,\r\n \"isInInstallment\": false,\r\n \"upsellAnticipationTax\": 1.0,\r\n \"upsellTax\": 1.0,\r\n \"cardBrand\": 2,\r\n \"priority\": 1\r\n }\r\n ],\r\n \"aditumProduct\": 1,\r\n \"receivableMode\": 1\r\n }\r\n ]\r\n}"
headers = {
'Authorization': 'Bearer {{accessToken}}',
'Content-Type': 'application/json'
}
response = requests.request("PUT", url, headers=headers, data=payload)
print(response.text)
curl --location --request PUT '{{ENDPOINT_GATEWAY}}/v2/tax' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"taxes": [
{
"id": "f7b04a26-1cd0-4bc9-ae89-e9b7254817eb",
"isActive": true,
"acquirer": 999,
"name": "Plano de Taxa",
"parentTax": "7833d91f-47f5-5ee7-8862-f390b698fdc2",
"taxes": [
{
"paymentType": 2,
"isInInstallment": false,
"upsellAnticipationTax": 1.0,
"upsellTax": 1.0,
"cardBrand": 2,
"priority": 1
}
],
"aditumProduct": 1,
"receivableMode": 1
}
]
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({"taxes":[{"id":"f7b04a26-1cd0-4bc9-ae89-e9b7254817eb","isActive":true,"acquirer":999,"name":"Plano de Taxa","parentTax":"7833d91f-47f5-5ee7-8862-f390b698fdc2","taxes":[{"paymentType":2,"isInInstallment":false,"upsellAnticipationTax":1,"upsellTax":1,"cardBrand":2,"priority":1}],"aditumProduct":1,"receivableMode":1}]});
var requestOptions = {
method: 'PUT',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/tax", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"taxes": [
{
"id": "f7b04a26-1cd0-4bc9-ae89-e9b7254817eb",
"isActive": true,
"acquirer": "Simulator",
"name": "Plano de Taxa",
"parentTax": "7833d91f-47f5-5ee7-8862-f390b698fdc2",
"taxes": [
{
"paymentType": "Credit",
"isInInstallment": false,
"upsellAnticipationTax": 1.0,
"upsellTax": 1.0,
"cardBrand": "MasterCard",
"priority": 1
}
],
"aditumProduct": "Ecommerce",
"receivableMode": "Default"
}
],
"success": true,
"errors": [],
"traceKey": "ac17ebe6-3f8f-4a2f-ad54-d2d13a173dee"
}
O Endpoint responsável por atualizar as taxas.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
id | string | Sim | O ID da taxa. |
isActive | bool | Sim | Se a taxa está ativa ou não. |
acquirer | int | Sim | O ID da adquirente. . |
name | string | Sim | O nome da adquirente. |
parentTax | string | Sim | O ID de uma outra taxa, usado para venda. |
taxes | array | Sim | Lista de taxas para o comerciante, definida por cada adquirente. |
taxes.paymentType | string | Sim | Tipo de transação. |
taxes.isInInstallment | bool | Sim | Se a estratégia está relacionada a um tipo de transação instalado ou não. |
taxes.installmentRange | array | Sim | Define faixa de parcelamento, em um crédito tributário, de 2 a 6x ou de 7 a 12x. |
taxes.upsellTax | number | Sim | A porcentagem do parceiro a ser cobrada e somará ParentTax.TaxPercentage ou ParentTax.UpsellTax se parenttax tiver pai. |
taxes.cardBrand | int | Sim | A bandeira do cartão à qual o imposto se aplica. . |
taxes.priority | int | Sim | É um número inteiro positivo, cujo valor mais alto é 1. |
aditumProduct | int | Sim | É produto relacionado ao plano de taxas. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
id | string | O ID da taxa. |
isActive | bool | Se a taxa está ativa ou não. |
acquirer | int | O ID da adquirente. . |
name | string | O nome da adquirente. |
parentTax | string | O ID de uma outra taxa, usado para venda. |
taxes | Taxes | Lista de taxas para o comerciante, definida por cada adquirente. |
taxes.paymentType | string | Tipo de transação. |
taxes.isInInstallment | bool | Se a estratégia está relacionada a um tipo de transação instalado ou não. |
taxes.installmentRange | array | Define faixa de parcelamento, em um crédito tributário, de 2 a 6x ou de 7 a 12x. |
taxes.upsellTax | number | A porcentagem do parceiro a ser cobrada e somará ParentTax.TaxPercentage ou ParentTax.UpsellTax se parenttax tiver pai. |
taxes.cardBrand | int | A bandeira do cartão à qual o imposto se aplica. . |
taxes.priority | int | É um número inteiro positivo, cujo valor mais alto é 1. |
aditumProduct | int | É produto relacionado ao plano de taxas. |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token. |
BODY Raw
"taxes": [
{
"id": "f7b04a26-1cd0-4bc9-ae89-e9b7254817eb",
"isActive": true,
"acquirer": 999,
"name": "Plano de Taxa",
"parentTax": "7833d91f-47f5-5ee7-8862-f390b698fdc2",
"taxes": [
{
"paymentType": 2,
"isInInstallment": false,
"upsellAnticipationTax": 1.0,
"upsellTax": 1.0,
"cardBrand": 2,
"priority": 1
}
],
"aditumProduct": 1,
"receivableMode": 1
}
]
}
DEL /tax/{taxPlanId}
Versão v2.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/tax/{{taxPlanId}}")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_GATEWAY}}/v2/tax/{{taxPlanId}}"
payload={}
headers = {
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("DELETE", url, headers=headers, data=payload)
print(response.text)
curl --location -g --request DELETE '{{ENDPOINT_GATEWAY}}/v2/tax/{{taxPlanId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
var requestOptions = {
method: 'DELETE',
headers: myHeaders,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/tax/{{taxPlanId}}", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"taxPlanId": "27dcaa67-ec3e-4974-97fe-6396534506a4",
"success": true,
"errors": [],
"traceKey": "6f3490df-6afd-45db-8f72-d5aac3d6d2c5"
}
O Endpoint responsável por deletar as taxas de um comerciante.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
id | string | Sim | O ID da taxa. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
taxPlandId | string | O ID da taxa. |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token. |
PUT /tax/Activate/{{taxPlanId}}
Versão v2.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/tax/Activate/{{taxPlanId}}")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_GATEWAY}}/v2/tax/Activate/{{taxPlanId}}"
payload={}
headers = {
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("PUT", url, headers=headers, data=payload)
print(response.text)
curl --location -g --request PUT '{{ENDPOINT_GATEWAY}}/v2/tax/Activate/{{taxPlanId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
var requestOptions = {
method: 'PUT',
headers: myHeaders,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/tax/Activate/{{taxPlanId}}", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"taxPlanId": "27dcaa67-ec5e-6994-97fe-6396534506a4",
"success": true,
"errors": [],
"traceKey": "af7e0261-6412-483f-bec3-6525aa184df2"
}
O Endpoint responsável por ativar as taxas de um comerciante.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
id | string | Sim | O ID da taxa. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
taxPlandId | string | O ID da taxa. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token. |
Compradores
Os clientes que serão cadastrados no sistema para serem relacionados a suas transações futuras.
POST /customer
Versão v2.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/customer")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n \"customer\": {\r\n \"name\": \"Yago Sebastião Lima\",\r\n \"email\": \"yagosebastiaolima@archosolutions.com.br\",\r\n \"entityType\": 1,\r\n \"documentType\": 1,\r\n \"document\": \"78112482802\",\r\n \"phone\": {\r\n \"countryCode\": \"55\",\r\n \"areaCode\": \"21\",\r\n \"number\": \"999999999\",\r\n \"type\": 5\r\n }\r\n }\r\n}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_GATEWAY}}/v2/customer"
payload="{\r\n \"customer\": {\r\n \"name\": \"Yago Sebastião Lima\",\r\n \"email\": \"yagosebastiaolima@archosolutions.com.br\",\r\n \"entityType\": 1,\r\n \"documentType\": 1,\r\n \"document\": \"78112482802\",\r\n \"phone\": {\r\n \"countryCode\": \"55\",\r\n \"areaCode\": \"21\",\r\n \"number\": \"999999999\",\r\n \"type\": 5\r\n }\r\n }\r\n}"
headers = {
'Authorization': 'Bearer {{accessToken}}',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
curl --location --request POST '{{ENDPOINT_GATEWAY}}/v2/customer' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"customer": {
"name": "Yago Sebastião Lima",
"email": "yagosebastiaolima@archosolutions.com.br",
"entityType": 1,
"documentType": 1,
"document": "78112482802",
"phone": {
"countryCode": "55",
"areaCode": "21",
"number": "999999999",
"type": 5
}
}
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({"customer":{"name":"Yago Sebastião Lima","email":"yagosebastiaolima@archosolutions.com.br","entityType":1,"documentType":1,"document":"78112482802","phone":{"countryCode":"55","areaCode":"21","number":"999999999","type":5}}});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/customer", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"customer": {
"id": "ffede3ee-37ab-47bb-9981-d4d14697d67a",
"name": "Yago Sebastião Lima",
"email": "yagosebastiaolima@archosolutions.com.br",
"entityType": "IndividualMerchant",
"documentType": "Cpf",
"document": "78112482802",
"gender": "Undefined",
"phone": {
"countryCode": "55",
"areaCode": "21",
"number": "999999999",
"type": "Mobile"
}
},
"success": true,
"errors": [],
"traceKey": "496e22bd-0690-489c-a88f-9c1fd4e64d62"
}
O Endpoint responsável por criar um novo comprador.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
name | string | Sim | Nome completo do comprador. |
string | Sim | E-mail do comprador. | |
entityType | entityType | Sim | Se é pessoa física ou jurídica. . |
documentType | documentType | Sim | Tipo do documento do comprador. . |
document | string | Sim | Documento do comprador. |
birthday | date | Não | Data de nascimento do comprador. |
gender | Gender | Não | Gênero do comprador. . |
phone | object | Sim | Telefone do comprador. |
phone.countryCode | string | Sim | Código do país. |
phone.areaCode | string | Sim | Código de área. |
phone.number | string | Sim | Número do Telefone. |
phone.type | PhoneType | Sim | Tipo do telefone. . |
address | object | Não | Endereço do comprador. |
address.street | string | Sim | Rua. |
address.number | string | Sim | Número. |
address.neighborhood | string | Sim | Bairro. |
address.city | string | Sim | Cidade. |
address.state | string | Sim | Estado. |
address.country | string | Sim | País. |
address.zipCode | string | Sim | CEP. |
address.complement | string | Sim | Complemento. |
bankAccounts | object | Sim | Contas do comprador. |
bankAccounts.bankCode | string | Sim | Código do banco. |
bankAccounts.bankName | string | Sim | Nome do banco. |
bankAccounts.branch | string | Sim | Filial. |
bankAccounts.branchCheckDigit | string | Sim | Dígito de verificação da filial. |
bankAccounts.account | string | Sim | Conta bancária. |
bankAccounts.accountCheckDigit | string | Sim | Dígito de verificação da conta bancária. |
bankAccounts.type | int | Sim | Tipo de conta. . |
bankAccounts.isActive | bool | Sim | Se a conta está ativa ou não. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
id | string | O ID do comprador |
name | string | Nome completo do comprador. |
string | E-mail do comprador. | |
entityType | entityType | Se é pessoa física ou jurídica. . |
documentType | documentType | [Tipo do documento do comprador. ](#document]. |
document | string | Documento do comprador. |
birthday | date | Data de nascimento do comprador. |
gender | Gender | Gênero do comprador. .. |
phone | object | Telefone do comprador. |
phone.countryCode | string | Código do país. |
phone.areaCode | string | Código de área. |
phone.number | string | Número do Telefone. |
phone.type | PhoneType | Tipo do telefone. . |
address | object | Endereço do comprador. |
address.street | string | Rua. |
address.number | string | Número. |
address.neighborhood | string | Bairro. |
address.city | string | Cidade. |
address.state | string | Estado. |
address.country | string | País. |
address.zipCode | string | CEP. |
address.complement | string | Complemento. |
bankAccounts | object | Contas do comprador. |
bankAccounts.bankCode | string | Código do banco. |
bankAccounts.bankName | string | Nome do banco. |
bankAccounts.branch | string | Filial. |
bankAccounts.branchCheckDigit | string | Dígito de verificação da filial. |
bankAccounts.account | string | Conta bancária. |
bankAccounts.accountCheckDigit | string | Dígito de verificação da conta bancária. |
bankAccounts.type | int | Tipo de conta. . |
bankAccounts.isActive | bool | Se a conta está ativa ou não. |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
errors.errorCode | int | Código do erro. |
errors.message | string | Mensagem para identificar qual foi o erro retornado. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token. |
BODY Raw
"customer": {
"name": "Yago Sebastião Lima",
"email": "yagosebastiaolima@archosolutions.com.br",
"entityType": 1,
"documentType": 1,
"document": "78112482802",
"phone": {
"countryCode": "55",
"areaCode": "21",
"number": "999999999",
"type": 5
}
}
}
PUT /customer
Versão v2.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/customer")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n \"customer\": {\r\n \"id\": \"ffede3ee-37ab-47bb-9981-d3d14697d67z\",\r\n \"name\": \"Yago Sebastião Lima\",\r\n \"email\": \"yagosebastiaolima@archosolutions.com.br\",\r\n \"entityType\": 1,\r\n \"documentType\": 1,\r\n \"document\": \"38000266350\",\r\n \"phone\": {\r\n \"countryCode\": \"55\",\r\n \"areaCode\": \"21\",\r\n \"number\": \"999999999\",\r\n \"type\": 5\r\n }\r\n }\r\n}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_GATEWAY}}/v2/customer"
payload="{\r\n \"customer\": {\r\n \"id\": \"ffede3ee-37ab-47bb-9981-d3d14697d67z\",\r\n \"name\": \"Yago Sebastião Lima\",\r\n \"email\": \"yagosebastiaolima@archosolutions.com.br\",\r\n \"entityType\": 1,\r\n \"documentType\": 1,\r\n \"document\": \"38000266350\",\r\n \"phone\": {\r\n \"countryCode\": \"55\",\r\n \"areaCode\": \"21\",\r\n \"number\": \"999999999\",\r\n \"type\": 5\r\n }\r\n }\r\n}"
headers = {
'Authorization': 'Bearer {{accessToken}}',
'Content-Type': 'application/json'
}
response = requests.request("PUT", url, headers=headers, data=payload)
print(response.text)
curl --location --request PUT '{{ENDPOINT_GATEWAY}}/v2/customer' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"customer": {
"id": "ffede3ee-37ab-47bb-9981-d3d14697d67z",
"name": "Yago Sebastião Lima",
"email": "yagosebastiaolima@archosolutions.com.br",
"entityType": 1,
"documentType": 1,
"document": "38000266350",
"phone": {
"countryCode": "55",
"areaCode": "21",
"number": "999999999",
"type": 5
}
}
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({"customer":{"id":"ffede3ee-37ab-47bb-9981-d3d14697d67z","name":"Yago Sebastião Lima","email":"yagosebastiaolima@archosolutions.com.br","entityType":1,"documentType":1,"document":"38000266350","phone":{"countryCode":"55","areaCode":"21","number":"999999999","type":5}}});
var requestOptions = {
method: 'PUT',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/customer", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"updatedCustomer": {
"id": "ffede3ee-37ab-47bb-9981-d3d14697d67z",
"name": "Yago Sebastião Lima",
"email": "yagosebastiaolima@archosolutions.com.br",
"entityType": "IndividualMerchant",
"documentType": "Cpf",
"document": "78112482802",
"gender": "Undefined",
"phone": {
"countryCode": "55",
"areaCode": "21",
"number": "999999999",
"type": "Mobile"
}
},
"success": true,
"errors": [],
"traceKey": "33d8aa2b-5b89-4f5f-a1ca-74b759658edf"
}
O Endpoint responsável por atualizar um comprador existente por seu ID. Todas as informações do comprador substituirão as existentes na base de dados, exceto o ID do comprador, que permanecerá o mesmo.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
name | string | Sim | Nome completo do comprador. |
string | Sim | E-mail do comprador. | |
entityType | entityType | Sim | Se é pessoa física ou jurídica. . |
documentType | documentType | Sim | Tipo do documento do comprador. . |
document | string | Sim | Documento do comprador. |
birthday | date | Não | Data de nascimento do comprador. |
gender | Gender | Não | Gênero do comprador. . |
phone | object | Sim | Telefone do comprador. |
phone.countryCode | string | Sim | Código do país. |
phone.areaCode | string | Sim | Código de área. |
phone.number | string | Sim | Número do Telefone. |
phone.type | PhoneType | Sim | Tipo do telefone. . |
address | object | Não | Endereço do comprador. |
address.street | string | Sim | Rua. |
address.number | string | Sim | Número. |
address.neighborhood | string | Sim | Bairro. |
address.city | string | Sim | Cidade. |
address.state | string | Sim | Estado. |
address.country | string | Sim | País. |
address.zipCode | string | Sim | CEP. |
address.complement | string | Sim | Complemento. |
bankAccounts | object | Sim | Contas do comprador. |
bankAccounts.bankCode | string | Sim | Código do banco. |
bankAccounts.bankName | string | Sim | Nome do banco. |
bankAccounts.branch | string | Sim | Filial. |
bankAccounts.branchCheckDigit | string | Sim | Dígito de verificação da filial. |
bankAccounts.account | string | Sim | Conta bancária. |
bankAccounts.accountCheckDigit | string | Sim | Dígito de verificação da conta bancária. |
bankAccounts.type | int | Sim | Tipo de conta. . |
bankAccounts.isActive | bool | Sim | Se a conta está ativa ou não. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
id | string | O ID do comprador |
name | string | Nome completo do comprador. |
string | E-mail do comprador. | |
entityType | entityType | Se é pessoa física ou jurídica. . |
documentType | documentType | [Tipo do documento do comprador. ](#document]. |
document | string | Documento do comprador. |
birthday | date | Data de nascimento do comprador. |
gender | Gender | Gênero do comprador. .. |
phone | object | Telefone do comprador. |
phone.countryCode | string | Código do país. |
phone.areaCode | string | Código de área. |
phone.number | string | Número do Telefone. |
phone.type | PhoneType | Tipo do telefone. . |
address | object | Endereço do comprador. |
address.street | string | Rua. |
address.number | string | Número. |
address.neighborhood | string | Bairro. |
address.city | string | Cidade. |
address.state | string | Estado. |
address.country | string | País. |
address.zipCode | string | CEP. |
address.complement | string | Complemento. |
bankAccounts | object | Contas do comprador. |
bankAccounts.bankCode | string | Código do banco. |
bankAccounts.bankName | string | Nome do banco. |
bankAccounts.branch | string | Filial. |
bankAccounts.branchCheckDigit | string | Dígito de verificação da filial. |
bankAccounts.account | string | Conta bancária. |
bankAccounts.accountCheckDigit | string | Dígito de verificação da conta bancária. |
bankAccounts.type | int | Tipo de conta. . |
bankAccounts.isActive | bool | Se a conta está ativa ou não. |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
errors.errorCode | int | Código do erro. |
errors.message | string | Mensagem para identificar qual foi o erro retornado. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token. |
BODY Raw
"customer": {
"id": "ffede3ee-37ab-47bb-9981-d3d14697d67z",
"name": "Yago Sebastião Lima",
"email": "yagosebastiaolima@archosolutions.com.br",
"entityType": 1,
"documentType": 1,
"document": "38000266350",
"phone": {
"countryCode": "55",
"areaCode": "21",
"number": "999999999",
"type": 5
}
}
}
GET /customer
Versão v2.0
Requisição HTTP
Exemplo de requisição (
Por ID
)
require "uri"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/customer?id={{customerId}}")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_GATEWAY}}/v2/customer?id={{customerId}}"
payload={}
headers = {
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
curl --location --request GET '{{ENDPOINT_GATEWAY}}/v2/customer?id={{customerId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/customer?id={{customerId}}", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
Exemplo de requisição (
Por Documento
)
require "uri"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/customer?document={{document}}")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_GATEWAY}}/v2/customer?document={{document}}"
payload={}
headers = {
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
curl --location -g --request GET '{{ENDPOINT_GATEWAY}}/v2/customer?document={{document}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/customer?document={{document}}", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"customer": {
"id": "ffede3ee-37ab-47bb-9981-d3d14697d67z",
"name": "Yago Sebastião Lima",
"email": "yagosebastiaolima@archosolutions.com.br",
"entityType": "IndividualMerchant",
"documentType": "Cpf",
"document": "38000266350",
"gender": "Undefined",
"phone": {
"countryCode": "55",
"areaCode": "21",
"number": "999999999",
"type": "Mobile"
}
},
"success": true,
"errors": [],
"traceKey": "660ba190-188c-4da9-8655-7aa61cef7d59"
}
O Endpoint responsável por obter um comprador com base no ID ou Documento, utilize um ou outro.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
id | string | Condicional | O ID do comprador. |
document | string | Condicional | O documento do comprador. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
id | string | O ID do comprador |
name | string | Nome completo do comprador. |
string | E-mail do comprador. | |
entityType | entityType | Se é pessoa física ou jurídica. . |
documentType | documentType | [Tipo do documento do comprador. ](#document]. |
document | string | Documento do comprador. |
birthday | date | Data de nascimento do comprador. |
gender | Gender | Gênero do comprador. .. |
phone | object | Telefone do comprador. |
phone.countryCode | string | Código do país. |
phone.areaCode | string | Código de área. |
phone.number | string | Número do Telefone. |
phone.type | PhoneType | Tipo do telefone. . |
address | object | Endereço do comprador. |
address.street | string | Rua. |
address.number | string | Número. |
address.neighborhood | string | Bairro. |
address.city | string | Cidade. |
address.state | string | Estado. |
address.country | string | País. |
address.zipCode | string | CEP. |
address.complement | string | Complemento. |
bankAccounts | object | Contas do comprador. |
bankAccounts.bankCode | string | Código do banco. |
bankAccounts.bankName | string | Nome do banco. |
bankAccounts.branch | string | Filial. |
bankAccounts.branchCheckDigit | string | Dígito de verificação da filial. |
bankAccounts.account | string | Conta bancária. |
bankAccounts.accountCheckDigit | string | Dígito de verificação da conta bancária. |
bankAccounts.type | int | Tipo de conta. . |
bankAccounts.isActive | bool | Se a conta está ativa ou não. |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
errors.errorCode | int | Código do erro. |
errors.message | string | Mensagem para identificar qual foi o erro retornado. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token. |
PARAMS | - |
---|---|
Id | {{customerId}} |
-- | Número de identificação do comprador. |
Document | {{document}} |
-- | Número do documento do comprador. |
Cobrança
A cobrança das transações, são os meios que serão utilizados nas mesmas. Exemplo: Boleto, crédito etc...
POST /charge/boleto
Versão v2.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "json"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/charge/boleto")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = JSON.dump({
"charge": {
"deadline": "2021-06-22",
"customer": {
"name": "Jorge Felipe",
"email": "jorginho.felps@email.com.br",
"entityType": 1,
"documentType": 1,
"document": "38000266350",
"Address": {
"street": "Av das dores",
"number": "99",
"neighborhood": "Vila Mança",
"city": "Rio de Janeiro",
"state": "RJ",
"country": "BR",
"zipCode": "212240080"
},
"phone": {
"countryCode": "55",
"areaCode": "21",
"number": "999999999",
"type": 5
}
},
"transactions": [
{
"amount": 1000,
"instructions": "Pagamento até o vencimento",
"bankIssuerDaysToCancel": 1
}
],
"source": 7
}
})
response = https.request(request)
puts response.read_body
import requests
import json
url = "{{ENDPOINT_GATEWAY}}/v2/charge/boleto"
payload = json.dumps({
"charge": {
"deadline": "2021-06-22",
"customer": {
"name": "Jorge Felipe",
"email": "jorginho.felps@email.com.br",
"entityType": 1,
"documentType": 1,
"document": "38000266350",
"Address": {
"street": "Av das dores",
"number": "99",
"neighborhood": "Vila Mança",
"city": "Rio de Janeiro",
"state": "RJ",
"country": "BR",
"zipCode": "212240080"
},
"phone": {
"countryCode": "55",
"areaCode": "21",
"number": "999999999",
"type": 5
}
},
"transactions": [
{
"amount": 1000,
"instructions": "Pagamento até o vencimento",
"bankIssuerDaysToCancel": 1
}
],
"source": 7
}
})
headers = {
'Authorization': 'Bearer {{accessToken}}',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
curl --location --request POST '{{ENDPOINT_GATEWAY}}/v2/charge/boleto' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"charge": {
"deadline": "2021-06-22",
"customer": {
"name": "Jorge Felipe",
"email": "jorginho.felps@email.com.br",
"entityType": 1,
"documentType": 1,
"document": "38000266350",
"Address": {
"street": "Av das dores",
"number": "99",
"neighborhood": "Vila Mança",
"city": "Rio de Janeiro",
"state": "RJ",
"country": "BR",
"zipCode": "212240080"
},
"phone": {
"countryCode": "55",
"areaCode": "21",
"number": "999999999",
"type": 5
}
},
"transactions": [
{
"amount": 1000,
"instructions": "Pagamento até o vencimento",
"bankIssuerDaysToCancel": 1
}
],
"source": 7
}
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
"charge": {
"deadline": "2021-06-22",
"customer": {
"name": "Jorge Felipe",
"email": "jorginho.felps@email.com.br",
"entityType": 1,
"documentType": 1,
"document": "38000266350",
"Address": {
"street": "Av das dores",
"number": "99",
"neighborhood": "Vila Mança",
"city": "Rio de Janeiro",
"state": "RJ",
"country": "BR",
"zipCode": "212240080"
},
"phone": {
"countryCode": "55",
"areaCode": "21",
"number": "999999999",
"type": 5
}
},
"transactions": [
{
"amount": 1000,
"instructions": "Pagamento até o vencimento",
"bankIssuerDaysToCancel": 1
}
],
"source": 7
}
});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/charge/boleto", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"charge": {
"id": "0b2edbfb-4770-43f6-afa8-af30d7ff8fc5",
"chargeStatus": "PreAuthorized",
"transactions": [
{
"aditumNumber": "0000000421 ",
"transactionId": "0000000000094",
"digitalLine": "03399000378200000000000009401019686590000001000",
"barcode": "03396865900000020009000381000000000000940101",
"bankSlipId": "0000000000094",
"deadline": "2021-06-22T00:00:00",
"paymentType": "Boleto",
"amount": 1000,
"transactionStatus": "PendingPayment",
"bankIssuerId": "Santander",
"bankErrorMessage": "00000 - Título registrado em cobrança",
"bankErrorCode": "0",
"creationDateTime": "2021-06-18T23:37:14.6061259Z",
"bankSlipUrl": "/v2/charge/0b2edbfb-4770-43f6-afa8-af30d7ff8fc5/boleto/0000000000094",
"virtualAcquirerId": "df61a4d2-d04c-4575-8713-26d6dbd50560"
}
]
},
"success": true,
"errors": [],
"traceKey": "e280c533-4327-4d4f-b2b3-a78ac75a1fb9"
}
O Endpoint responsável por criar uma nova cobrança em boleto.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
merchantChargeId | string | Não | ID de cobrança definido pelo sistema do comerciante. |
sessionId | string | Não | ID da sessão criada pelo servidor do site do cliente e usada durante a visita de um determinado usuário. |
deadline | string | Sim | Vencimento do boleto. |
smartCheckoutId | string | Não | ID Smart Checkout, se aplicável. |
customerId | string | Não | ID do cliente que foi adicionado anteriormente para o comerciante. |
customer | - | Sim | Dados do comprador. |
customer.name | string | Sim | Nome completo do comprador. |
customer.email | string | Sim | E-mail do comprador. |
customer.entityType | int | Sim | Se é pessoa física ou jurídica. . |
customer.documentType | documentType | Sim | Tipo do documento do comprador. . |
customer.document | string | Sim | Documento do comprador. |
customer.phone | object | Sim | Telefone do comprador. |
customer.phone.countryCode | string | Sim | Código do país. |
customer.phone.areaCode | string | Sim | Código de área. |
customer.phone.number | string | Sim | Número do Telefone. |
customer.phone.type | PhoneType | Sim | Tipo do telefone. . |
customer.address | object | Não | Endereço do comprador. |
customer.address.street | string | Sim | Rua. |
customer.address.number | string | Sim | Número. |
customer.address.neighborhood | string | Sim | Bairro. |
customer.address.city | string | Sim | Cidade. |
customer.address.state | string | Sim | Estado. |
customer.address.country | string | Sim | País. |
customer.address.zipCode | string | Sim | CEP. |
customer.address.complement | string | Sim | Complemento. |
transactions | - | Sim | Uma ou várias transações a serem realizadas dentro da cobrança. |
transactions.amount | int | Sim | Valor em centavos do boleto. |
transactions.fine.startDate | string | Sim | Data de início que multa começará a contar. |
transactions.fine.amount | int | Sim | Valor a ser pago após a data de vencimento. |
transactions.fine.interest | int | Sim | Os juros financeiros representam um valor em porcentagem que será calculado todos os dias após a data de vencimento. |
transactions.discount.type | int | Sim | Tipo de desconto. . |
transactions.discount.amount | int | Sim | Valor em centavos ou porcentagem com base no tipo de desconto. |
transactions.discount.deadline | string | Sim | Data limite em que o desconto pode ser aplicado. |
transactions.instructions | string | Não | Instruções de 255 caracteres a serem adicionadas no boleto bancário. |
bankIssuerDaysToCancel | int | Não | Dias para cancelamento automático após o vencimento pelo emissor do boleto. |
source | int | Sim | Define a fonte de cobrança.. . |
origin | string | Não | Uma propriedade que o cliente pode usar para identificar a origem da cobrança, como nome do fornecedor ou identificador. |
receivers.id | string | Sim | O ID do recebedor. |
receivers.mdrDiscount | bool | Não | IDs dos receptores envolvidos na cobrança. Isso definirá quem recebe a transação, dividindo o valor total da cobrança em pagamentos separados. |
receivers.fixedAmountComission | int | Não | Quantia fixa que o recebedor deve receber. |
receivers.chargeRemainder | bool | Não | Após o processamento dos valores de cada divisão, se sobrar centavos da divisão, este sinalizador indica o destinatário que deve receber os centavos extras. Isso pode ser usado para penny split (exemplo 100/3) ou para quando o destinatário não tem uma regra específica. |
receivers.percentageComission | int | Não | Essa comissão é calculada sobre o valor da transação, em porcentagem. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
merchantChargeId | string | ID de cobrança definido pelo sistema do comerciante. |
id | string | O ID da cobrança. |
chargeStatus | string | Indica o status da cobrança. |
transactions.aditumNumber | string | Número transacional. |
transactions.transactionId | string | O ID da transação. |
transactions.digitalLine | string | Uma linha de transmissão que usa apenas código binário para recepção e emissão. |
transactions.barcode | string | O código de barras do boleto. |
transactions.bankSlipId | string | O ID do boleto. |
transactions.deadline | string | Data de vencimento do boleto. |
transactions.paymentType | string | Tipo de pagamento. |
transactions.amount | int | Valor a pagar do boleto. |
transactions.transactionStatus | string | Indica o status da transação. |
transactions.bankIssuerId | string | O nome do banco. |
transactions.bankErrorMessage | string | A mensagem de erro enviada do banco. |
transactions.bankErrorCode | string | O código do erro enviado do banco. |
transactions.creationDateTime | string | A data de criação da cobrança. |
transactions.bankSlipUrl | string | O url da cobrança. |
transactions.fine.startDate | string | Data de início que multa começará a contar. |
transactions.fine.amount | int | Valor a ser pago após a data de vencimento. |
transactions.fine.interest | int | Os juros financeiros representam um valor em porcentagem que será calculado todos os dias após a data de vencimento. |
transactions.discount.type | int | Tipo de desconto. . |
transactions.discount.amount | int | Valor em centavos ou porcentagem com base no tipo de desconto. |
transactions.discount.deadline | string | Data limite em que o desconto pode ser aplicado. |
transactions.virtualAcquirerId | string | O adquirente virtual da taxa sobre boleto bancário. |
receivers.id | string | O ID do recebedor. |
receivers.mdrDiscount | bool | IDs dos receptores envolvidos na cobrança. Isso definirá quem recebe a transação, dividindo o valor total da cobrança em pagamentos separados. |
receivers.fixedAmountComission | int | Quantia fixa que o recebedor deve receber. |
receivers.chargeRemainder | bool | Após o processamento dos valores de cada divisão, se sobrar centavos da divisão, este sinalizador indica o destinatário que deve receber os centavos extras. Isso pode ser usado para penny split (exemplo 100/3) ou para quando o destinatário não tem uma regra específica. |
receivers.percentageComission | int | Essa comissão é calculada sobre o valor da transação, em porcentagem. |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token. |
BODY Raw
"charge": {
"deadline": "2021-06-22",
"customer": {
"name": "Yago Sebastião Lima",
"email": "yagosebastiaolima@archosolutions.com.br",
"entityType": 1,
"documentType": 1,
"document": "38000266350",
"Address": {
"street": "RUA ALEKRIN",
"number": "99",
"neighborhood": "Parque Residencial Nova Fronteira",
"city": "Gurupi",
"state": "BA",
"country": "BR",
"zipCode": "212211150"
},
"phone": {
"countryCode": "55",
"areaCode": "21",
"number": "999999999",
"type": 5
}
},
"transactions": [
{
"amount": 1000,
"instructions": "Pagamento até o vencimento",
"bankIssuerDaysToCancel": 1
}
],
"source": 7
}
}
PUT /charge/boleto
Versão v2.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/charge/boleto")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n \"chargeId\": \"0b2edbfb-4770-43f6-afa8-af30d7ff8fc5\",\r\n \"newDueDate\": \"2021-06-30\"\r\n}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_GATEWAY}}/v2/charge/boleto"
payload="{\r\n \"chargeId\": \"0b2edbfb-4770-43f6-afa8-af30d7ff8fc5\",\r\n \"newDueDate\": \"2021-06-30\"\r\n}"
headers = {
'Authorization': 'Bearer {{accessToken}}',
'Content-Type': 'application/json'
}
response = requests.request("PUT", url, headers=headers, data=payload)
print(response.text)
curl --location --request PUT '{{ENDPOINT_GATEWAY}}/v2/charge/boleto' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"chargeId": "0b2edbfb-4770-43f6-afa8-af30d7ff8fc5",
"newDueDate": "2021-06-30"
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({"chargeId":"0b2edbfb-4770-43f6-afa8-af30d7ff8fc5","newDueDate":"2021-06-30"});
var requestOptions = {
method: 'PUT',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/charge/boleto", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"bankSlipTransactionResult": {
"bankSlipId": "0000000000094",
"deadline": "2021-06-30T00:00:00",
"amount": 1000,
"transactionStatus": "PendingNewDeadline",
"bankIssuerId": "Santander",
"creationDateTime": "2021-06-18T20:54:41.6179778-03:00",
"status": "Pending"
},
"success": true,
"errors": [],
"traceKey": "d1ac301e-519b-4714-8eca-0d9c100837d8"
}
O Endpoint responsável por atualizar uma nova data de vencimento de um boleto bancário.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
chargeId | string | Sim | O ID da cobrança. |
newDueDate | string | Sim | A nova data de vencimento do boleto. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
bankSlipId | string | O ID do boleto bancário. |
deadline | string | O prazo final da transação. |
amount | int | Valor a ser cobrado. Obrigatório se o checkout / link de pagamento não possui produto(s). |
transactionStatus | string | Indica o status da transação. Ex Erro de Criação. |
bankIssuerId | string | O nome do banco. |
creationDateTime | string | A data de criação da transação. |
status | string | Indica o status atual da transação. |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token. |
BODY Raw
"chargeId": "0b2edbfb-4770-43f6-afa8-af30d7ff8fc5",
"newDueDate": "2021-06-30"
}
GET /charge/{{chargeId}}/boleto/{{transactionId}}
Versão v2.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/charge/{{chargeId}}/boleto/{{transactionId}}")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_GATEWAY}}/v2/charge/{{chargeId}}/boleto/{{transactionId}}"
payload={}
headers = {
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
curl --location -g --request GET '{{ENDPOINT_GATEWAY}}/v2/charge/{{chargeId}}/boleto/{{transactionId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/charge/{{chargeId}}/boleto/{{transactionId}}", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O Endpoint responsável por gerar um arquivo em .pdf com os dados do boleto.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
chargeId | string | Sim | O ID da cobrança. |
transactionId | string | Sim | O ID da transação. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
Boleto | Resposta retorna um boleto em .pdf. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token. |
PARAMS | - |
---|---|
chargeId | {{chargeId}} |
-- | O ID da cobrança. |
transactionId | {{transactionId}} |
-- | O ID da transação. |
GET /charge/{{chargeId}}
Versão v2.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/charge/{{chargeId}}")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_GATEWAY}}/v2/charge/{{chargeId}}"
payload={}
headers = {
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
curl --location -g --request GET '{{ENDPOINT_GATEWAY}}/v2/charge/{{chargeId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/charge/{{chargeId}}", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"charge": {
"merchantChargeId": "TASK 5333",
"id": "a7a1a873-ce15-5f83-a5fa-eb6f8637d102",
"nsu": "000005047",
"customerId": "ffede3ee-37ab-47bb-9971-d3d14697d67a",
"chargeStatus": "Authorized",
"transactions": [
{
"card": {
"id": "7903ef09-83c3-438d-ad39-9ea9e736e59b",
"customerId": "ffede3ee-37ab-47bb-9971-d3d14697d67a",
"cardNumber": "411111******1111",
"brand": "Visa",
"cardholderName": "Yago Sebastião Lima",
"cardholderDocument": "78112482802",
"isPrivateLabel": false,
"expirationMonth": 12,
"expirationYear": 2026,
"brandName": "Visa"
},
"isApproved": true,
"paymentType": "Credit",
"installmentType": "None",
"installmentNumber": 1,
"softDescriptor": "TESTE",
"amount": 1000,
"isCapture": true,
"isRecurrency": false,
"isCanceled": false,
"transactionId": "1624024252357",
"transactionStatus": "Captured",
"merchantTransactionId": "ff9624132c274c0ca878be991d3b6a87",
"acquirer": "Simulator",
"creationDateTime": "2021-06-18T10:50:52.37",
"captureDateTime": "2021-06-18T10:50:52.37",
"authorizationResponseCode": "00",
"authorizationCode": "927648",
"bankSlipStatus": 0
}
]
},
"success": true,
"errors": [],
"traceKey": "84272215-cfdd-42df-bfcd-4669ed40b269"
}
O Endpoint responsável por obter informações de uma cobrança pelo seu GUID ID ou NSU.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
chargeId | string | Sim | O ID da cobrança. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
id | string | O ID da cobrança. |
merchantChargeId | string | O ID de cobrança definido pelo sistema do comerciante. |
customerId | string | O ID do comprador. |
chargeStatus | string | Indica qual o status da cobrança. Ex: Não autorizado. |
transactions | - | Uma ou várias transações a serem realizadas dentro da cobrança. |
transactions.isApproved | bool | Indica se a transação foi aprovada ou não. |
transactions.installmentType | string | Tipo de parcelamento da transação |
transactions.installmentNumber | int | Numero de parcelas da transação, sendo 1 o valor mínimo. |
transactions.amount | int | Valor a ser cobrado. Obrigatório se o checkout / link de pagamento não possui produto(s). |
transactions.isCapture | bool | Indica se a cobrança foi capturada. |
transactions.isRecurrency | bool | Indica se a cobrança é uma recorrência. |
transactions.isCanceled | bool | Indica se a cobrança foi cancelada. |
transactions.acquirer | string | O nome da adquirente. |
transactions.creationDateTime | string | A data de criação da cobrança. |
transactions.bankSlipStatus | int | Indica o status do boleto bancário. |
transactions.bankIssuerNumber | string | O número do emissor do banco. |
transactions.aditumNumber | string | O número transacional. |
transactions.barcode | string | O código de barras do boleto. |
transactions.digitalLine | string | Uma linha de transmissão que usa apenas código binário para recepção e emissão. |
transactions.bankSlipId | string | O ID do boleto bancário. |
receivers | array | Informações dos recebedores, caso tenha cadastrado algum na cobrança. |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token. |
PARAMS | - |
---|---|
chargeId | {{chargeId}} |
-- | O ID da cobrança. |
PUT /charge/capture/{{chargeId}}
Versão v2.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/charge/capture/{{chargeId}}")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_GATEWAY}}/v2/charge/capture/{{chargeId}}"
payload="{}"
headers = {
'Authorization': 'Bearer {{accessToken}}',
'Content-Type': 'application/json'
}
response = requests.request("PUT", url, headers=headers, data=payload)
print(response.text)
curl --location -g --request PUT '{{ENDPOINT_GATEWAY}}/v2/charge/capture/{{chargeId}}' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({});
var requestOptions = {
method: 'PUT',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/charge/capture/{{chargeId}}", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"captured": true,
"charge": {
"merchantChargeId": "TASK 5333",
"id": "abcc2428-eb4e-4470-9d55-72edca459daf",
"nsu": "000005044",
"customerId": "ffede3ee-37ab-47bb-9981-d3d14697d67z",
"chargeStatus": "Authorized",
"transactions": [
{
"card": {
"id": "7903ef09-83c3-458d-ad39-9ea9e736e59b",
"customerId": "ffede3ee-37ab-47bb-9981-d3d14697d67z",
"cardNumber": "411111******1111",
"brand": "Visa",
"cardholderName": "Yago Sebastião Lima",
"cardholderDocument": "78112482802",
"isPrivateLabel": false,
"expirationMonth": 12,
"expirationYear": 2026,
"brandName": "Visa"
},
"isApproved": true,
"paymentType": "Credit",
"installmentType": "None",
"installmentNumber": 1,
"softDescriptor": "TASK 5333",
"amount": 1000,
"isCapture": true,
"isRecurrency": false,
"isCanceled": false,
"transactionId": "1623967391659",
"transactionStatus": "Captured",
"merchantTransactionId": "TASK 5333",
"acquirer": "Simulator",
"creationDateTime": "2021-06-17T19:03:11.683",
"captureDateTime": "2021-06-17T19:12:18.2281922-03:00",
"authorizationResponseCode": "00",
"authorizationCode": "304848",
"bankSlipStatus": 0
}
],
"metadata": {
"key_Sample": "Value_Sample"
}
},
"success": true,
"errors": [],
"traceKey": "8e3bbb8b-f38e-4872-bcaa-5b858d143d0d"
}
O Endpoint responsável por capturar uma transação pré autorizada.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
chargeId | string | Sim | O ID da cobrança. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
captured | bool | Indica se a transação foi capturada. |
merchantChargeId | string | O ID de cobrança definido pelo sistema do comerciante. |
id | string | O ID da cobrança. |
nsu | string | O número da transação. |
customerId | string | O ID do comprador. |
chargeStatus | string | Indica o status da cobrança. Ex: Autorizada. |
transactions | - | Uma ou várias transações a serem realizadas dentro da cobrança. |
transactions.card | - | O cartão utilizado na transação. |
transactions.card.id | string | O ID do cartão. |
transactions.card.customerId | string | O ID do comprador títular do cartão. |
transactions.card.cardNumber | string | O número impresso na frente do cartão. |
transactions.card.brand | string | A bandeira do cartão. |
transactions.card.cardholderName | string | O nome do títular impresso na frente do cartão. |
transactions.card.cardholderDocument | string | O documento do títular do cartão. |
transactions.card.billingAddress | array | É o endereço conectado ao cartão de crédito ou débito. As empresas usam o endereço de cobrança para verificar o uso autorizado de tal cartão. É também para onde as empresas enviam contas em papel e extratos bancários. |
transactions.card.billingAddress.street | string | Rua. |
transactions.card.billingAddress.number | string | Número. |
transactions.card.billingAddress.neighborhood | string | Bairro. |
transactions.card.billingAddress.city | string | Cidade. |
transactions.card.billingAddress.state | string | Estado. |
transactions.card.billingAddress.country | string | País. |
transactions.card.billingAddress.zipCode | string | CEP. |
transactions.card.isPrivateLabel | bool | Indica se o cartão é um produto de whitelabel ou não. Whitelabel é um produto ou serviço que uma empresa produz e comercializa com outras empresas que tem interesse em utilizar o mesmo com sua marca estampada. |
transactions.card.expirationMonth | int | O Mês de expiração do cartão com 2 dígitos. |
transactions.card.expirationYear | int | O Ano de expiração do cartão com 4 dígitos. |
transactions.card.fallback | bool | Uma bandeira que informa se a cobrança necessária será feita como fita magnética substituta. |
transactions.card.brandName | string | O nome da bandeira do cartão. |
transactions.isApproved | bool | Indica se a transação foi aprovada. |
transactions.paymentType | string | Tipo de pagamento. |
transactions.installmentType | string | Tipo de parcelamento da transação |
transactions.installmentNumber | int | Numero de parcelas da transação, sendo 1 o valor mínimo. |
transactions.softDescriptor | string | Breve descrição a ser apresentada na fatura bancária do cliente. Se nulo, ele será preenchido com um rótulo padrão definido pela . |
transactions.amount | int | Valor a ser cobrado. Obrigatório se o checkout / link de pagamento não possui produto(s). |
transactions.isCapture | bool | Indica se a cobrança foi capturada. |
transactions.isRecurrency | bool | Indica se a cobrança é uma recorrência. |
transactions.isCanceled | bool | Indica se a cobrança foi cancelada. |
transactions.transactionId | string | O ID da transação. |
transactions.transactionStatus | string | Indica qual o status da transação. |
transactions.merchantTransactionId | string | O ID da transação do Lojista |
transactions.acquirer | string | O nome da adquirente. |
transactions.creationDateTime | string | A data de criação da transação. |
transactions.captureDateTime | string | A data de captura da transação. |
transactions.bankSlipStatus | int | Status do boleto bancário. |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token. |
PUT /charge/cancelation/{chargeId}
Versão v2.0
Requisição HTTP
Exemplo de requisição (Cancelamento Total)
require "uri"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/charge/cancelation/{{chargeId}}")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_GATEWAY}}/v2/charge/cancelation/{{chargeId}}"
payload="{}"
headers = {
'Authorization': 'Bearer {{accessToken}}',
'Content-Type': 'application/json'
}
response = requests.request("PUT", url, headers=headers, data=payload)
print(response.text)
curl --location -g --request PUT '{{ENDPOINT_GATEWAY}}/v2/charge/cancelation/{{chargeId}}' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({});
var requestOptions = {
method: 'PUT',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/charge/cancelation/{{chargeId}}", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
Exemplo de requisição (Cancelamento Parcial)
require "uri"
require "json"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/charge/cancelation/{{chargeId}}")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = JSON.dump({
"amount": 1000
})
response = https.request(request)
puts response.read_body
import requests
import json
url = "{{ENDPOINT_GATEWAY}}/v2/charge/cancelation/{{chargeId}}"
payload = json.dumps({
"amount": 1000
})
headers = {
'Authorization': 'Bearer {{accessToken}}',
'Content-Type': 'application/json'
}
response = requests.request("PUT", url, headers=headers, data=payload)
print(response.text)
curl --location -g --request PUT '{{ENDPOINT_GATEWAY}}/v2/charge/cancelation/{{chargeId}}' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"amount": 1000
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
"amount": 1000
});
var requestOptions = {
method: 'PUT',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/charge/cancelation/{{chargeId}}", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"canceled": true,
"charge": {
"merchantChargeId": "TASK 5333",
"id": "7903ef09-83c3-458d-ad39-9ea9e736e59b",
"nsu": "000005045",
"customerId": "ffede3ee-37ab-47bb-9981-d3d14697d67z",
"chargeStatus": "Canceled",
"transactions": [
{
"card": {
"id": "7903ef09-83c3-458d-ad39-9ea9e736e59y",
"customerId": "ffede3ee-37ab-47bb-9981-d3d14697d67z",
"cardNumber": "411111******1111",
"brand": "Visa",
"cardholderName": "Yago Sebastião Lima",
"cardholderDocument": "78112482802",
"isPrivateLabel": false,
"expirationMonth": 12,
"expirationYear": 2026,
"brandName": "Visa"
},
"isApproved": true,
"paymentType": "Credit",
"installmentType": "None",
"installmentNumber": 1,
"softDescriptor": "TASK 5333",
"amount": 1000,
"isCapture": false,
"isRecurrency": false,
"isCanceled": true,
"transactionId": "1623968171596",
"transactionStatus": "Canceled",
"merchantTransactionId": "TASK 5333",
"acquirer": "Simulator",
"creationDateTime": "2021-06-17T19:16:11.602",
"captureDateTime": "0001-01-01T00:00:00",
"canceledDateTime": "2021-06-17T19:16:21.392273-03:00",
"authorizationResponseCode": "00",
"authorizationCode": "824057",
"bankSlipStatus": 0
}
],
"metadata": {
"key_Sample": "Value_Sample"
}
},
"success": true,
"errors": [],
"traceKey": "3803a0fd-9cc7-4ec1-bb69-ae5b87912c34"
}
O Endpoint responsável por cancelar uma transação autorizada.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
chargeId | string | Sim | O ID da cobrança. |
amount | int | Opcional | Pode ser utilizado para cancelar o valor total ou parcial da cobrança, se não for enviado o cancelamento é total. |
Resposta
Propriedade | Tipo | Descrição |
---|---|---|
canceled | bool | Indica se a transação foi cancelada. |
merchantChargeId | string | O ID de cobrança definido pelo sistema do comerciante. |
id | string | O ID da cobrança. |
nsu | string | O número da transação. |
customerId | string | O ID do comprador. |
chargeStatus | string | Indica o status da cobrança. Ex: Não autorizada. |
transactions | - | Uma ou várias transações a serem realizadas dentro da cobrança. |
transactions.card | - | O cartão utilizado na transação. |
transactions.card.id | string | O ID do cartão. |
transactions.card.customerId | string | O ID do comprador títular do cartão. |
transactions.card.cardNumber | string | O número impresso na frente do cartão. |
transactions.card.brand | string | A bandeira do cartão. |
transactions.card.cardholderName | string | O nome do títular impresso na frente do cartão. |
transactions.card.cardholderDocument | string | O documento do títular do cartão. |
transactions.card.billingAddress | array | É o endereço conectado ao cartão de crédito ou débito. As empresas usam o endereço de cobrança para verificar o uso autorizado de tal cartão. É também para onde as empresas enviam contas em papel e extratos bancários. |
transactions.card.billingAddress.street | string | Rua. |
transactions.card.billingAddress.number | string | Número. |
transactions.card.billingAddress.neighborhood | string | Bairro. |
transactions.card.billingAddress.city | string | Cidade. |
transactions.card.billingAddress.state | string | Estado. |
transactions.card.billingAddress.country | string | País. |
transactions.card.billingAddress.zipCode | string | CEP. |
transactions.card.isPrivateLabel | bool | Indica se o cartão é um produto de whitelabel ou não. Whitelabel é um produto ou serviço que uma empresa produz e comercializa com outras empresas que tem interesse em utilizar o mesmo com sua marca estampada. |
transactions.card.expirationMonth | int | O Mês de expiração do cartão com 2 dígitos. |
transactions.card.expirationYear | int | O Ano de expiração do cartão com 4 dígitos. |
transactions.card.fallback | bool | Uma bandeira que informa se a cobrança necessária será feita como fita magnética substituta. |
transactions.card.brandName | string | O nome da bandeira do cartão. |
transactions.isApproved | bool | Indica se a transação foi aprovada. |
transactions.paymentType | string | Tipo de pagamento. |
transactions.installmentType | string | Tipo de parcelamento da transação |
transactions.installmentNumber | int | Numero de parcelas da transação, sendo 1 o valor mínimo. |
transactions.softDescriptor | string | Breve descrição a ser apresentada na fatura bancária do cliente. Se nulo, ele será preenchido com um rótulo padrão definido pela . |
transactions.amount | int | Valor a ser cobrado. Obrigatório se o checkout / link de pagamento não possui produto(s). |
transactions.isCapture | bool | Indica se a cobrança foi capturada. |
transactions.isRecurrency | bool | Indica se a cobrança é uma recorrência. |
transactions.isCanceled | bool | Indica se a cobrança foi cancelada. |
transactions.transactionId | string | O ID da transação. |
transactions.transactionStatus | string | Indica qual o status da transação. |
transactions.merchantTransactionId | string | O ID da transação do Lojista |
transactions.acquirer | string | O nome da adquirente. |
transactions.errorCode | string | Indica o erro que foi apresentado na transação. |
transactions.errorMessage | string | A mensagem explicativa referente ao errorCode . |
transactions.creationDateTime | string | A data de criação da transação. |
transactions.captureDateTime | string | A data de captura da transação. |
transactions.bankSlipStatus | int | Status do boleto bancário. |
success | bool | Se o endpoint processou a requisição com sucesso. |
errors | Error[] | Se success: false , esse array contem a descrição dos erros retornados. |
traceKey | string | Identificador da operação. |
HEADERS | - |
---|---|
Bearer Token | {{accessToken}} |
-- | BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token. |
BODY raw
{
"antifraudCancel": true
}
POST /charge/authorization
Versão v2.0
Requisição HTTP
Exemplo de requisição
require "uri"
require "net/http"
url = URI("{{ENDPOINT_GATEWAY}}/v2/charge/authorization")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n \"charge\": {\r\n \"merchantChargeId\": \"TASK 5333\",\r\n \"customer\": {\r\n \"name\": \"Ester Patrícia Aparício\",\r\n \"email\": \"eesterpatriciaaparicio@ladder.com.br\",\r\n \"document\": \"71877920002\",\r\n \"documentType\": 1,\r\n \"phone\": {\r\n \"number\": \"999999999\",\r\n \"countryCode\": \"55\",\r\n \"areaCode\": \"21\",\r\n \"type\": 5\r\n }\r\n },\r\n \"transactions\": [\r\n {\r\n \"card\": {\r\n \"cardNumber\": \"4111111111111111\",\r\n \"cvv\": \"123\",\r\n \"brand\": 1,\r\n \"cardholderName\": \"Ester Patrícia Aparício\",\r\n \"cardholderDocument\": \"71877920002\",\r\n \"billingAddress\": {\r\n \"street\": \"Rua Juvêncio Erudilho\",\r\n \"number\": \"39\",\r\n \"neighborhood\": \"Centro\",\r\n \"city\": \"Gurupi\",\r\n \"state\": \"BA\",\r\n \"country\": \"BR\",\r\n \"zipCode\": \"44002-528\"\r\n },\r\n \"expirationMonth\": 12,\r\n \"expirationYear\": 2034\r\n },\r\n \"paymentType\": 2,\r\n \"amount\": 1000,\r\n \"installmentNumber\": 0,\r\n \"softDescriptor\": \"TASK 5333\",\r\n \"merchantTransactionId\": \"MTI TASK 5333\"\r\n }\r\n ],\r\n \"metadata\": [\r\n {\r\n \"key\": \"Key_Sample\",\r\n \"value\": \"Value_Sample\"\r\n }\r\n ],\r\n \"source\": 8\r\n }\r\n}"
response = https.request(request)
puts response.read_body
import requests
url = "{{ENDPOINT_GATEWAY}}/v2/charge/authorization"
payload="{\r\n \"charge\": {\r\n \"merchantChargeId\": \"TASK 5333\",\r\n \"customer\": {\r\n \"name\": \"Ester Patrícia Aparício\",\r\n \"email\": \"eesterpatriciaaparicio@ladder.com.br\",\r\n \"document\": \"71877920002\",\r\n \"documentType\": 1,\r\n \"phone\": {\r\n \"number\": \"999999999\",\r\n \"countryCode\": \"55\",\r\n \"areaCode\": \"21\",\r\n \"type\": 5\r\n }\r\n },\r\n \"transactions\": [\r\n {\r\n \"card\": {\r\n \"cardNumber\": \"4111111111111111\",\r\n \"cvv\": \"123\",\r\n \"brand\": 1,\r\n \"cardholderName\": \"Ester Patrícia Aparício\",\r\n \"cardholderDocument\": \"71877920002\",\r\n \"billingAddress\": {\r\n \"street\": \"Rua Juvêncio Erudilho\",\r\n \"number\": \"39\",\r\n \"neighborhood\": \"Centro\",\r\n \"city\": \"Gurupi\",\r\n \"state\": \"BA\",\r\n \"country\": \"BR\",\r\n \"zipCode\": \"44002-528\"\r\n },\r\n \"expirationMonth\": 12,\r\n \"expirationYear\": 2034\r\n },\r\n \"paymentType\": 2,\r\n \"amount\": 1000,\r\n \"installmentNumber\": 0,\r\n \"softDescriptor\": \"TASK 5333\",\r\n \"merchantTransactionId\": \"MTI TASK 5333\"\r\n }\r\n ],\r\n \"metadata\": [\r\n {\r\n \"key\": \"Key_Sample\",\r\n \"value\": \"Value_Sample\"\r\n }\r\n ],\r\n \"source\": 8\r\n }\r\n}"
headers = {
'Authorization': 'Bearer {{accessToken}}',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
curl --location --request POST '{{ENDPOINT_GATEWAY}}/v2/charge/authorization' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"charge": {
"merchantChargeId": "TASK 5333",
"customer": {
"name": "Ester Patrícia Aparício",
"email": "eesterpatriciaaparicio@ladder.com.br",
"document": "71877920002",
"documentType": 1,
"phone": {
"number": "999999999",
"countryCode": "55",
"areaCode": "21",
"type": 5
}
},
"transactions": [
{
"card": {
"cardNumber": "4111111111111111",
"cvv": "123",
"brand": 1,
"cardholderName": "Ester Patrícia Aparício",
"cardholderDocument": "71877920002",
"billingAddress": {
"street": "Rua Juvêncio Erudilho",
"number": "39",
"neighborhood": "Centro",
"city": "Gurupi",
"state": "BA",
"country": "BR",
"zipCode": "44002-528"
},
"expirationMonth": 12,
"expirationYear": 2034
},
"paymentType": 2,
"amount": 1000,
"installmentNumber": 0,
"softDescriptor": "TASK 5333",
"merchantTransactionId": "MTI TASK 5333"
}
],
"metadata": [
{
"key": "Key_Sample",
"value": "Value_Sample"
}
],
"source": 8
}
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({"charge":{"merchantChargeId":"TASK 5333","customer":{"name":"Ester Patrícia Aparício","email":"eesterpatriciaaparicio@ladder.com.br","document":"71877920002","documentType":1,"phone":{"number":"999999999","countryCode":"55","areaCode":"21","type":5}},"transactions":[{"card":{"cardNumber":"4111111111111111","cvv":"123","brand":1,"cardholderName":"Ester Patrícia Aparício","cardholderDocument":"71877920002","billingAddress":{"street":"Rua Juvêncio Erudilho","number":"39","neighborhood":"Centro","city":"Gurupi","state":"BA","country":"BR","zipCode":"44002-528"},"expirationMonth":12,"expirationYear":2034},"paymentType":2,"amount":1000,"installmentNumber":0,"softDescriptor":"TASK 5333","merchantTransactionId":"MTI TASK 5333"}],"metadata":[{"key":"Key_Sample","value":"Value_Sample"}],"source":8}});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("{{ENDPOINT_GATEWAY}}/v2/charge/authorization", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
O comando acima retorna um JSON estruturado assim:
{
"charge": {
"merchantChargeId": "TASK 5333",
"id": "3e60759b-e818-4a83-a98c-883fcd609d4f",
"nsu": "000000019",
"customerId": "a1a5a477-f8b5-471d-ab42-765c2e4b1ad1",
"chargeStatus": "Authorized",
"transactions": [
{
"card": {
"id": "65327e40-37ee-4c23-9369-4845519d19b7",
"customerId": "a1a5a477-f8b5-471d-ab42-765c2e4b1ad1",
"cardNumber": "411111******1111",
"brand": "Visa",
"cardholderName": "Ester Patrícia Aparício",
"cardholderDocument": "71877920002",
"billingAddress": {
"street": "Rua Juvêncio Erudilho",
"number": "39",
"neighborhood": "Centro",
"city": "Gurupi",
"state": "BA",
"country": "BR",
"zipCode": "44002-528"
},
"isPrivateLabel": false,
"expirationMonth": 12,
"expirationYear": 2034,
"brandName": "Visa"
},
"isApproved": true,
"paymentType": "Credit",
"installmentType": "None",
"installmentNumber": 1,
"softDescriptor": "AD*SBIBHOSPIT",
"amount": 1000,
"isCapture": true,
"isRecurrency": false,
"isCanceled": false,
"transactionId": "1623709631269",
"transactionStatus": "Captured",
"merchantTransactionId": "TASK 5333",
"acquirer": "Simulator",
"creationDateTime": "2021-06-14T19:27:11.3167988-03:00",
"captureDateTime": "2021-06-14T19:27:11.3156408-03:00",
"authorizationResponseCode": "00",
"authorizationCode": "689020",
"bankSlipStatus": 0
}
]
},
"success": true,
"errors": [],
"traceKey": "ac0ea0e1-ad9f-412e-a0bb-4b97e9893a3f"
}
O Endpoint responsável por criar uma nova cobrança, contendo uma ou várias transações autorizadas, usando um ou vários adquirentes. A carga não precisa ser capturada posteriormente.
Requisição
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
merchantChargeId | string | Não | O ID de cobrança definido pelo sistema do comerciante. |
sessionId | string | Não | ID da sessão criada pelo servidor do site do cliente e usada durante a visita de um determinado usuário. |
smartCheckoutId | string | Não | O ID do smartCheckout. |
id | string | Sim | O ID da cobrança. |
chargeStatus | int | Não | Status atual da cobrança, indicando em qual estágio do processo de autorização a cobrança está. Ele reflete diretamente todos os status de transação dentro da cobrança. |
customer | object | Sim | Dados do comprador. |
customer.id | string | Sim | O ID do comprador. |
customer.name | string | Sim | Nome completo do comprador. |
customer.email | string | Sim | E-mail do comprador. |
customer.entityType | entityType | Sim | Se é pessoa física ou jurídica. . |
customer.documentType | documentType | Sim | Tipo do documento do comprador. |
customer.document | string | Sim | Documento do comprador. |
customer.birthday | date | Não | Data de nascimento do comprador. |
customer.gender | Gender | Não | Gênero do comprador. . |
customer.phone | object | Sim | Telefone do comprador. |
customer.phone.countryCode | string | Sim | Código do país. |
customer.phone.areaCode | string | Sim | Código de área. |
customer.phone.number | string | Sim | Número do Telefone. |
customer.phone.type | PhoneType | Sim | Tipo do telefone. . |
customer.address | object | Não | Endereço do comprador. |
customer.address.street | string | Sim | Rua. |
customer.address.number | string | Sim | Número. |
customer.address.neighborhood | string | Sim | Bairro. |
customer.address.city | string | Sim | Cidade. |
customer.address.state | string | Sim | Estado. |
customer.address.country | string | Sim | País. |
customer.address.zipCode | string | Sim | CEP. |
customer.address.complement | string | Sim | Complemento. |
customer.bankAccounts | object | Não | Contas do comprador. |
customer.bankAccounts.bankCode | string | Sim | Código do banco. |
customer.bankAccounts.bankName | string | Sim | Nome do banco. |
customer.bankAccounts.branch | string | Sim | Filial. |
customer.bankAccounts.branchCheckDigit | string | Sim | Dígito de verificação da filial. |
customer.bankAccounts.account | string | Sim | Conta bancária. |
customer.bankAccounts.accountCheckDigit | string | Sim | Dígito de verificação da conta bancária. |
customer.bankAccounts.type | int | Sim | Tipo de conta. . |
customer.bankAccounts.isActive | bool | Sim | Se a conta está ativa ou não. |
transactions | object | Sim | Uma ou várias transações a serem realizadas dentro da cobrança. |
transactions.card | object | Não | O Cartão a ser utilizado na transação. |
transactions.card.id | string | Não | O ID do cartão. |
transactions.card.customerId | string | Não | O ID do comprador. |
transactions.card.cardNumber | string | Não | O número impresso na frente do cartão. |
transactions.card.cvv | string | Sim | Card Verification Value (CVV) é um recurso de segurança para transações de cartão de pagamento "cartão ausente" instituído para reduzir a incidência de fraude de cartão de crédito. Consiste em um número de 3-4 dígitos impresso no cartão. |
transactions.card.brand | int | Não | A bandeira do cartão à qual o imposto se aplica. . |
transactions.card.cardholderName | string | Não | O nome do títular do cartão. |
transactions.card.cardholderDocument | string | Não | O documento do títular do cartão. |
transactions.card.billingAddress | array | Não | É o endereço conectado ao cartão de crédito ou débito. As empresas usam o endereço de cobrança para verificar o uso autorizado de tal cartão. É também para onde as empresas enviam contas em papel e extratos bancários. |
transactions.card.billingAddress.street | string | Não | Rua. |
transactions.card.billingAddress.number | string | Não | Número. |
transactions.card.billingAddress.neighborhood | string | Não | Bairro. |
transactions.card.billingAddress.city | string | Não | Cidade. |
transactions.card.billingAddress.state | string | Não | Estado. |
transactions.card.billingAddress.country | string | Não | País. |
transactions.card.billingAddress.zipCode | string | Não | CEP. |
transactions.card.billingAddress.complement | string | Não | Complemento. |
transactions.card.isPrivateLabel | bool | Não | Indica se o cartão é um produto de whitelabel ou não. Whitelabel é um produto ou serviço que uma empresa produz e comercializa com outras empresas que tem interesse em utilizar o mesmo com sua marca estampada. |
transactions.card.expirationMonth | int | Não | O Mês de expiração do cartão com 2 dígitos. |
transactions.card.expirationYear | int | Não | O Ano de expiração do cartão com 4 dígitos. |
transactions.card.aid | string | Não | O AID é usado em uma transação EMV. |
transactions.card.entryMode | int | Não | O tipo de leitura do cartão, por ex. banda magnética, chip EMV, tecnologia sem contato. |
transactions.card.emvTags | string | Não | Tags EMV retornadas pelo cartão em caso de transação de contato emv. |
transactions.card.pinBlock | string | Não | O bloco de pins, no caso de pin online. |
transactions.card.ksn | string | Não | O número de série da chave usado para criptografar o pin. |
transactions.card.serviceCode | string | Não | Código de três dígitos, cada um representando uma configuração de cartão. |
transactions.card.acquirerVersion | string | Não | Versão das tabelas EMV definidas pelo adquirente. |
transactions.card.track1 | string | Não | Primeira fita magnética. |
transactions.card.track2 | string | Não | Segunda fita magnética. |
transactions.card.issuerScript | string | Não | Script do emissor a ser usado no comando FNC pelo pinpad ou POS. |
transactions.card.sequenceNumber | string | Não | O número que distingue entre cartões separados com o mesmo número de conta principal (PAN) ou PAN estendido. |
transactions.card.fallback | bool | Não | Uma bandeira que informa se a cobrança necessária será feita como fita magnética substituta. |
transactions.card.brandName | string | Não | O nome da bandeira do cartão. |
transactions.card.panEncryptionKsn | string | Não | Key Sequence Number (KSN) usado para criptografar, usando o pinpad. Usado apenas por InfinitePay. |
transactions.card.encryptedPan | string | Não | PAN recortado e criptografado. A criptografia ocorre dentro do pinpad. |
transactions.card.balance | int | Não | Saldo de cartões do tipo voucher. |
transactions.paymentType | int | Sim | Tipo de transação. . |
transactions.amount | int | Sim | O valor do pagamento em centavos. |
transactions.installmentNumber | int | Sim | Quantidade de parcelas. Só pode ser maior que 1 se o tipo de transação for crédito. |
transactions.softDescriptor | string | Não | Breve descrição a ser apresentada na fatura bancária do cliente. Se nulo, ele será preenchido com um rótulo padrão definido pela . |
transactions.merchantTransactionId | string | Não | Identificador de pedido definido pelo sistema do estabelecimento comercial. Esta propriedade é obrigatória e servirá para capturar, cancelar e consultar posteriormente a transação. |
transactions.installmentType | int | Sim | Tipo de parcelamento da transação |
transactions.acquirer | int | Sim | O ID da adquirente. . |
transactions.deviceIdentifier | string | Não | Um número de série, imei, endereço MAC ou qualquer coisa que defina apenas um dispositivo. |
transactions.device | object | Não | Informações do dispositivo de pagamento. Obrigatório apenas para transações físicas. |
transactions.device.abecsVersion | string | Não | Versão ABECS. Igual a GIN_SPECVER da especificação ABECS. |
transactions.device.osVersion | string | Não | Versão do sistema operacional Pinpad. Igual a GIN_SOVER da especificação ABECS. |
transactions.device.manufacturerVersion | string | Não | Versão do fabricante. Igual a GIN_MANVER da especificação ABECS. |
transactions.device.manufacturer | string | Não | Nome do fabricante. Igual a GIN_MNAME da especificação ABECS. |
transactions.device.model | string | Não | Nome do modelo do terminal. Igual a GIN_MODEL da especificação ABECS. |
transactions.device.serialNumber | string | Não | Número de série do terminal. O mesmo que GIN_SERNUM da especificação ABECS. |
transactions.device.emvKernelVersion | string | Não | Versão do kernel EMV. Corresponde a PP_KRNLVER da ABECS. |
transactions.device.contactlessEmvKernelVersion | string | Não | Versão do kernel sem contato. Corresponde a PP_CTLSVER da ABECS. |
transactions.device.amexContactlessEmvKernelVersion | string | Não | Versão do kernel sem contato para American Express. Corresponde a PP_AECTLSVER da ABECS. |
transactions.device.discorverEloContactlessEmvKernelVersion | string | Não | Versão do kernel sem contato para Discover / Elo. Corresponde a PP_DPCTLSVER da ABECS. |
transactions.device.masterCardContactlessEmvKernelVersion | string | Não | Contactless Kernel version for MasterCard PayPass. Corresponds to PP_MCTLSVER from ABECS. |
transactions.device.pureContactlessEmvKernelVersion | string | Não | Versão do kernel sem contato para Pure. Corresponde a PP_PUREVER da ABECS. |
transactions.device.visaContactlessEmvKernelVersion | string | Não | Versão do kernel sem contato para Visa Wave. Corresponde a PP_VCTLSVER da ABECS. |
transactions.firstSubscriptionCharge | bool | Não | Indica se a transação é a primeira cobrança de assinatura. |
transactions.productIds | array(string) | Não | O ID de cada produto sendo comprado pela transação. |
transactions.source | array | Sim | É a origem da transação |
transactions.source.id | string | Sim | O ID do SmartCheckout |
transactions.source.type | int | Sim | Tipo de smartCheckout. . |
source | int | Sim |