devsitarget / sdk-erede-php-oauth
SDK PHP para integração com eRede utilizando autenticação OAuth 2.0
Installs: 16
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/devsitarget/sdk-erede-php-oauth
Requires
- php: >=8.1
- guzzlehttp/guzzle: ^7.5
- psr/http-client: ^1.0
- psr/http-message: ^1.0 || ^2.0
- psr/log: ^1.0 || ^2.0 || ^3.0
Requires (Dev)
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.0
- squizlabs/php_codesniffer: ^3.7
README
SDK de integração com eRede utilizando autenticação OAuth 2.0 ao invés de Basic Auth.
Funcionalidades
Este SDK possui as seguintes funcionalidades:
- Autenticação OAuth 2.0
- Autorização de transações
- Captura de transações
- Consulta de transações (por TID ou referência)
- Cancelamento de transações
- Parcelamento
Requisitos
- PHP >= 8.1
- Docker e Docker Compose (para desenvolvimento)
Instalação
Via Composer
O pacote está disponível no Packagist.
composer require devsitarget/sdk-erede-php-oauth
Via Docker
# Construir a imagem Docker make build # Iniciar o container make up # Instalar dependências make install # Configurar .env para testes (opcional) make setup-env
Configuração
Credenciais OAuth
Configure as credenciais OAuth diretamente no código:
<?php use RedeOAuth\Store; use RedeOAuth\Environment; use RedeOAuth\OAuth\OAuthClient; // Configuração para sandbox $oauthClient = new OAuthClient('https://rl7-sandbox-api.useredecloud.com.br/oauth2/token'); $store = new Store('MERCHANT_ID', 'MERCHANT_KEY', Environment::sandbox(), $oauthClient); // Configuração para produção $oauthClient = new OAuthClient('https://api.userede.com.br/erede/oauth2/token'); $store = new Store('MERCHANT_ID', 'MERCHANT_KEY', Environment::production(), $oauthClient);
Uso Básico
Configuração Inicial
<?php use RedeOAuth\Store; use RedeOAuth\Environment; use RedeOAuth\OAuth\OAuthClient; // Configuração da loja com OAuth em modo sandbox $oauthClient = new OAuthClient('https://rl7-sandbox-api.useredecloud.com.br/oauth2/token'); $store = new Store('MERCHANT_ID', 'MERCHANT_KEY', Environment::sandbox(), $oauthClient); // Para produção $oauthClient = new OAuthClient('https://api.userede.com.br/erede/oauth2/token'); $store = new Store('MERCHANT_ID', 'MERCHANT_KEY', Environment::production(), $oauthClient);
Autorizando uma transação
<?php use RedeOAuth\Store; use RedeOAuth\Environment; use RedeOAuth\Transaction; use RedeOAuth\eRede; use RedeOAuth\OAuth\OAuthClient; // Configuração da loja $oauthClient = new OAuthClient('https://rl7-sandbox-api.useredecloud.com.br/oauth2/token'); $store = new Store('MERCHANT_ID', 'MERCHANT_KEY', Environment::sandbox(), $oauthClient); // Transação que será autorizada (sem captura automática) $transaction = (new Transaction(20.99, 'pedido' . time()))->creditCard( '5448280000000007', '235', '12', '2025', 'John Snow' )->capture(false); try { $response = (new eRede($store))->create($transaction); if ($response->getReturnCode() == '00') { printf("Transação autorizada com sucesso; tid=%s\n", $response->getTid()); } else { printf("Transação recusada: %s\n", $response->getReturnMessage()); } } catch (\Exception $e) { printf("Erro: %s\n", $e->getMessage()); }
Autorizando e capturando uma transação
<?php // Assumindo que $store já foi configurado anteriormente // Transação com captura automática $transaction = (new Transaction(20.99, 'pedido' . time()))->creditCard( '5448280000000007', '235', '12', '2025', 'John Snow' )->capture(true); $response = (new eRede($store))->create($transaction); if ($response->getReturnCode() == '00') { printf("Transação autorizada e capturada; tid=%s\n", $response->getTid()); }
Transação com parcelamento
<?php $transaction = (new Transaction(100.00, 'pedido' . time()))->creditCard( '5448280000000007', '235', '12', '2025', 'John Snow' )->setInstallments(3); $response = (new eRede($store))->create($transaction); if ($response->getReturnCode() == '00') { printf("Transação parcelada em %dx; tid=%s\n", $response->getInstallments(), $response->getTid()); }
Transação com informações adicionais (gateway e módulo)
<?php $transaction = (new Transaction(20.99, 'pedido' . time()))->creditCard( '5448280000000007', '235', '12', '2025', 'John Snow' )->additional(1234, 56); $response = (new eRede($store))->create($transaction);
Capturando uma transação pré-autorizada
<?php // Primeiro autoriza sem captura $transaction = (new Transaction(20.99, 'pedido' . time()))->creditCard( '5448280000000007', '235', '12', '2025', 'John Snow' )->capture(false); $response = (new eRede($store))->create($transaction); // Depois captura usando o TID $captureTransaction = (new Transaction(20.99))->setTid($response->getTid()); $captureResponse = (new eRede($store))->capture($captureTransaction); if ($captureResponse->getReturnCode() == '00') { printf("Transação capturada com sucesso; tid=%s\n", $captureResponse->getTid()); }
Cancelando uma transação
<?php // Cancela uma transação usando o TID $cancelTransaction = (new Transaction(20.99))->setTid('TID123'); $cancelResponse = (new eRede($store))->cancel($cancelTransaction); if ($cancelResponse->getReturnCode() == '359') { printf("Transação cancelada com sucesso; tid=%s\n", $cancelResponse->getTid()); }
Consultando uma transação pelo TID
<?php $response = (new eRede($store))->get('TID123'); printf("Status: %s\n", $response->getAuthorization()->getStatus()); printf("TID: %s\n", $response->getTid()); printf("NSU: %s\n", $response->getAuthorization()->getNsu()); printf("Código de autorização: %s\n", $response->getAuthorization()->getAuthorizationCode());
Consultando uma transação pela referência
<?php $response = (new eRede($store))->getByReference('pedido123'); printf("Status: %s\n", $response->getAuthorization()->getStatus()); printf("TID: %s\n", $response->getTid());
Consultando cancelamentos (refunds) de uma transação
<?php $refundsResponse = (new eRede($store))->getRefunds('TID123'); // Processa os cancelamentos retornados // Nota: A estrutura de refunds pode variar conforme a resposta da API
Testes
Para executar os testes, você precisa configurar as credenciais no arquivo .env:
- Crie o arquivo
.enva partir do exemplo:
make setup-env
# ou
cp env.example .env
- Edite o arquivo
.envcom suas credenciais de sandbox:
REDE_MERCHANT_ID=seu_merchant_id REDE_MERCHANT_KEY=seu_merchant_key
- Execute os testes:
# Com Docker make test # Localmente composer test
Nota: O arquivo .env é usado apenas para os testes e está no .gitignore.
Comandos Disponíveis
O projeto inclui um Makefile com comandos úteis:
make build- Constrói as imagens Dockermake up- Inicia os containersmake down- Para os containersmake install- Instala as dependênciasmake test- Executa os testesmake cs-check- Verifica o código com PHP_CodeSniffermake cs-fix- Corrige o código automaticamentemake phpstan- Executa análise estática com PHPStanmake shell- Abre um shell no container
Desenvolvimento
Estrutura do Projeto
rede-auth/
├── src/
│ └── Rede/
│ ├── OAuth/ # Autenticação OAuth 2.0
│ ├── Http/ # Cliente HTTP autenticado
│ ├── Transaction.php # Modelo de transação
│ ├── eRede.php # Cliente principal do SDK
│ └── ...
├── tests/
│ ├── Unit/ # Testes unitários
│ └── Integration/ # Testes de integração
├── docker/
├── Dockerfile
└── Makefile
Padrões de Código
O projeto segue os princípios de Clean Code e SOLID:
- Single Responsibility Principle
- Dependency Injection
- Interface Segregation
- Testabilidade
Licença
MIT