Skip to content
Open
Show file tree
Hide file tree
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
249 changes: 248 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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("[email protected]")
->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" => "[email protected]",
"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
Expand Up @@ -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" : {
Expand Down
6 changes: 6 additions & 0 deletions src/Api/Api.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
7 changes: 3 additions & 4 deletions src/Api/PJBankClient.php
Original file line number Diff line number Diff line change
Expand Up @@ -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,
]);

}
Expand All @@ -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
Expand Up @@ -95,6 +95,11 @@ class Boleto
* @var
*/
private $link;
/**
* Link do Grupo
* @var
*/
private $link_grupo;
/**
* Nosso numero de boleto
* @var
Expand All @@ -115,6 +120,12 @@ class Boleto

private $id_unico;

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

/**
* @var
*/
Expand All @@ -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;
}

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

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

/**
* @return mixed
*/
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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;
}


Expand Down
Loading