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>