PHPackages                             iappapedroza/erede-php-v2 - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. iappapedroza/erede-php-v2

ActiveLibrary

iappapedroza/erede-php-v2
=========================

PHP SDK para integração com a API eRede v2 (OAuth 2.0)

v2.1.1(2mo ago)17MITPHPPHP ^8.1

Since Feb 27Pushed 2mo ago1 watchersCompare

[ Source](https://github.com/iappaPedroza/erede-php-v2)[ Packagist](https://packagist.org/packages/iappapedroza/erede-php-v2)[ RSS](/packages/iappapedroza-erede-php-v2/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (7)Versions (5)Used By (0)

SDK PHP — eRede API v2
======================

[](#sdk-php--erede-api-v2)

SDK oficial de integração eRede para PHP.

> **v2** — Migrado para a API eRede v2 com autenticação **OAuth 2.0** (`client_credentials`).
> O suporte à autenticação Basic Auth (API v1) foi removido.

Funcionalidades
===============

[](#funcionalidades)

Este SDK possui as seguintes funcionalidades:

- Autorização de transações (crédito e débito)
- Captura
- Consultas (por TID e por referência)
- Cancelamento / Estorno
- 3DS2 (autenticação de transações)
- Zero dollar (validação de cartão)
- IATA (transações aéreas)
- MCC dinâmico
- Tokenização de cartão (`cardToken` + `tokenCryptogram`)
- Transações recorrentes e card-on-file (`transactionLinkId`, `brandTid`)
- OAuth 2.0 com renovação automática de token (cache com buffer de 60 s)

Instalação
==========

[](#instalação)

Dependências
------------

[](#dependências)

- PHP &gt;= 8.1
- Extensão `curl` habilitada
- Extensão `json` habilitada

Instalando o SDK
----------------

[](#instalando-o-sdk)

O pacote está disponível no [Packagist](https://packagist.org/packages/iappapedroza/erede-php-v2).

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

```
{
"require": {
    "iappapedroza/erede-php-v2": "^2.0"
}
}
```

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

```
composer install

```

Alternativamente, você pode executar diretamente em seu terminal:

```
composer require iappapedroza/erede-php-v2:^2.0

```

Testes
======

[](#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

./tests

```

Os testes também podem ser executados através de um container com a configuração ideal para o projeto. Para isso, basta fazer:

```
docker build . -t erede-docker
docker run -e REDE_PV='1234' -e REDE_TOKEN='5678' erede-docker

```

```
Caso necessário, o SDK possui a possibilidade de logs de depuração que podem ser utilizados ao executar os testes. Para isso,
basta exportar a variável de ambiente `REDE_DEBUG` com o valor 1:

```
export REDE_DEBUG=1
```

# Endpoints da API v2

| Ambiente    | Transações                                                    | OAuth Token                                                          |
|-------------|---------------------------------------------------------------|----------------------------------------------------------------------|
| Produção    | `https://api.userede.com.br/erede/v2/transactions`            | `https://api.userede.com.br/redelabs/oauth2/token`                   |
| Sandbox     | `https://sandbox-erede.useredecloud.com.br/v2/transactions`   | `https://rl7-sandbox-api.useredecloud.com.br/oauth2/token`           |

# Autenticação OAuth 2.0

A API v2 utiliza o fluxo **OAuth 2.0 `client_credentials`**. O SDK gerencia o ciclo de vida do token automaticamente:

1. Antes de cada requisição, verifica se existe um token válido em cache.
2. Se o token estiver ausente ou a menos de **60 segundos do vencimento**, um novo token é requisitado.
3. O token recebido (TTL padrão: **1440 s / 24 min**) é armazenado internamente no objeto `Store`.
4. As requisições de transação são enviadas com o header `Authorization: Bearer {token}`.

Nenhuma configuração adicional é necessária — basta instanciar a `Store` normalmente com seu **PV** e **Token**:

```php
// Produção
$store = new Store('SEU_PV', 'SEU_TOKEN', Environment::production());

// Sandbox
$store = new Store('SEU_PV', 'SEU_TOKEN', Environment::sandbox());
```

## Alternativa com Guzzle

Por padrão, o SDK usa cURL para requisitar o token OAuth. Se o seu projeto já utiliza
[`guzzlehttp/guzzle`](https://docs.guzzlephp.org), você pode usar o `GuzzleOAuthService`
como implementação alternativa:

```bash
composer require guzzlehttp/guzzle
```

```php
use ItsTecnologiaErede\Service\GuzzleOAuthService;

$store   = new Store('SEU_PV', 'SEU_TOKEN', Environment::production());
$eRede   = new eRede($store, logger: null, oauthService: new GuzzleOAuthService($store));

$transaction = (new Transaction(20.99, 'pedido' . time()))
    ->creditCard('5448280000000007', '235', '12', '2030', 'John Snow');

$transaction = $eRede->create($transaction);
```

Ambas as implementações respeitam a interface `OAuthServiceInterface`, portanto qualquer
solução customizada pode ser injetada da mesma forma:

```php
use ItsTecnologiaErede\Service\OAuthServiceInterface;

class MeuOAuthService implements OAuthServiceInterface
{
    public function __construct(private readonly Store $store) {}

    public function getAccessToken(): string
    {
        // sua lógica de obtenção/cache de token
    }
}

$eRede = new eRede($store, oauthService: new MeuOAuthService($store));
```

# Utilizando

> Todos os exemplos assumem os imports do namespace `ItsTecnologiaErede`. Adicione no topo de cada arquivo:
> ```php
> use ItsTecnologiaErede\Store;
> use ItsTecnologiaErede\Environment;
> use ItsTecnologiaErede\Transaction;
> use ItsTecnologiaErede\eRede;
> // demais classes conforme necessário: SubMerchant, Device, Url, etc.
> ```

## Autorizando uma transação

```php
