Skip to content

biggercode/pagseguro

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PagSeguro PHP

PagSeguro

A mini biblioteca PagSeguro PHP (não-oficial) permite, de forma bem simplificada, realizar transações, fazer assinaturas, fazer consultas e sincronizar notificações perdidas.

Exemplos:

Fazer uma compra

<?php
$pagseguro = new PagSeguroTransacao();

$pagseguro->email = 'meuemail@exemplo.com.br';
$pagseguro->token = '0123456789ABCDEF0123456789ABCDEF';

$pagseguro->notificacaoUrl = 'https://meusite.com.br/notificar.php';
$pagseguro->redirectUrl = 'https://meusite.com.br/?pagseguro';

try {
    // Algo que identifique a compra. Máx 200 caracteres
    // Pode ser o nº do pedido, id do usuário, etc
    $compraId = 'pedido_123';

    // 1 único produto
    $produto = array(

        // Identificação do produto. Máx 100 caracteres
        'id' => 123,

        // Preço. Valor inteiro
        'preco' => 19.99,

        // Descrição do produto. Máx 100 caracteres
        'descricao' => 'Livro de matemática',

        // Quantidade
        'qtde' => 10
    );

    $url = $pagseguro->pagar($compraId, $produto);

    echo $url;
}
catch (PagSeguroException $e) {
    echo 'ERRO: ' . $e;
}

Fazer uma assinatura

<?php
$pagseguro = new PagSeguroAssinatura();

$pagseguro->email = 'meuemail@exemplo.com.br';
$pagseguro->token = '0123456789ABCDEF0123456789ABCDEF';

$pagseguro->redirectUrl = 'https://meusite.com.br/?pagseguro';

try {
    // Algum identificador único para a assinatura
    // Pode ser um login ou id do usuário
    // Máx 200 caracteres
    $assinaturaId = 'usuario:paulo';

    $preco = 9.9; // R$ 9,90
    $periodo = 12; // 12 meses (Obs.: não pode ser maior que 24 meses)

    $assinatura = array(
        // Preço da assinatura. Informar um valor inteiro
        'preco' => $preco,

        // Nome da assinatura. Máx 100 caracteres
        'nome' => 'Revista mensal XPTO',

        // Descrição da assinatura. Máx 255 caracteres (opcional)
        'descricao' => 'Revista XPTO: tudo sobre programação',

        // auto ou manual (auto recomendado)
        'cobranca' => 'auto',

        // Período: weekly, monthly, bimonthly, trimonthly, semiannually, yearly
        'periodo' => 'monthly',

        // Fim da vigência da assinatura (timestamp)
        // -1day para não contar 1 mês a mais
        'data_final' => strtotime('+' . $periodo . ' months -1day'),

        // Valor máximo que pode ser cobrado durante a vigência da assinatura
        'valor_maximo' => $preco * $periodo
    );

    $url = $pagseguro->assinar($assinaturaId, $assinatura);
    echo $url;
}
catch (PagSeguroException $e) {
    echo 'ERRO: ' . $e;
}

Consultar uma transação no PagSeguro

<?php
$pagseguro = new PagSeguroConsulta();

$pagseguro->email = 'meuemail@exemplo.com.br';
$pagseguro->token = '0123456789ABCDEF0123456789ABCDEF';

try {
    $xml = $pagseguro->consultar(
        PagSeguroNotificacao::TRANSACAO,
        array('code' => 'E35D4859-6011-42DA-9CA6-56137A1E3318')
    );

    header('Content-Type: text/plain');
    print_r($xml);
}
catch (PagSeguroException $e) {
    echo 'ERRO: ' . $e;
}

Receber notificação do PagSeguro via POST

<?php
$pagseguro = new PagSeguroNotificacao();

$pagseguro->email = 'meuemail@exemplo.com.br';
$pagseguro->token = '0123456789ABCDEF0123456789ABCDEF';

$pagseguro->callback = function($xml, $notificationType, $notificationCode,
                                 $manual) {

    // Salvar no banco de dados:
    // $xml->code
    // $xml->type
    // $xml->status
    // $xml->sender->email
    // (...)

    return true;
};

try {
    $salvou = $pagseguro->receberNotificacao($_POST);

    if ($salvou) {
        echo 'Notificação salva com sucesso';
    }
    else {
        echo 'Notificação inválida';
    }
}
catch (PagSeguroException $e) {

    // Importante não retornar HTTP 200 se der algum erro, para que
    // o PagSeguro volte a enviar a notificação mais tarde
    header('HTTP/1.1 422 Unprocessable Entity');

    echo 'ERRO: ' . $e;
}

CloudFlare

Se estiver usando CloudFlare no site, é recomendável adicionar os seguintes IPs na whitelist do firewall, para que as notificações cheguem sem problemas:

  • 186.234.16.8
  • 186.234.16.9
  • 186.234.48.8
  • 186.234.48.9
  • 186.234.144.17
  • 186.234.144.18
  • 200.221.19.4
  • 200.221.19.20
  • 200.147.112.136
  • 200.147.112.137

About

Mini biblioteca PagSeguro em PHP

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 100.0%