Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implementado: #18

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Implementado:
- Implementado Sandbox para Boleto e Extrato (*NAO INSERIDO PARA DEMAIS*);
Para utilizar apenas inserir um parametro adicional na hora de gerar o objeto
   $PJBankRecebimentos = new Recebimento($credencial, $chave, true);

- Inserido retornar o campo 'link_grupo' ao inserir um boleto;
- Em impressorinha, inserido retornar a Exception caso ocorrer falha na solicitação;

Correção de Bugs:
- Ao gerar extrato, corrigido a função 'apenasPagos'. O mesmo deve inserir um valor numérico e não boleano;
- Ao gerar extrato o retorno vem em um array e não objeto. Alterado para ele atualizar os itens com o retorno da 'impressorinha->gerar()';

Alterado:
- Config do composer.json para deixar o 'phpunit/phpunit' somente requerido em "dev" (não necessário em produção);
- O Readme com o que já tinha de documentação em ./docs/Recebimento
sandrobocon committed Aug 2, 2018
commit d9492c97689ad9672882fa8d3a0438e1d5068bd0
249 changes: 248 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -3,4 +3,251 @@ PJBank SDK para PHP! :elephant: :elephant: :elephant:

[![Build Status](https://travis-ci.org/pjbank/pjbank-php-sdk.svg?branch=master)](http://travis-ci.org/pjbank/pjbank-php-sdk)

![Construcao](https://openclipart.org/image/2400px/svg_to_png/231626/underconstruction.png)

# SDK da API de Recebimento do PJBank

* Exemplos em Docs

## Instalação


```bash
$ composer require pjbank/pjbank-sdk-php
```

## Boleto bancário

### Emitindo um boleto bancário

```php
require_once "./vendor/autoload.php";

use PJBank\Recebimento;

$credencial = "6ef5e5c493f22ef42d1c052e069af5df3060c090";
$chave = "cfeb3e01f0d7d2217fc5f522f73c67ea56e5a669";


$PJBankRecebimentos = new Recebimento($credencial, $chave);
$boleto = $PJBankRecebimentos->Boletos->NovoBoleto();


$boleto->setNomeCliente("Matheus Fidelis")
->setCpfCliente("29454730000144")
->setValor(10.50)
->setVencimento("09/01/2017")
->setPedidoNumero(rand(0, 999))
->gerar();


print_r($boleto->getNossoNumero() . PHP_EOL);
print_r($boleto->getLink() . PHP_EOL);
print_r($boleto->getPedidoNumero() . PHP_EOL);

```


### Impressão de boletos

> Você pode especificar vários boletos identificados pelo `pedido_numero` para gerar uma impressão em lote.


```php

require_once "./vendor/autoload.php";

use PJBank\Recebimento;

$credencial = "6ef5e5c493f22ef42d1c052e069af5df3060c090";
$chave = "cfeb3e01f0d7d2217fc5f522f73c67ea56e5a669";

$PJBankRecebimento = new Recebimento($credencial, $chave);

$lote = $PJBankRecebimento->Boletos->Imprimir([
"110",
"443"
]);

print_r($lote);

```


## Cartão de Crédito

### Gerando um pagamento de cartão de crédito com os dados do cartão

```php

require_once "./vendor/autoload.php";

use PJBank\Recebimento;

$credencial = "1264e7bea04bb1c24b07ace759f64a1bd65c8560";
$chave = "ef947cf5867488f744b82744dd3a8fc4852e529f";

$PJBankRecebimentos = new Recebimento($credencial, $chave);

$transacao = $PJBankRecebimentos->Cartoes->NovaTransacao();

//Pagando com os dados do cartão
$transacao->setNumeroCartao("4012001037141112")
->setNomeCartao("Cliente de Exemplo")
->setMesVencimento("05")
->setAnoVencimento("2018")
->setCPF("24584548000194")
->setEmail("api@pjbank.com.br")
->setCVV("123")
->setValor("1.00")
->setParcelas(1)
->setDescricao("Pagamento de exemplo")
->gerar();

print_r($transacao->getValues());

```

### Gerando um pagamento de cartão de crédito com Token

> Após o primeiro pagamento, um `token_cartao` será gerado. Use este token para pagar de forma segura nas próximas vezes conforme as recomendações do PCI

```php

require_once "./vendor/autoload.php";

use PJBank\Recebimento;

$credencial = "1264e7bea04bb1c24b07ace759f64a1bd65c8560";
$chave = "ef947cf5867488f744b82744dd3a8fc4852e529f";

$PJBankRecebimentos = new Recebimento($credencial, $chave);

$transacao = $PJBankRecebimentos->Cartoes->NovaTransacao();

//Pagando com os token gerado pelo PJBank!
$transacao->setNumeroCartao("4012001037141112")
->setValor(1.00)
->setTokenCartao("d30e4fc83e153ffb113af7e7c736f4bb5004c552")
->setDescricao("Pagamento de exemplo com Token")
->gerar();

print_r($transacao->getValues());

```

### Cancelando uma transação de cartão

> Todo pagamento via cartão retorna um parâmetro chamado `tid`. Esse parâmetro equivale ao identificador da transação entre o PJBank e as adquirentes.

```php

require_once "./vendor/autoload.php";

use PJBank\Recebimento;

$credencial = "1264e7bea04bb1c24b07ace759f64a1bd65c8560";
$chave = "ef947cf5867488f744b82744dd3a8fc4852e529f";

$PJBankRecebimentos = new Recebimento($credencial, $chave);

//Gerando uma transação de exemplo
$transacao = $PJBankRecebimentos->Cartoes->NovaTransacao();

$transacao->setNumeroCartao("4012001037141112")
->setValor(1.00)
->setTokenCartao("d30e4fc83e153ffb113af7e7c736f4bb5004c552")
->setDescricao("Pagamento de exemplo com Token")
->gerar();


//Cancelamento a transação criada
$cancelamento = $PJBankRecebimentos->Cartoes->CancelarTransacao($transacao->getTid());

print_r($cancelamento);

```

### Tokenizando um cartão

> No primeiro pagamento com os dados do Cartão, o parâmetro `token_cartao` será retornado. Mas há casos onde o usuário não vai efetuar a compra no momento da captura dos dados, e por segurança não é recomendado armazenar os mesmos. Para resolver esse problema, você pode enviar os dados recém capturados para a API e trocar os mesmos por um token do cartão.

```php

use PJBank\Recebimento;

$credencial = "1264e7bea04bb1c24b07ace759f64a1bd65c8560";
$chave = "ef947cf5867488f744b82744dd3a8fc4852e529f";

$PJBankRecebimentos = new Recebimento($credencial, $chave);

/**
* Array de exemplo com os dados do cartão
*/
$dadosCartao = array(
"nome_cartao" => "Cliente Exemplo",
"numero_cartao" => "4012001037141112",
"mes_vencimento" => 05,
"ano_vencimento" => 2018,
"cpf_cartao" => "64111456529",
"email_cartao" => "api@pjbank.com.br",
"celular_cartao" => "978456723",
"codigo_cvv" => 123
);

$token = $PJBankRecebimentos->Cartoes->Tokenizar($dadosCartao);

print_r($token);

```

## Extrato

### Extrato simples

> Gerando um extrato da conta sem filtros.

```php
require_once "./vendor/autoload.php";

use PJBank\Recebimento;

$credencial = "1264e7bea04bb1c24b07ace759f64a1bd65c8560";
$chave = "ef947cf5867488f744b82744dd3a8fc4852e529f";

$PJBankRecebimentos = new Recebimento($credencial, $chave);

echo("Gerando o extrato bancário da conta sem filtros" . PHP_EOL);

$extrato = $PJBankRecebimentos->Extratos->NovoExtrato();
$extrato->gerar();

print_r($extrato->getItens());
```

### Extrato - Listando somente as cobranças liquidadas

> Gerando um extrato somente com os itens que foram pagos

```php

$extrato = $PJBankRecebimentos->Extratos->NovoExtrato();
$extrato->apenasPagos()
->gerar();

print_r($extrato->getItens());
```

### Extrato - Filtro por data

> Você pode inserir um filtro por um intervalo de datas no extrato. As datas devem ser informadas no formato MM/DD/AAAA

```php

$extrato = $PJBankRecebimentos->Extratos->NovoExtrato();
$extrato
->setDataInicio("06/01/2017")
->setDataFim("06/30/2017")
->gerar();

print_r($extrato->getItens());
```
4 changes: 3 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
@@ -9,7 +9,9 @@
"minimum-stability": "dev",
"prefer-stable": true,
"require": {
"guzzlehttp/guzzle": "^6.2@dev",
"guzzlehttp/guzzle": "^6.2@dev"
},
"require-dev": {
"phpunit/phpunit": "^6.4@dev"
},
"scripts" : {
6 changes: 6 additions & 0 deletions src/Api/Api.php
Original file line number Diff line number Diff line change
@@ -16,6 +16,12 @@ class Api
*/
protected $apiBaseUrl = "https://api.pjbank.com.br/";

/**
* URL base da API Sandbox
* @var string
*/
protected $apiBaseUrlSandbox = "https://sandbox.pjbank.com.br";

/**
* Versão da API a ser consumida pelo SDK
* @var string
7 changes: 3 additions & 4 deletions src/Api/PJBankClient.php
Original file line number Diff line number Diff line change
@@ -19,11 +19,12 @@ class PJBankClient extends Api
* @param [type] $chave
* @return void
*/
public function __construct()
public function __construct($sandbox=false)
{
$base_uri = ($sandbox) ? $this->apiBaseUrlSandbox : $this->apiBaseUrl;

$this->client = new Client([
'base_uri' => $this->apiBaseUrl,
'base_uri' => $base_uri,
]);

}
@@ -36,6 +37,4 @@ public function getClient()
{
return $this->client;
}


}
30 changes: 29 additions & 1 deletion src/Boleto/Boleto.php
Original file line number Diff line number Diff line change
@@ -95,6 +95,11 @@ class Boleto
* @var
*/
private $link;
/**
* Link do Grupo
* @var
*/
private $link_grupo;
/**
* Nosso numero de boleto
* @var
@@ -115,6 +120,12 @@ class Boleto

private $id_unico;

/**
* Usar Sandbox
* @var bool
*/
private $sandbox;

/**
* @var
*/
@@ -125,10 +136,11 @@ class Boleto
* @param $credencial
* @param $chave
*/
public function __construct($credencial, $chave)
public function __construct($credencial, $chave, $sandbox)
{
$this->credencial_boleto = $credencial;
$this->chave_boleto = $chave;
$this->sandbox = $sandbox;
}

/**
@@ -139,6 +151,14 @@ public function getLink()
return $this->link;
}

/**
* @return mixed
*/
public function getLinkGrupo()
{
return $this->link_grupo;
}

/**
* @return mixed
*/
@@ -509,6 +529,13 @@ public function setGrupo($grupo)
return $this;
}

/**
* @return bool
*/
public function getSandbox()
{
return $this->sandbox;
}

/**
* Pega os campos utilizados para a emissão do boleto bancário.
@@ -541,6 +568,7 @@ public function gerar() {
$this->id_unico = $boletoGerado->id_unico;
$this->linha_digitavel = $boletoGerado->linhaDigitavel;
$this->link = $boletoGerado->linkBoleto;
$this->link_grupo = $boletoGerado->linkGrupo;
}


11 changes: 9 additions & 2 deletions src/Boleto/BoletosManager.php
Original file line number Diff line number Diff line change
@@ -23,23 +23,30 @@ class BoletosManager
*/
private $chave_boletos;

/**
* Usar Sandbox
* @var bool
*/
private $sandbox;

/**
* BoletosManager constructor.
* @param $credencial
* @param $boletos
*/
public function __construct($credencial, $chave)
public function __construct($credencial, $chave, $sandbox)
{
$this->credencial_boletos = $credencial;
$this->chave_boletos = $chave;
$this->sandbox = $sandbox;
}

/**
* Gera um novo boleto
* @return \PJBank\Boleto\Boleto
*/
public function NovoBoleto() {
return new Boleto($this->credencial_boletos, $this->chave_boletos);
return new Boleto($this->credencial_boletos, $this->chave_boletos, $this->sandbox);
}

/**
6 changes: 2 additions & 4 deletions src/Boleto/Emissor.php
Original file line number Diff line number Diff line change
@@ -35,8 +35,8 @@ public function __construct(Boleto $boleto)
public function emitir()
{

$PJBankClient = new PJBankClient();
$client = $PJBankClient->getClient();
$PJBankClient = new PJBankClient($this->boleto->getSandbox());
$client = $PJBankClient->getClient();
$boletoItens = $this->boleto->getValues();

try {
@@ -57,7 +57,5 @@ public function emitir()

}



}
}
26 changes: 20 additions & 6 deletions src/Extrato/Extrato.php
Original file line number Diff line number Diff line change
@@ -53,6 +53,12 @@ class Extrato
*/
private $itens;

/**
* Usar Sandbox
* @var bool
*/
private $sandbox;

/**
* @return mixed
*/
@@ -89,6 +95,14 @@ public function setChave($chave)
return $this;
}

/**
* @return bool
*/
public function getSandbox()
{
return $this->sandbox;
}

/**
* @return mixed
*/
@@ -137,7 +151,7 @@ public function getPago()
* @param mixed $pago
* @return Extrato
*/
public function apenasPagos($pago = true)
public function apenasPagos($pago = 1)
{
$this->pago = $pago;
return $this;
@@ -158,10 +172,11 @@ public function setPagina($pagina = 1)
* @param $credencial
* @param $chave
*/
public function __construct($credencial, $chave)
public function __construct($credencial, $chave, $sandbox)
{
$this->credencial = $credencial;
$this->chave = $chave;
$this->sandbox = $sandbox;
}

/**
@@ -194,13 +209,12 @@ public function getValues()
/**
* Gera o extrato propriamente dito
*/
public function gerar() {

public function gerar()
{
$impressorinha = new Impressorinha($this);
$extrato = $impressorinha->gerar();

$this->itens = $extrato->extrato;

$this->itens = $extrato;
}

}
11 changes: 9 additions & 2 deletions src/Extrato/ExtratoManager.php
Original file line number Diff line number Diff line change
@@ -22,23 +22,30 @@ class ExtratoManager
*/
private $chave_conta;

/**
* Usar Sandbox
* @var bool
*/
private $sandbox;

/**
* ExtratoManager constructor.
* @param $credencial
* @param $chave
*/
public function __construct($credencial, $chave)
public function __construct($credencial, $chave, $sandbox)
{
$this->credencial_conta = $credencial;
$this->chave_conta = $chave;
$this->sandbox = $sandbox;
}

/**
* Retorna uma nova instância de um extrato
* @return Extrato
*/
public function NovoExtrato() {
return new Extrato($this->credencial_conta, $this->chave_conta);
return new Extrato($this->credencial_conta, $this->chave_conta, $this->sandbox);
}

}
7 changes: 4 additions & 3 deletions src/Extrato/Impressorinha.php
Original file line number Diff line number Diff line change
@@ -35,16 +35,16 @@ public function __construct(Extrato $extrato)
public function gerar()
{

$PJBankClient = new PJBankClient();
$PJBankClient = new PJBankClient($this->extrato->getSandbox());
$client = $PJBankClient->getClient();

$extratoQuery = $this->extrato->getValues();

unset($extratoQuery['credencial']);
unset($extratoQuery['chave']);
unset($extratoQuery['sandbox']);

try {

$resource = "recebimentos/{$this->extrato->getCredencial()}/transacoes";

$res = $client->request('GET', $resource, ['query' => $extratoQuery, 'headers' => [
@@ -55,7 +55,8 @@ public function gerar()
return json_decode((string) $res->getBody());

} catch (ClientException $e) {

$responseBody = json_decode($e->getResponse()->getBody());
throw new \Exception($responseBody->msg, $responseBody->status);
}
}

15 changes: 10 additions & 5 deletions src/Recebimento.php
Original file line number Diff line number Diff line change
@@ -26,6 +26,12 @@ class Recebimento
*/
private $chave;

/***
* Utilzar sandbox
* @var bool
*/
private $sandbox;

/**
* Boleto Manager SDK
* @var Boleto
@@ -56,10 +62,11 @@ class Recebimento
* @param string $credencial
* @param string $chave
*/
public function __construct($credencial = null, $chave = null)
public function __construct($credencial = null, $chave = null, $sandbox = false)
{
$this->credencial = $credencial;
$this->chave = $chave;
$this->sandbox = (bool)$sandbox;

$this->constructorCartao();
$this->constructorBoletos();
@@ -77,16 +84,14 @@ private function constructorCartao() {
* Constructor Boletos
*/
private function constructorBoletos() {
$this->Boletos = new BoletosManager($this->credencial, $this->chave);
$this->Boletos = new BoletosManager($this->credencial, $this->chave, $this->sandbox);
}

/**
* Constructor Extrato
*/
private function constructorExtrato() {
$this->Extratos = new ExtratoManager($this->credencial, $this->chave);
$this->Extratos = new ExtratoManager($this->credencial, $this->chave, $this->sandbox);
}



}