A maxiPago! oferece aos seus clientes a possibilidade de agendar cobranças recorrentes de cartão de crédito. Nesta modalidade o número e a data de vencimento do cartão são guardados em nossos servidores seguros, junto com o intervalo de cobrança. A maxiPago! ficará encarregada de cobrar o seu cliente quando chegar a hora.
A estrutura do XML de uma transação recorrente é muito similar a de uma requisição de Venda Direta. O nó <recurring/> deve ser utilizado para determinar o intervalo de cobrança do pedido, e o nome do elemento da transação é <recurringPayments/>.
Categorização de transações card-on-file
Desde outubro de 2022, devido a mudanças regulatórias de bandeiras, as transações card-on-file da bandeira Mastercard passarão a ser categorizadas em 12 tipos de categorias CIT (Iniciadas pelo portador do cartão – Card Holder) e MIT (Iniciadas pelo estabelecimento – Merchant). Desde 1 de junho de 2023, a bandeira passou a monitorar o envio do campo, fique atento pois podem ocorrer ações de compliance.
O crescimento contínuo do comércio eletrônico, juntamente com o aumento dos tipos de transação, exige a necessidade de entender a intenção do consumidor. A introdução do indicador CIT ou MIT fornece transparência permitindo o uso para:
- Lógica de autorização do emissor
- Detecção de fraude
- Gestão de disputas
Por isso, é necessário realizar ajustes em sua integração com o e.Rede para envio do campo chamado “credentialId”, que fará parte do grupo “transactionCredentials”. Desse modo, quando storageCard for igual a 1 ou 2, indicando que o cartão está sendo ou já foi armazenado, será obrigatório indicar em qual categoria a transação card-on-file (credencial armazenada) está enquadrada.
O envio também deve ser feito em transações Zero Dollar que pretendem armazenar o cartão.
O envio deste campo passou a ser obrigatório para a operação Mastercard desde 01 de junho de 2023, e a partir de 01 de junho de 2024, a bandeira Mastercard poderá aplicar penalidades em caso de não conformidade dos estabelecimentos, referente ao período fora da norma. Entre os benefícios do envio do campo, está a capacidade de apoiar a bandeira e o emissor na análise de suas transações, o que pode ajudar na conversão. Os outros campos já utilizados atualmente para finalidades semelhantes como storageCard, subscription e installments, precisam continuar a ser populados.
Para o envio correto do campo Storage Card e Credential Id nas Transações 3DS Rede é necessário seguir tabela de parâmetros contida na Documentação do e.Rede:
Tabela de Categorização de transações card-on-file Rede
Criando a Recorrência – URLs Para Envio dos Dados
SANDBOX: https://testapi.maxipago.net/UniversalAPI/postXML
PRODUÇÃO: https://api.maxipago.net/UniversalAPI/postXML
Criando a Recorrência – Exemplo de Requisição
O exemplo abaixo possuí todos os parâmetros disponíveis, mas nem todos são obrigatórios.
<transaction-request>
<version>3.1.1.15</version>
<verification>
<merchantId>store-id</merchantId>
<merchantKey>store-key</merchantKey>
</verification>
<order>
<recurringPayment>
<processorID>1</processorID>
<referenceNum>TestTransaction123344</referenceNum>
<ipAddress>123.123.123.123</ipAddress>
<customerIdExt>123.123.123-12</customerIdExt>
<billing>
<name>Cliente Gateway</name>
<address>Rua Volkswagem 1</address>
<address2>11 andar</address2>
<city>Sao Paulo</city>
<state>SP</state>
<postalcode>04344902</postalcode>
<country>Brasil</country>
<phone>1140044828</phone>
<email>clientegateway@clientegateway.com.br</email>
<companyName>Empresa X</companyName>
</billing>
<shipping>
<name>Cliente Gateway</name>
<address>Rua Volkswagem 1</address>
<address2>11 andar</address2>
<city>Sao Paulo</city>
<state>SP</state>
<postalcode>04344902</postalcode>
<country>Brasil</country>
<phone>1140044828</phone>
<email>clientegateway@clientegateway.com.br</email>
</shipping>
<transactionDetail>
<payType>
<creditCard>
<number>5155900383265017</number>
<expMonth>12</expMonth>
<expYear>2030</expYear>
<cvvNumber>954</cvvNumber>
<storageCard>1</storageCard>
<credentialId>03</credentialId>
</creditCard>
</payType>
</transactionDetail>
<payment>
<chargeTotal>10.00</chargeTotal>
<currencyCode>BRL</currencyCode>
</payment>
<recurring>
<action>new</action>
<startDate>2025-12-01</startDate>
<period>monthly</period>
<frequency>1</frequency>
<installments>12</installments>
<firstAmount>22.00</firstAmount>
<lastAmount>22.00</lastAmount>
<lastDate>2026-12-01</lastDate>
<failureThreshold>15</failureThreshold>
<onFailureAction>skip</onFailureAction>
</recurring>
</recurringPayment>
</order>
</transaction-request>
Criando a Recorrência – Exemplo de Retorno em Caso de Suceso
<?xml version="1.0" encoding="UTF-8"?>
<transaction-response>
<authCode>123456</authCode>
<orderID>0A0115AF:017C77202440:B185:5F0F20B1</orderID>
<referenceNum>TestTransaction123344</referenceNum>
<transactionID>417853565</transactionID>
<transactionTimestamp>1634086167</transactionTimestamp>
<responseCode>0</responseCode>
<responseMessage>CAPTURED</responseMessage>
<avsResponseCode>YYY</avsResponseCode>
<cvvResponseCode>M</cvvResponseCode>
<processorCode>A</processorCode>
<processorMessage>APPROVED</processorMessage>
<processorName>SIMULATOR</processorName>
<errorMessage/>
<processorTransactionID>948380</processorTransactionID>
<processorReferenceNumber>138541</processorReferenceNumber>
<creditCardCountry>US</creditCardCountry>
<creditCardScheme>JCB</creditCardScheme>
<brandcode>00</brandcode>
<brandmessage>Success.</brandmessage>
<brandtransactionid>021534</brandtransactionid>
</transaction-response>
Criando a Recorrência – Exemplo de Retorno em Caso de Erro
<?xml version="1.0" encoding="UTF-8"?>
<transaction-response>
<authCode/>
<orderID/>
<referenceNum/>
<transactionID/>
<transactionTimestamp>1634086666896</transactionTimestamp>
<responseCode>1024</responseCode>
<responseMessage>INVALID REQUEST</responseMessage>
<avsResponseCode/>
<cvvResponseCode/>
<processorCode/>
<processorMessage/>
<processorName>SIMULATOR</processorName>
<creditCardBin>355046</creditCardBin>
<creditCardLast4>5915</creditCardLast4>
<errorMessage>Recurring Payment StartDate must be greater than today.</errorMessage>
<creditCardScheme>JCB</creditCardScheme>
</transaction-response>