O laravel-pagseguro consome a API do PagSeguro e prove uma forma simples de gerar o pagamento, e notificar sobre as suas transações.
Antes de você utilizar o Laravel PagSeguro é importante você verificar se o seu usuário do PagSeguro está correto para a integração segue URL de configuração do usuário PagSeguro: https://pagseguro.uol.com.br/preferencias/integracoes.jhtml
PHP >= 5.4 Laravel 5.x
Abra o arquivo composer.json
e insira a seguinte instrução:
"require": {
"michael/laravelpagseguro": "dev-master"
}
Após inserir no require o Laravel PagSeguro
, você deverá executar o comando:
composer update
Ou execute o comando:
composer require michael/laravelpagseguro:dev-master
Abra o arquivo config/app.php
e adicione no array providers
a seguinte instrução:
laravel\pagseguro\Platform\Laravel5\ServiceProvider::class
Em seu arquivo config/app.php
adicione no array aliases
a seguinte instrução:
'PagSeguro' => laravel\pagseguro\Platform\Laravel5\PagSeguro::class
Agora você irá executar o comando:
php artisan vendor:publish
Se tudo ocorreu bem, a seguinte mensagem sera exibida:
Copied File [/vendor/michael/laravelpagseguro/src/laravel/pagseguro/Config/laravelpagseguro.php] To [/config/laravelpagseguro.php]
Abra o arquivo config/laravelpagseguro.php
altere o token
e também o e-mail
informando o da sua loja:
'credentials' => array(//SETA AS CREDENCIAIS DE SUA LOJA
'token' => null,
'email' => null,
)
Caso você precise de proxy para utilizar a Laravel PagSeguro descomente e configure a linha de http adapter:
'http' => [
'adapter' => [
'type' => 'curl',
'options' => [
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_0,
// CURLOPT_PROXY => 'http://user:pass@host:port', // PROXY OPTION <<--
]
],
],
Para resgatar as credenciais padrões do arquivo você pode usar:
$credentials = PagSeguro::credentials()->get();
Ou usar credenciais alternativas
$credentials = PagSeguro::credentials()->create($token, $email);
O array de envio deverá ser montado com a seguinte estrutura:
$data = [
'items' => [
[
'id' => '18',
'description' => 'Item Um',
'quantity' => '1',
'amount' => '1.15',
'weight' => '45',
'shippingCost' => '3.5',
'width' => '50',
'height' => '45',
'length' => '60',
],
[
'id' => '19',
'description' => 'Item Dois',
'quantity' => '1',
'amount' => '3.15',
'weight' => '50',
'shippingCost' => '8.5',
'width' => '40',
'height' => '50',
'length' => '80',
],
],
'shipping' => [
'address' => [
'postalCode' => '06410030',
'street' => 'Rua Leonardo Arruda',
'number' => '12',
'district' => 'Jardim dos Camargos',
'city' => 'Barueri',
'state' => 'SP',
'country' => 'BRA',
],
'type' => 2,
'cost' => 30.4,
],
'sender' => [
'email' => '[email protected]',
'name' => 'Isaque de Souza Barbosa',
'documents' => [
[
'number' => '01234567890',
'type' => 'CPF'
]
],
'phone' => '11985445522',
'bornDate' => '1988-03-21',
]
];
Após ter os dados, utilize o método: createFromArray
para criar o objeto de checkout:
$checkout = PagSeguro::checkout()->createFromArray($data);
Para confirmar o envio utilize o método: send
da seguinte forma:
$information = $request->send($credentials); // Retorna um objeto de laravel\pagseguro\Checkout\Information\Information
if ($information) {
print_r($information->getCode());
print_r($information->getDate());
print_r($information->getLink());
}
Informando metadados de Recarga de celular:
// ....
$data['cellphone_charger'] = '+5511980810000';
$checkout = PagSeguro::checkout()->createFromArray($data);
Informando metadados para Dados de viagem:
// ....
$data['travel'] = [
'passengers' => [
[
'name' => 'Isaque de Souza',
'cpf' => '40404040411',
'passport' => '4564897987'
],
[
'name' => 'Michael Douglas',
'cpf' => '80808080822',
]
],
'origin' => [
'city' => 'SAO PAULO - SP',
'airportCode' => 'CGH', // Congonhas
],
'destination' => [
'city' => 'RIO DE JANEIRO - RJ',
'airportCode' => 'SDU', // Santos Dumont
]
];
$checkout = PagSeguro::checkout()->createFromArray($data);
Informando metadados para Jogos:
// ....
$data['game'] = [
'gameName' => 'PS LEGEND',
'playerId' => 'BR561546S4',
'timeInGameDays' => 360,
];
$checkout = PagSeguro::checkout()->createFromArray($data);
Para iniciar um Checkout Transparente é necessário ter um ID de sessão válido. O exemplo abaixo demonstra como gerar um ID.
$credentials = PagSeguro::credentials()->get();
$session = PagSeguro::session()->get($credentials);
$session = $session->get();
Atenção para o atributo 'hash', o qual é a identificação do comprador gerado através da API JavaScript do PagSeguro.
$data['transparent'] = [
'paymentMode' => 'default',
'paymentMethod' => 'boleto',
'items' => [
[
'id' => '1',
'description' => 'Teste Boleto',
'quantity' => '1',
'amount' => '122.30',
]
],
'shipping' => [
'address' => [
'postalCode' => '01452002',
'street' => 'Rua Leonardo Arruda',
'number' => '12',
'district' => 'Jardim dos Camargos',
'city' => 'Barueri',
'state' => 'SP',
'country' => 'BRA',
],
'type' => 3,
'cost' => 0.00
],
'sender' => [
'email' => '[email protected]',
'name' => 'Eduardo Alves',
'documents' => [
[
'number' => '01234567890',
'type' => 'CPF'
]
],
'phone' => '11985445522',
'bornDate' => '1988-03-21',
'hash' => 'abc123'
]
];
Após ter os dados, utilize o método: createFromArray
para criar o objeto de checkout:
$checkout = PagSeguro::checkout()->createFromArray($data);
Para confirmar o envio utilize o método: transparent
da seguinte forma:
$transparent = $checkout->transparent(PagSeguro::credentials()->get());
Atenção para o atributo 'bank', o qual é a identificação do Banco gerado através da API JavaScript do PagSeguro.
$data['transparent'] = [
'paymentMode' => 'default',
'paymentMethod' => 'eft',
'bank' = 'itau',
'items' => [
[
'id' => '1',
'description' => 'Teste Débito Online',
'quantity' => '1',
'amount' => '122.30'
]
],
'shipping' => [
'address' => [
'postalCode' => '01452002',
'street' => 'Rua Leonardo Arruda',
'number' => '12',
'district' => 'Jardim dos Camargos',
'city' => 'Barueri',
'state' => 'SP',
'country' => 'BRA'
],
'type' => 3,
'cost' => 0.00
],
'sender' => [
'email' => '[email protected]',
'name' => 'Eduardo Alves',
'documents' => [
[
'number' => '01234567890',
'type' => 'CPF'
]
],
'phone' => '11985445522',
'bornDate' => '1988-03-21',
'hash' => 'abc123'
]
];
$checkout = PagSeguro::checkout()->createFromArray($data);
$transparent = $checkout->transparent(PagSeguro::credentials()->get());
Atenção para o atributo 'token', o qual é a representação do cartão de crédito gerado através da API JavaScript do PagSeguro.
$data['transparent'] = [
'paymentMode' => 'default',
'paymentMethod' => 'creditCard',
'items' => [
[
'id' => '1',
'description' => 'Teste Cartão de Crédito',
'quantity' => '1',
'amount' => '122.30'
]
],
'shipping' => [
'address' => [
'postalCode' => '01452002',
'street' => 'Rua Leonardo Arruda',
'number' => '12',
'district' => 'Jardim dos Camargos',
'city' => 'Barueri',
'state' => 'SP',
'country' => 'BRA'
],
'type' => 3,
'cost' => 0.00
],
'sender' => [
'email' => '[email protected]',
'name' => 'Eduardo Alves',
'documents' => [
[
'number' => '01234567890',
'type' => 'CPF'
]
],
'phone' => '11985445522',
'bornDate' => '1988-03-21',
'hash' => 'abc123'
],
'creditCard' = [
'token' => '95112EE828D94278BD394E91C4388F20',
'name' => 'Comprador Teste',
'installment' => [
'quantity' => '1',
'value' => '122.30'
],
'documents' => [
[
'number' => '01234567890',
'type' => 'CPF'
]
],
'phone' => '11985445522',
'birthDate' => '1988-03-21',
'billingAddress' => [
'postalCode' => '01452002',
'street' => 'Rua Leonardo Arruda',
'number' => '12',
'district' => 'Jardim dos Camargos',
'city' => 'Barueri',
'state' => 'SP',
'country' => 'BRA'
],
];
];
$checkout = PagSeguro::checkout()->createFromArray($data);
$transparent = $checkout->transparent(PagSeguro::credentials()->get());
$credentials = PagSeguro::credentials()->get();
$transaction = PagSeguro::transaction()->get($code, $credentials);
$information = $transaction->getInformation();
Crie uma rota POST com o nome "pagseguro.notification" (Esta no config)
Route::post('/pagseguro/notification', [
'uses' => '\laravel\pagseguro\Platform\Laravel5\NotificationController@notification',
'as' => 'pagseguro.notification',
]);
Registre um callback (callable) no seu config laravelpagseguro.php
'routes' => [
'notification' => [
'callback' => ['MyNotificationClass', 'myMethod'], // Callable
'credential' => 'default',
'route-name' => 'pagseguro.notification', // Nome da rota
],
],
Ou ....
'routes' => [
'notification' => [
'callback' => function ($information) { // Callable
\Log::debug(print_r($information, 1));
},
],
],
O Laravel PagSeguro utiliza a licença MIT, para saber mais leia no link: MIT license