Skip to content

Integração com o gateway de pagamento pagseguro, para utilização com o Laravel

Notifications You must be signed in to change notification settings

ealves/laravel-pagseguro

 
 

Repository files navigation

Laravel PagSeguro - 1.0.2

Build Status Total Downloads Latest Unstable Version License Code Climate Codacy Badge

O laravel-pagseguro consome a API do PagSeguro e prove uma forma simples de gerar o pagamento, e notificar sobre as suas transações.

Criação e configuração do usuário

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

Compatibilidade

PHP >= 5.4 Laravel 5.x

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:dev-master

Configuração do Service Provider

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

laravel\pagseguro\Platform\Laravel5\ServiceProvider::class

Aliases do package

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

'PagSeguro' => laravel\pagseguro\Platform\Laravel5\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 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 <<--
        ]
    ],
],

Credenciais

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

Exemplo de envio de requisição de compra

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

Checkout Transparente

Iniciando uma sessão de pagamento

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();

Exemplo de checkout transparente para Boleto

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());

Exemplo de checkout transparente para Débito Online

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());

Exemplo de checkout transparente para Cartão de Crédito

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());

Consultando uma Transação manualmente

$credentials = PagSeguro::credentials()->get();
$transaction = PagSeguro::transaction()->get($code, $credentials);
$information = $transaction->getInformation();

Recebendo Notificações de Transação

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));
        },
    ],
],

Licença

O Laravel PagSeguro utiliza a licença MIT, para saber mais leia no link: MIT license

About

Integração com o gateway de pagamento pagseguro, para utilização com o Laravel

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%