Criando
Sintaxe
use DevAjMeireles\PagHiper\Facades\PagHiper;
$billet = PagHiper::billet()->create(/* ... */)
Criando Boleto
Para uma melhor organização, a forma de interagir com a criação de boletos é enviando para o método create
quatro (4) instâncias de classes de objeto:
use DevAjMeireles\PagHiper\Facades\PagHiper;
use DevAjMeireles\PagHiper\DTO\Objects\Basic; // 👈
use DevAjMeireles\PagHiper\DTO\Objects\Billet\Address; // 👈
use DevAjMeireles\PagHiper\DTO\Objects\Item; // 👈
use DevAjMeireles\PagHiper\DTO\Objects\Payer; // 👈
$billet = PagHiper::billet()
->create(
Basic::make() // 👈
->set('order_id', 1433)
->set('notification_url', route('paghiper.notification'))
->set('days_due_date', 2),
Payer::make() // 👈
->set('name', 'Joao Inácio da Silva')
->set('email', 'joao.inacio@gmail.com')
->set('cpf_cnpj', '99279725041')
->set('phone', '11985850505')
->set(
'address', Address::make() // 👈
->set('street', 'Rua Alameda Barão de Limeira')
->set('number', 102)
->set('complement', 'Casa')
->set('district', 'São Vicente')
->set('city', 'São Paulo')
->set('state', 'São Paulo')
->set('zip_code', '13332251')
),
Item::make() // 👈
->set('item_id', 12)
->set('description', 'Kit de Malas de Viagem')
->set('quantity', 1)
->set('price_cents', 25000));
Observações
- O método
set
irá procurar pela propriedade e só definirá o seu valor caso encontre a propriedade na classe que está sendo construída pelo métodomake
. - O nome das propriedades deve seguir exatamente a convenção de nome das propriedades de boleto bancário da PagHiper
Usando Modelador do Laravel
Opcionalmente, você pode usar um modelador do Laravel como Payer
do boleto:
use App\Models\User; // 👈
use DevAjMeireles\PagHiper\DTO\Objects\Basic;
use DevAjMeireles\PagHiper\DTO\Objects\Item;
use DevAjMeireles\PagHiper\Facades\PagHiper;
$billet = PagHiper::billet()
->create(
Basic::make()
->set('order_id', 1433)
->set('notification_url', route('paghiper.notification'))
->set('days_due_date', 2),
User::first(), // 👈
Item::make()
->set('item_id', 12)
->set('description', 'Kit de Malas de Viagem')
->set('quantity', 1)
->set('price_cents', 25000));
Para utilizar a abordagem, acima seu modelador deve implementar a interface PagHiperModelAbstraction
, a qual exigirá que os seguintes métodos sejam criados na classe do modelador:
namespace App\Models;
use DevAjMeireles\PagHiper\Contracts\PagHiperModelAbstraction; // 👈
use Illuminate\Database\Eloquent\Model;
class User extends Model implements PagHiperModelAbstraction // 👈
{
// ...
public function pagHiperName(): string
{
return 'Joao Inácio da Silva';
}
public function pagHiperEmail(): string
{
return 'joao.inacio@gmail.com';
}
public function pagHiperCpfCnpj(): string
{
return '99279725041';
}
public function pagHiperPhone(): string
{
return '11985850505';
}
public function pagHiperAddress(): array
{
return [
'street' => 'Rua Alameda Barão de Limeira',
'number' => 102,
'complement' => 'Casa',
'district' => 'São Vicente',
'city' => 'São Paulo',
'zip_code' => '13332251',
];
}
};
Multiplos Itens
Você também pode enviar um array de itens:
use DevAjMeireles\PagHiper\Facades\PagHiper;
use DevAjMeireles\PagHiper\DTO\Objects\Basic;
use DevAjMeireles\PagHiper\DTO\Objects\Billet\Address;
use DevAjMeireles\PagHiper\DTO\Objects\Item;
use DevAjMeireles\PagHiper\DTO\Objects\Payer;
$billet = PagHiper::billet()
->create(
Basic::make()
->set('order_id', 1433)
->set('notification_url', route('paghiper.notification'))
->set('days_due_date', 2),
Payer::make()
->set('name', 'Joao Inácio da Silva')
->set('email', 'joao.inacio@gmail.com')
->set('cpf_cnpj', '99279725041')
->set('phone', '11985850505')
->set(
'address', Address::make()
->set('street', 'Rua Alameda Barão de Limeira')
->set('number', 102)
->set('complement', 'Casa')
->set('district', 'São Vicente')
->set('city', 'São Paulo')
->set('state', 'São Paulo')
->set('zip_code', '13332251')
),
[
Item::make()->set('item_id', 12)->set('description', 'Kit de Malas de Viagem')->set('quantity', 1)->set('price_cents', 25000),
Item::make()->set('item_id', 12)->set('description', 'Protetor de Malas (100x100)')->set('quantity', 3)->set('price_cents', 3550),
]
);
Casts
Você pode usar casts disponíveis para transformar a resposta.