pietrocoelho/erede-php-oauth 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

pietrocoelho/erede-php-oauth

Composer 安装命令:

composer require pietrocoelho/erede-php-oauth

包简介

SDK PHP para integração com eRede utilizando autenticação OAuth 2.0

README 文档

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 pietrocoelho/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 Rede\Store;
use Rede\Environment;
use Rede\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 Rede\Store;
use Rede\Environment;
use Rede\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 Rede\Store;
use Rede\Environment;
use Rede\Transaction;
use Rede\eRede;
use Rede\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:

  1. Crie o arquivo .env a partir do exemplo:
make setup-env
# ou
cp env.example .env
  1. Edite o arquivo .env com suas credenciais de sandbox:
REDE_MERCHANT_ID=seu_merchant_id
REDE_MERCHANT_KEY=seu_merchant_key
  1. 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 Docker
  • make up - Inicia os containers
  • make down - Para os containers
  • make install - Instala as dependências
  • make test - Executa os testes
  • make cs-check - Verifica o código com PHP_CodeSniffer
  • make cs-fix - Corrige o código automaticamente
  • make phpstan - Executa análise estática com PHPStan
  • make 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

pietrocoelho/erede-php-oauth 适用场景与选型建议

pietrocoelho/erede-php-oauth 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 66 次下载、GitHub Stars 达 1, 最近一次更新时间为 2025 年 12 月 03 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 pietrocoelho/erede-php-oauth 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 pietrocoelho/erede-php-oauth 我们能提供哪些服务?
定制开发 / 二次开发

基于 pietrocoelho/erede-php-oauth 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 66
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 13
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-12-03