Integrando Laravel com PagSeguro 7

Resolvi escrever esse post para explicar como integrar sua aplicação Laravel com o PagSeguro a partir da biblioteca Laravel PagSeguro.

Galera quando resolvi criar a Laravel PagSeguro foi com o intuito de tornar a vida de quem deseja integrar a loja, site ou etc ao PagSeguro de uma forma mais fácil e sem complicação.

Basicamente o que você precisa para criar seus pedidos na Laravel PagSeguro e criar seu array de itens e criar as configurações de sua loja e enviar a requisição de compra.

Instalação

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

Configuração do Service Provider

Abra o arquivo config/app.php e adicione no array providers a seguinte instrução:

laravel\pagseguro\PagseguroServiceProvider::class

Aliases do package

Em seu arquivo config/app.php adicione no array aliases a seguinte instrução:

'PagSeguro' => laravel\pagseguro\Facades\PagSeguro::class

Criação do configurador

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]

Ajuste da configuração

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,
    )

Proxy

Caso você precise de proxy para utilizar a Laravel PagSeguro configure com essas chaves:

'proxy' => [//CONFIGURAÇÃO PARA PROXY
        'user'     => NULL,
        'password' => NULL,
        'url'      => NULL,
        'port'     => NULL,
        'protocol' => NULL
],

Exemplo de envio de requisição de compra

O array de envio deverá ser montado com a seguinte estrutura:

$dados = array(
    'items' => array(
        'itemId1' => array(
            'itemId1' => '0001',
            'itemDescription1' => 'Notebook Prata 1as',
            'itemQuantity1' => '1',
            'itemAmount1' => '12.00',
            'itemWeight1' => '1000',
            'itemShippingCost1' => null
        ),
        'itemId2' => array(
            'itemId2' => '0002',
            'itemDescription2' => 'Notebook Prata 2',
            'itemQuantity2' => '2',
            'itemAmount2' => '5.00',
            'itemWeight2' => '100',
            'itemShippingCost2' => null
        )
    ),
    'address' => array(
        'shippingType' => 1,
        'postalCode' => '04433130',
        'street' => 'Rua benjamin vieira da silva',
        'number' => '1077',
        'complement' => '',
        'district' => 'Centro',
        'city' => 'São Paulo',
        'state' => 'SP',
        'country' => 'BRA',
    ),
    'sender' => array(
        'senderName' => 'Teste de compra',
        'senderCPF' => '27781466870',
        'senderEmail' => '[email protected]',
        'phone' => [
            'senderAreaCode' => 11,
            'senderPhone' => '5614-9399',
        ],
    ),
    'currency' => 'BRL'
);

Após setar o array, utilize o método: setRequest para criar a requisição de envio:

$request = PagSeguro::setRequest($dados);

Para confirmar o envio utilize o método: sendRequest da seguinte forma:

$request->sendRequest();

Para obter o código de retorno da compra, utilize o método: getCode sob o objeto request que é responsável pela sua requisição:

$code = $request->request->getCode();

Exemplo de URL de requisição com a variável $code

echo "<a target=\"_blank\" href=\"https://pagseguro.uol.com.br/v2/checkout/payment.html?code=$code\"> Pagamento </a>";

Galera tem muito o que fazer ainda na Laravel PagSeguro e quem se sentir
a vontade de ajudar o projeto será bem vindo e obrigado a todos.

Git dos atuais colaboradores da Laravel PagSeguro:

  • http://gattune.blog.br Calebe Aires

    Parece bem completa, gostaria de ver uma do mesmo nível para o MercadoPago

  • http://heverex.wordpress.com Heverson Damasceno

    Você não precisa enviar o tipo de pagamento que o cliente escolheu?

  • Breno Martins

    A situação que tô passando é que tá retornando um erro 500 no sandbox do PagSeguro na notificação, ele não envia o POST pra página, configurei a rota no Laravel certinho, mas não vai.

    • Rafael

      Cara isso acontece por conta do VerifyCsrfToken, quando o PagSeguro envia o post para o seu site, ele não envia esse campo.

      • Fagner Jefferson

        Então, se o PagSeguro não envia esse campo!
        Como posso resolver esse problema???

        • Henrique Weiand

          Desativa o csrf para esta rota

  • Welinton Dias

    Apenas tenho uma questão.
    Aparentemente esta tudo normal, faço a transação com Sandbox, a transação é feita com sucesso, retorno para minha rota que defini pagseguro.redirect, mas la no meu Sandbox não aparece nenhuma transação. Estou fazendo algo errado provavelmente.
    Poderia me dizer algo em relação a isso?
    Obrigado e boa noite