developersrede / erede-php
e.Rede 集成 SDK
5.2.1
2023-03-19 22:19 UTC
Requires
- php: ^8.1
- ext-curl: *
- ext-json: *
- monolog/monolog: *
- psr/log: *
Requires (Dev)
- friendsofphp/php-cs-fixer: ^v3.11.0
- phpstan/phpstan: ^1.8.6
- phpunit/phpunit: ^9.5.0
- sebastian/phpcpd: ^6.0.0
- squizlabs/php_codesniffer: ^3.7
README
集成 eRede 的 SDK
功能
此 SDK 拥有以下功能
- 授权
- 捕获
- 查询
- 取消
- 3DS2
- 无美元
- iata
- 动态 MCC。
安装
依赖项
- PHP >= 8.1
安装 SDK
如果您已经有一个 composer.json
文件,只需将以下依赖项添加到您的项目中
{ "require": { "developersrede/erede-php": "*" } }
添加依赖项到 composer.json
后,只需执行
composer install
或者,您可以直接在终端执行
composer require "developersrede/erede-php"
测试
SDK 使用 PHPUnit 和 TestDox 进行测试。在本地环境中执行测试时,您需要导出环境变量 REDE_PV
和 REDE_TOKEN
,使用您的 API 凭证。完成后,只需运行
export REDE_PV=1234
export REDE_TOKEN=5678
./tests
测试也可以通过具有项目理想配置的容器来执行。为此,只需做
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
```
# Utilizando
## Autorizando uma transação
```php
<?php
// Configuração da loja em modo produção
$store = new Store('PV', 'TOKEN', Environment::production());
// Configuração da loja em modo sandbox
// $store = new \Rede\Store('PV', 'TOKEN', \Rede\Environment::sandbox());
// Transação que será autorizada
$transaction = (new Transaction(20.99, 'pedido' . time()))->creditCard(
'5448280000000007',
'235',
'12',
'2020',
'John Snow'
);
// Autoriza a transação
$transaction = (new eRede($store))->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
<?php
// Configuração da loja em modo produção
$store = new Store('PV', 'TOKEN', Environment::production());
// Configuração da loja em modo sandbox
// $store = new \Rede\Store('PV', 'TOKEN', \Rede\Environment::sandbox());
// Transação que será autorizada
$transaction = (new Transaction(20.99, 'pedido' . time()))->creditCard(
'5448280000000007',
'235',
'12',
'2020',
'John Snow'
)->capture(false);
// Autoriza a transação
$transaction = (new eRede($store))->create($transaction);
if ($transaction->getReturnCode() == '00') {
printf("Transação autorizada com sucesso; tid=%s\n", $transaction->getTid());
}
//...
```
## Adiciona configuração de parcelamento
```php
<?php
// Configuração da loja em modo produção
$store = new Store('PV', 'TOKEN', Environment::production());
// Configuração da loja em modo sandbox
// $store = new \Rede\Store('PV', 'TOKEN', \Rede\Environment::sandbox());
// Transação que será autorizada
$transaction = (new Transaction(20.99, 'pedido' . time()))->creditCard(
'5448280000000007',
'235',
'12',
'2020',
'John Snow'
);
// Configuração de parcelamento
$transaction->setInstallments(3);
// Autoriza a transação
$transaction = (new eRede($store))->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
<?php
// Configuração da loja em modo produção
$store = new Store('PV', 'TOKEN', Environment::production());
// Configuração da loja em modo sandbox
// $store = new \Rede\Store('PV', 'TOKEN', \Rede\Environment::sandbox());
// Transação que será autorizada
$transaction = (new Transaction(20.99, 'pedido' . time()))->creditCard(
'5448280000000007',
'235',
'12',
'2020',
'John Snow'
)->additional(1234, 56);
// Autoriza a transação
$transaction = (new eRede($store))->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
<?php
// Configuração da loja em modo produção
$store = new Store('PV', 'TOKEN', Environment::production());
// Configuração da loja em modo sandbox
// $store = new \Rede\Store('PV', 'TOKEN', \Rede\Environment::sandbox());
// Transação que será autorizada
$transaction = (new Transaction(20.99, 'pedido' . time()))->creditCard(
'5448280000000007',
'235',
'12',
'2020',
'John Snow'
)->mcc(
'LOJADOZE',
'22349202212',
new SubMerchant(
'1234',
'São Paulo',
'Brasil'
)
);
// Autoriza a transação
$transaction = (new eRede($store))->create($transaction);
if ($transaction->getReturnCode() == '00') {
printf("Transação autorizada com sucesso; tid=%s\n", $transaction->getTid());
}
//...
```
## Autorizando uma transação IATA
```php
<?php
// Configuração da loja em modo produção
$store = new Store('PV', 'TOKEN', Environment::production());
// Configuração da loja em modo sandbox
// $store = new \Rede\Store('PV', 'TOKEN', \Rede\Environment::sandbox());
// Transação que será autorizada
$transaction = (new Transaction(20.99, 'pedido' . time()))->creditCard(
'5448280000000007',
'235',
'12',
'2020',
'John Snow'
)->iata('code123', '250');
// Autoriza a transação
$transaction = (new eRede($store))->create($transaction);
if ($transaction->getReturnCode() == '00') {
printf("Transação autorizada com sucesso; tid=%s\n", $transaction->getTid());
}
```
## Capturando uma transação
```php
<?php
// Configuração da loja em modo produção
$store = new Store('PV', 'TOKEN', Environment::production());
// Configuração da loja em modo sandbox
// $store = new \Rede\Store('PV', 'TOKEN', \Rede\Environment::sandbox());
// Transação que será capturada
$transaction = (new eRede($store))->capture((new Transaction(20.99))->setTid('TID123'));
if ($transaction->getReturnCode() == '00') {
printf("Transação capturada com sucesso; tid=%s\n", $transaction->getTid());
}
```
## Cancelando uma transação
```php
<?php
// Configuração da loja em modo produção
$store = new Store('PV', 'TOKEN', Environment::production());
// Configuração da loja em modo sandbox
// $store = new \Rede\Store('PV', 'TOKEN', \Rede\Environment::sandbox());
// Transação que será cancelada
$transaction = (new eRede($store))->cancel((new Transaction(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
<?php
// Configuração da loja em modo produção
$store = new Store('PV', 'TOKEN', Environment::production());
// Configuração da loja em modo sandbox
// $store = new \Rede\Store('PV', 'TOKEN', \Rede\Environment::sandbox());
$transaction = (new eRede($store))->get('TID123');
printf("O status atual da autorização é %s\n", $transaction->getAuthorization()->getStatus());
```
## Consultando uma transação pela referência
```php
<?php
// Configuração da loja em modo produção
$store = new Store('PV', 'TOKEN', Environment::production());
// Configuração da loja em modo sandbox
// $store = new \Rede\Store('PV', 'TOKEN', \Rede\Environment::sandbox());
$transaction = (new eRede($store))->getByReference('pedido123');
printf("O status atual da autorização é %s\n", $transaction->getAuthorization()->getStatus());
```
## Consultando cancelamentos de uma transação
```php
<?php
// Configuração da loja em modo produção
$store = new Store('PV', 'TOKEN', Environment::production());
// Configuração da loja em modo sandbox
// $store = new \Rede\Store('PV', 'TOKEN', \Rede\Environment::sandbox());
$transaction = (new eRede($store))->getRefunds('TID123');
printf("O status atual da autorização é %s\n", $transaction->getAuthorization()->getStatus());
```
## Transação com autenticação
```php
<?php
// Configuração da loja em modo produção
$store = new Store('PV', 'TOKEN', Environment::production());
// Configuração da loja em modo sandbox
// $store = new \Rede\Store('PV', 'TOKEN', \Rede\Environment::sandbox());
// Configura a transação que será autorizada após a autenticação
$transaction = (new Transaction(25, 'pedido' . time()))->debitCard(
'5277696455399733',
'123',
'01',
'2020',
'John Snow'
);
// Configura o 3dSecure para autenticação
$transaction->threeDSecure(
new Device(
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 = (new eRede($store))->create($transaction);
if ($transaction->getReturnCode() == '220') {
printf("Redirecione o cliente para \"%s\" para autenticação\n", $transaction->getThreeDSecure()->getUrl());
}
```