Giter VIP home page Giter VIP logo

php-pagseguro's Introduction

Latest Stable Version License

PHP - Pagseguro V3

Classe para realizar compras normais (Checkout Transparente ou não) ou recorrentes no PagSeguro

Para realizar compras recorrentes no PagSeguro como assinaturas, olhe os examples na página abaixo:


Gerando Token

Para gerar o Token da sua conta do PagSeguro, logar na conta, ir em Minha Conta >> Preferências >> Integração e solicar para gerar um token

Token em produção

No Sandbox para testes, seu token pode ser acessado em Perfil de Integração >> Vendedor

Token no Sandbox

Baixando o projeto

Para usar esse projeto, basta baixar esse repositório em seu projeto e importar a classe em src/PagSeguroAssinaturas.php ou usar o composer que é o mais indicado:

composer require carloswgama/php-pagseguro:3.*

Caso seu projeto já possua um arquivo composer.json, você pode também adiciona-lo nas dependências require e rodar um composer install:

{
    "require": {
        "carloswgama/php-pagseguro": "3.*"
    }
}

Documentação do uso da classe

Documentação Pagamentos Recorrentes com PagSeguro

Documentação Pagamentos de Compras com PagSeguro com Checkout Transparente, Padrão e Lightbox

Exemplos

Abaixo segue apenas dois exemples do uso da Biblioteca

Criando uma compra simples

<?php
require_once(dirname(__FILE__).'/vendor/autoload.php');
use CWG\PagSeguro\PagSeguroCompras;

$email = "[email protected]";
$token = "33D43C3F884E4EB687C2C62BB92ECD6A";
$sandbox = true;

$pagseguro = new PagSeguroCompras($email, $token, $sandbox);

//Nome do comprador (OPCIONAL)
$pagseguro->setNomeCliente("CARLOS W GAMA");	
//Email do comprovador (OPCIONAL)
$pagseguro->setEmailCliente("[email protected]");
//Código usado pelo vendedor para identificar qual é a compra (OPCIONAL)
$pagseguro->setReferencia("CWG004");	
//Adiciona os itens da compra (ID do ITEM, DESCRICAO, VALOR, QUANTIDADE)
$pagseguro->adicionarItem('ITEM0001', 'Item 1', 10.00, 2);
$pagseguro->adicionarItem('ITEM0002', 'Item 2', 15.50, 1);

//URL para onde será enviado as notificações de alteração da compra (OPCIONAL)
$pagseguro->setNotificationURL('http://carloswgama.com.br/pagseguro/not/notificando.php');
//URL para onde o comprador será redicionado após a compra (OPCIONAL)
$pagseguro->setRedirectURL('http://carloswgama.com.br/');

try{
    $url = $pagseguro->gerarURLCompra();
    echo 'Sua URL para o pagamento: ' . $url;
} catch (Exception $e) {
    echo $e->getMessage();
}

Criando uma compra checkout transparente via boleto

use CWG\PagSeguro\PagSeguroCompras;

$email = "[email protected]";
$token = "33D43C3F884E4EB687C2C62BB92ECD6A";
$sandbox = true;

$pagseguro = new PagSeguroCompras($email, $token, $sandbox);

//Desabilita as outras formas de pagamento, caso não queira
$pagseguro->habilitaBoleto(false)
          ->habilitaDebito(false);

//Informar os produtos NO CASO DE CARTÃO DE CREDITO para calcular as parcelas
$pagseguro->adicionarItem('ITEM0001', 'Item 1', 10.00, 2);
$pagseguro->adicionarItem('ITEM0002', 'Item 2', 15.50, 1);
$pagseguro->setParcelasSemJuros(3); //Informa quantidade de parcelas sem juros

//URL para onde os dados da compra será realizado para confirmar com o PagSeguro
$urlFinalizar = 'http://localhost/pagseguro/examples/compra/checkout-transparente/finalizar_compra.php';

//JavaScript opcional para realizar ao receber os dados de retorno da URL final
$jsOpcional = 'alert("Alerta do $jsOpcional"); if (response.success) alert("Concluido com sucesso");';

//Informa URL para completar a compra, JS (opcional) a ser feito e TRUE (OPCIONAL) caso queira importar JQuery
$js = $pagseguro->preparaCheckoutTransparente($urlFinalizar, $jsOpcional, true);
?>
<!--=========================== CARTÃO DE CREDITO ===========================-->
<h1>Cartão de Crédito</h1>
<h2> Campos Obrigatórios </h2>
<p>Número do Cartão</p>
<input type="text" id="pagseguro_cartao_numero" value="4111111111111111"/>

<p>CVV do cartão</p>
<input type="text" id="pagseguro_cartao_cvv" value="123"/>

<p>Mês de expiração do Cartao</p>
<input type="text" id="pagseguro_cartao_mes" value="12"/>

<p>Ano de Expiração do Cartão</p>
<input type="text" id="pagseguro_cartao_ano" value="2030"/>

<p>Parcelas</p>
<select id="pagseguro_cartao_parcela">
    <option></option>
</select>

<br/>

<!-- Use A classe pagseguro-pagar-cartao para completar via Cartão -->
<button id="botao_comprar" class="pagseguro-pagar-cartao">Comprar Cartão</button>

<?=$js['completo']; //Importa o Código do CheckoutTransparente?>

Criando um plano de assinatura

<?php
require_once(dirname(__FILE__).'/vendor/autoload.php');
use CWG\PagSeguro\PagSeguroAssinaturas;

$email = "[email protected]";
$token = "33D43C3F884E4EB687C2C62BB92ECD6A";
$sandbox = true;

$pagseguro = new PagSeguroAssinaturas($email, $token, $sandbox);

//Cria um nome para o plano
$pagseguro->setReferencia('Plano_CWG_01');

//Cria uma descrição para o plano
$pagseguro->setDescricao('Libera o acesso ao portal por 3 meses. A assinatura voltará a ser cobrada a cada 3 meses.');

//Valor a ser cobrado a cada renovação
$pagseguro->setValor(30.00);

//De quanto em quanto tempo será realizado uma nova cobrança (MENSAL, BIMESTRAL, TRIMESTRAL, SEMESTRAL, ANUAL)
$pagseguro->setPeriodicidade(PagSeguroAssinaturas::TRIMESTRAL);

//=== Campos Opcionais ===//
//Após quanto tempo a assinatura irá expirar após a contratação = valor inteiro + (DAYS||MONTHS||YEARS). Exemplo, após 5 anos
$pagseguro->setExpiracao(5, 'YEARS');

//URL para redicionar a pessoa do portal PagSeguro para uma página de cancelamento no portal
$pagseguro->setURLCancelamento('http://carloswgama.com.br/pagseguro/not/cancelando.php');

//Local para o comprador será redicionado após a compra com o código (code) identificador da assinatura
$pagseguro->setRedirectURL('http://carloswgama.com.br/pagseguro/not/assinando.php');		

//Máximo de pessoas que podem usar esse plano. Exemplo 10.000 pessoas podem usar esse plano
$pagseguro->setMaximoUsuariosNoPlano(10000);

//=== Cria o plano ===//
try {
    $codigoPlano = $pagseguro->criarPlano();
    echo "O Código do seu plano para realizar assinaturas é: " . $codigoPlano;
} catch (Exception $e) {
    echo "Erro: " . $e->getMessage();
}

Estornando compra já aprovada

Apenas é possível estornar compra que tenha sido concluída com sucesso. Por tanto com os status: Paga (3) Disponível (4) ou Em Disputa (5)

<?php
require_once(dirname(__FILE__).'/vendor/autoload.php');
use CWG\PagSeguro\PagSeguroCompras;

$email = "[email protected]";
$token = "33D43C3F884E4EB687C2C62BB92ECD6A";
$sandbox = true;

$pagseguro = new PagSeguroCompras($email, $token, $sandbox);

$codigoTransacao = 'D76FB9C45A7848888094BBA4C3718BC9';
try {
    //Estornando
    $pagseguro->estornar($codigoTransacao);

    //Opcionalmente pode informar a quantia a estornar (Ex: R$ 178,99). Senão informado, estorna todo valor
    //$pagseguro->estornar($codigoTransacao, 178.99);
} catch(Exception $e) {
    echo $e->getMessage();
}

Nos links acima você poderá ver diversos exemples para criar plano, assinatura, compra, notificações...


Autor: Carlos W. Gama ([email protected]) Licença: MIT

Livre para usar, modificar como desejar e destribuir como quiser

php-pagseguro's People

Contributors

carloswgama avatar danilowm avatar hugobarbato avatar viniciusgoliver avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

php-pagseguro's Issues

Erro ao cadastrar plano de assinatura

Ao cadastrar um plano de assinatura, trabalhando com sandbox, obtive este erro.
A uns dias atrás, este código estava funcionando, agora retorna um erro.

A PHP Error was encountered
Severity: Notice

Message: Undefined index: errors

Filename: src/PagSeguroAssinaturas.php

Line Number: 269


A PHP Error was encountered
Severity: Warning

Message: current() expects parameter 1 to be array, null given

Filename: src/PagSeguroAssinaturas.php

Line Number: 269

Roubo de dados

Ontem registrei um boletim de ocorrência de uma fraude no meu cartão de credito, foi feito várias compras com o seu nome como estabelecimento. A instituição bancária colaborou me passando os dados das transações indevidas, como local, cnpj, e o tipo da transação.
Todos sabemos que você é programador renomado e tem conhecimento avançado em API's e compras online, mas agora vai ter que prestar esclarecimentos para policia por esses crimes.

Dados do comprador no Checkout PagSeguro

Notei que ao utilizar o Checkout PagSeguro, informar o email e nome do comprador não faz diferença na página de checkout do PagSeguro.

$pagseguro->setNomeCliente("CARLOS W GAMA");
$pagseguro->setEmailCliente("[email protected]");

Eu esperaria que informando ambos os dados ao carregar a página de checkout, a conta do comprador já fosse 'pré-selecionada', bastando apenas informar a senha. Mas não é o que acontece.

Poderiam por favor me esclarecer se isto está correto?

Sandbox do Pagseguro não envia Notification Url de volta para meu site com o status da assinatura

Desculpa perguntar aqui mas é porque realmente não sei mais o que faço. Ja configurei a url de notificação no pagseguro e no cadastro do plano também, mas, ao alterar qualquer coisa como uma simulação de pagamento, o sandbox simplesmente não envia a notificação conforme o print:

image

Como pode ver ele sequer tenta chamar a url de notificação. No plano está configurado a url e no menu também conforme pode ver:

image

image

Aqui está o log, ele mostra apenas que o sandbox recebeu as requests de criação de plano e assinatura mas nao enviou nenhuma de alteração de status:

image

Se puder por favor me ajudar ou me apontar outra alternativa, estou realmente sem saber o que fazer. Obrigado.

Erro ao Gerar Token de Cartão em Produção

Prezado,

houve alguma alteração ou descontinuidade na API de Pagamentos Recorrentes? Após preencher os dados do cartão corretamente, há uma mensagem de Token Required, mesmo com os dados sendo passados corretamente para a função.

Transações não aprovadas

Por que todas as transações fica com status aguardando pagamento?

image

Na função assinaPlano da class do arquivo PagSeguroAssinaturas.php, está retornando tudo, inclusive o token, o que falta para pagar?

array(4) {
  ["sender"]=>
  array(6) {
    ["email"]=>
    string(46) "*****@sandbox.pagseguro.com.br"
    ["name"]=>
    string(16) "Davi Lorem Ipsum"
    ["hash"]=>
    string(64) "66*****7763aa0c90343****1d067aec819753b****"
    ["phone"]=>
    array(2) {
      ["areaCode"]=>
      string(2) "11"
      ["number"]=>
      string(9) "999999999"
    }
    ["documents"]=>
    array(1) {
      [0]=>
      array(2) {
        ["type"]=>
        string(3) "CPF"
        ["value"]=>
        string(11) "11111111111"
      }
    }
    ["address"]=>
    array(8) {
      ["street"]=>
      string(5) "Rua C"
      ["number"]=>
      string(2) "99"
      ["complement"]=>
      string(11) "COMPLEMENTO"
      ["district"]=>
      string(6) "BAIRRO"
      ["city"]=>
      string(10) "São Paulo"
      ["state"]=>
      string(2) "SP"
      ["country"]=>
      string(3) "BRA"
      ["postalCode"]=>
      string(8) "57000000"
    }
  }
  ["paymentMethod"]=>
  array(2) {
    ["type"]=>
    string(10) "CREDITCARD"
    ["creditCard"]=>
    array(2) {
      ["token"]=>
      string(32) "6a*****2ee4ce5f13"
      ["holder"]=>
      array(5) {
        ["name"]=>
        string(16) "Davi Lorem Ipsum"
        ["birthDate"]=>
        string(10) "01/01/1990"
        ["phone"]=>
        array(2) {
          ["areaCode"]=>
          string(2) "11"
          ["number"]=>
          string(9) "999999999"
        }
        ["documents"]=>
        array(1) {
          [0]=>
          array(2) {
            ["type"]=>
            string(3) "CPF"
            ["value"]=>
            string(11) "11111111111"
          }
        }
        ["billingAddress"]=>
        array(8) {
          ["street"]=>
          string(5) "Rua C"
          ["number"]=>
          string(2) "99"
          ["complement"]=>
          string(11) "COMPLEMENTO"
          ["district"]=>
          string(6) "BAIRRO"
          ["city"]=>
          string(10) "São Paulo"
          ["state"]=>
          string(2) "SP"
          ["country"]=>
          string(3) "BRA"
          ["postalCode"]=>
          string(8) "57000000"
        }
      }
    }
  }
  ["plan"]=>
  string(32) "BB6****47818D735"
  ["reference"]=>
  string(6) "CWG004"
}

Adição do Código do erro no retorno

Poderia adicionar o código de erro no retorno para que seja possível efetuar o tratamento dos erros na parte de assinatura? Fiz a modificação manualmente mas poderia ser útil para outras pessoas.

Arquivo: PagSeguroAssinaturas.php (classe), função assinaPlano, Linha 294 (pode ser usado em qualquer retorno de erro)

	//Dados do cliente
	$dados['sender'] 		= $this->cliente;
	//Dados do pagamento
	$dados['paymentMethod'] = $this->formaPagamento;
	//Dados do plano
	$dados['plan'] 			= $this->planoCode;
	//Dados da compra
	$dados['reference']		= $this->referencia;

	$response = $this->post($this->getURLAPI('pre-approvals/'), $dados);

	if ($response['http_code'] == 200) {
		return $response['body']['code'];
	} else {
		throw new \Exception(current($response['body']['errors']), key($response['body']['errors']));
	}

Me Ajude

Como faço para neste modo do pagseguro desativar a opção de endereço na página de pagamento ?

Já tentei de tudo, e diferentes bibliotecas e não consigo em nenhuma.
Meus produtos são virtuais logo, não tem porque eu pedir o endereço ao cliente, nem meio de entrega.

Agradeço se puder me ajudar, desculpe o incomodo.

Cancelamento de plano gerando erro.

Olá, pode me ajudar se possível?

No cancelamento da assinatura, um erro é retornado.

"pre-approval not found."

Consta que o código da assinatura não é um PreApproval, mas está cadastrada na lista e ativa.

include_once dirname(dirname(FILE)).'/_gateway/vendor/autoload.php';
use CWG\PagSeguro\PagSeguroAssinaturas;

$token = $dp['token_pagseguro'];
$email = $dp['email_pagseguro'];
$sandbox = $dp['sandbox_pagseguro'];
$pagseguro = new PagSeguroAssinaturas($email, $token, $sandbox);
$codePagSeguro = $dr['codigo']; // 2BDA5A58CECEBAB664497F85D7194DA6

try {
print_r($pagseguro->cancelarAssinatura($codePagSeguro));
} catch (Exception $e) {
echo $e->getMessage();
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.