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

michaeldouglas/laravel-pagseguro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

4ab3ce8 · Mar 12, 2024
Aug 29, 2019
Sep 5, 2023
Oct 28, 2019
Apr 7, 2016
Aug 30, 2019
Aug 30, 2019
Dec 13, 2019
Feb 9, 2023
May 6, 2016

Repository files navigation

Laravel PagSeguro - 1.0.6

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"
}

Observação: Para a versão 5.1 do laravel ou abaixo especifique a versão 0.4.1 ao invés de utilizar 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 <<--
        ]
    ],
],

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' => 'sender@gmail.com',
        'name' => 'Isaque de Souza Barbosa',
        'documents' => [
            [
                'number' => '01234567890',
                'type' => 'CPF'
            ]
        ],
        'phone' => [
            'number' => '985445522',
            'areaCode' => '11',
        ],
        '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:

$checkout = PagSeguro::checkout()->createFromArray($data);
$credentials = PagSeguro::credentials()->get();
$information = $checkout->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);

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

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

Exemplo de callable em uma classe

No arquivo de configuração você deverá deixar da seguinte maneira:

'notification' => [
  'callback' => ['App\Controllers\PagSeguroController', 'Notification'], // Callable callback to Notification function (notificationInfo) : void {}
  'credential' => 'default', // Callable resolve credential function (notificationCode) : Credentials {}
  'route-name' => 'pagseguro.notification', // Criar uma rota com este nome
],

E na controller você deverá criar o método, por exemplo, Notification:

public static function Notification($information)
{
    \Log::debug(print_r($information->getStatus()->getCode(), 1));
}

Criação de plano de pagamento recorrente

A criação de plano de pagamento recorrente inicia com a criação do plano e para isso você deverá criar o seguinte array:

Caso queira ver os objetos de requisição: https://dev.pagseguro.uol.com.br/v1.0/reference#criar-plano

$plan = [
    'body' => [
        'reference' => 'plano laravel pagseguro',
    ],

    'preApproval' => [
        'name' => 'Plano ouro - mensal',
        'charge' => 'AUTO', // outro valor pode ser MANUAL
        'period' => 'MONTHLY', //WEEKLY, BIMONTHLY, TRIMONTHLY, SEMIANNUALLY, YEARLY
        'amountPerPayment' => '125.00', // obrigatório para o charge AUTO - mais que 1.00, menos que 2000.00
        'membershipFee' => '50.00', //opcional - cobrado com primeira parcela
        'trialPeriodDuration' => 30, //opcional
        'details' => 'Decrição do plano', //opcional
        'expiration' => [ // opcional
            'value' => 1, // obrigatório de 1 a 1000000
            'unit' => 'YEARLY', // obrigatório 
        ],
    ]

];

E então você deverá chamar o método de criação do plano:

$plan = \PagSeguro::plan()->createFromArray($plan);
$credentials = \PagSeguro::credentials()->get();
$information = $plan->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());
}

Licença

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