承接 devsitarget/sdk-erede-php-oauth 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

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

devsitarget/sdk-erede-php-oauth

最新稳定版本:3.0.1

Composer 安装命令:

composer require devsitarget/sdk-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 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:

  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

统计信息

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

GitHub 信息

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

其他信息

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