Skip to content

Repository files navigation

SDK PHP

SDK de integração eRede

⚠️ Atualização Importante - Nova Autenticação

A partir de janeiro de 2026, a Rede implementou um novo método de autenticação baseado em OAuth2 para aprimorar a segurança das transações.

A versão 2.x deste SDK é compatível com o novo método de autenticação OAuth2, garantindo uma transição suave e segura para os desenvolvedores.

Para mais detalhes sobre a nova autenticação e migração, consulte a documentação oficial da e-Rede.

Funcionalidades

Este SDK possui as seguintes funcionalidades:

  • Autorização
  • Captura
  • Consultas
  • Cancelamento
  • 3DS2
  • Zero dollar
  • iata
  • MCC dinâmico.
  • PIX

Dependências

  • PHP >= 8.2

Instalando o SDK

Se já possui um arquivo composer.json, basta adicionar a seguinte dependência ao seu projeto:

{
"require": {
"silbeckdevs/erede-php": "^2.0.0"
}
}

Com a dependência adicionada ao composer.json, basta executar:

composer install

Alternativamente, você pode executar diretamente em seu terminal:

composer require "silbeckdevs/erede-php"

Comandos

  • Rodar todos os testes e PHPStan composer test
  • Rodar todos os testes composer phpunit
  • Testes unitários composer test:unit
  • Testes integração composer test:e2e
  • PHPStan composer phpstan
  • PHP-CS-Fixer verify composer format:check
  • PHP-CS-Fixer fix composer format:fix

Testes

O SDK utiliza PHPUnit com TestDox para os testes. Para executá-los em ambiente local, você precisa exportar as variáveis de ambiente REDE_PV e REDE_TOKEN com suas credenciais da API. Feito isso, basta rodar:

export REDE_PV=1234
export REDE_TOKEN=5678
export REDE_DEBUG=0

Ou copie o arquivo tests/config/env.test.php.example para tests/config/env.test.php e adicione as suas credenciais

Configuração da loja

A configuração da loja é feita através da classe Store. Ela possui os seguintes parâmetros:

  • filiation: Número de filiação do estabelecimento (ClientId na versão 2.x)
  • token: Chave de Integração (ClientSecret na versão 2.x)
  • environment: Ambiente da loja (Production ou Sandbox)
<?php// Configuração da loja em modo produção$store = newStore('PV', 'TOKEN', Environment::production());
// Configuração da loja em modo sandbox// $store = new \Rede\Store('PV', 'TOKEN', \Rede\Environment::sandbox());$eRedeService = new \Rede\eRede($store);

Autorizando uma transação

<?php// Transação que será autorizada$transaction = (newTransaction(20.99, 'pedido' . time()))->creditCard(
'5448280000000007',
'235',
'12',
'2020',
'John Snow'
);
// Autoriza a transação$transaction = $eRedeService->create($transaction);
if ($transaction->getReturnCode() == '00') {
printf("Transação autorizada com sucesso; tid=%s\n", $transaction->getTid());
}

Por padrão, a transação é capturada automaticamente; caso seja necessário apenas autorizar a transação, o método Transaction::capture() deverá ser chamado com o parâmetro false:

<?php// Transação que será autorizada$transaction = (newTransaction(20.99, 'pedido' . time()))->creditCard(
'5448280000000007',
'235',
'12',
'2020',
'John Snow'
)->capture(false);
// Autoriza a transação$transaction = $eRedeService->create($transaction);
if ($transaction->getReturnCode() == '00') {
printf("Transação autorizada com sucesso; tid=%s\n", $transaction->getTid());
}
//...

Adiciona configuração de parcelamento

<?php// Transação que será autorizada$transaction = (newTransaction(20.99, 'pedido' . time()))->creditCard(
'5448280000000007',
'235',
'12',
'2020',
'John Snow'
);
// Configuração de parcelamento$transaction->setInstallments(3);
// Autoriza a transação$transaction = $eRedeService->create($transaction);
if ($transaction->getReturnCode() == '00') {
printf("Transação autorizada com sucesso; tid=%s\n", $transaction->getTid());
}

Adiciona informação adicional de gateway e módulo

<?php// Transação que será autorizada$transaction = (newTransaction(20.99, 'pedido' . time()))->creditCard(
'5448280000000007',
'235',
'12',
'2020',
'John Snow'
)->additional(1234, 56);
// Autoriza a transação$transaction = $eRedeService->create($transaction);
if ($transaction->getReturnCode() == '00') {
printf("Transação autorizada com sucesso; tid=%s\n", $transaction->getTid());
}

Autorizando uma transação com MCC dinâmico

<?php// Transação que será autorizada$transaction = (newTransaction(20.99, 'pedido' . time()))->creditCard(
'5448280000000007',
'235',
'12',
'2020',
'John Snow'
)->mcc(
'LOJADOZE',
'22349202212',
newSubMerchant(
'1234',
'São Paulo',
'Brasil'
)
);
// Autoriza a transação$transaction = $eRedeService->create($transaction);
if ($transaction->getReturnCode() == '00') {
printf("Transação autorizada com sucesso; tid=%s\n", $transaction->getTid());
}
//...

Autorizando uma transação IATA

<?php// Transação que será autorizada$transaction = (newTransaction(20.99, 'pedido' . time()))->creditCard(
'5448280000000007',
'235',
'12',
'2020',
'John Snow'
)->iata('code123', '250');
// Autoriza a transação$transaction = $eRedeService->create($transaction);
if ($transaction->getReturnCode() == '00') {
printf("Transação autorizada com sucesso; tid=%s\n", $transaction->getTid());
}

Capturando uma transação

<?php// Transação que será capturada$transaction = $eRedeService->capture((newTransaction(20.99))->setTid('TID123'));
if ($transaction->getReturnCode() == '00') {
printf("Transação capturada com sucesso; tid=%s\n", $transaction->getTid());
}

Cancelando uma transação

<?php// Transação que será cancelada$transaction = $eRedeService->cancel((newTransaction(20.99))->setTid('TID123'));
if ($transaction->getReturnCode() == '359') {
printf("Transação cancelada com sucesso; tid=%s\n", $transaction->getTid());
}

Consultando uma transação pelo ID

<?php// Consulta a transação pelo ID$transaction = $eRedeService->get('TID123');
printf("O status atual da autorização é %s\n", $transaction->getAuthorization()->getStatus());

Consultando uma transação pela referência

<?php// Consulta a transação pela referência$transaction = $eRedeService->getByReference('pedido123');
printf("O status atual da autorização é %s\n", $transaction->getAuthorization()->getStatus());

Consultando cancelamentos de uma transação

<?php// Consulta os cancelamentos de uma transação$transaction = $eRedeService->getRefunds('TID123');
printf("O status atual da autorização é %s\n", $transaction->getAuthorization()->getStatus());

Transação com autenticação

<?php// Configura a transação que será autorizada após a autenticação$transaction = (newTransaction(25, 'pedido' . time()))->debitCard(
'5277696455399733',
'123',
'01',
'2020',
'John Snow'
);
// Configura o 3dSecure para autenticação$transaction->threeDSecure(
newDevice(
colorDepth: 1,
deviceType3ds: 'BROWSER',
javaEnabled: false,
language: 'BR',
screenHeight: 500,
screenWidth: 500,
timeZoneOffset: 3
)
);
$transaction->addUrl('https://redirecturl.com/3ds/success', Url::THREE_D_SECURE_SUCCESS);
$transaction->addUrl('https://redirecturl.com/3ds/failure', Url::THREE_D_SECURE_FAILURE);
$transaction = $eRedeService->create($transaction);
if ($transaction->getReturnCode() == '220') {
printf("Redirecione o cliente para \"%s\" para autenticação\n", $transaction->getThreeDSecure()->getUrl());
}

Transação com PIX

<?php// Configura a transação para o PIX e passa a data de expiração$transaction = (newTransaction(200.99, 'pedido' . time()))->createQrCode(new \DateTimeImmutable('+ 1 hour'));
$transaction = $eRedeService->create($transaction);
if ($transaction->getReturnCode() == '00') {
printf(
"Transação criada com sucesso; tid=%s, qrCodeData=%s, qrCodeImage=%s\n",
$transaction->getTid(), $transaction->getQrCode()->getQrCodeData(), $transaction->getQrCode()->getQrCodeImage()
);
}

Observações

  • Ao criar uma transação com $transaction = $eRedeService->create($transaction) não vai retornar o campo authorization, para retornar o campo é preciso fazer uma consulta $transaction = $eRedeService->get('TID123')
  • O campo $transaction->getAuthorizationCode() não está retornando nada, use $transaction->getBrand()?->getAuthorizationCode() ou $transaction->getAuthorization()?->getBrand()?->getAuthorizationCode()
  • Caso precise acessar o JSON original do response utilize $transaction?->getHttpResponse()->getBody()

Gerenciamento de Token OAuth2

O token de autenticação OAuth2 possui um tempo de expiração de 24 minutos. Para otimizar o desempenho e evitar requisições desnecessárias, é recomendado salvar e reutilizar o token enquanto ele estiver válido.

Exemplo de implementação:

<?php$store = newStore('PV', 'TOKEN', Environment::production());
$eRedeService = neweRede($store);
// Faça suas requisições...// Salve o token para reutilização e salve em um local seguro$cachedToken = json_encode($eRedeService->getOAuthToken());
// Para reutilizar o token, basta decodificar o JSON e setar no store$store->setOAuthToken((newOAuthToken())->populate(json_decode($cachedToken)));
$eRedeService = neweRede($store);

Recomendações:

  • Armazene o token em cache (Redis, Memcached) ou banco de dados para ambientes de produção
  • Sempre verifique a expiração antes de reutilizar o token
  • O SDK gerencia automaticamente a renovação quando o token expira