Pagseguro Classe que provê algumas interações com a API do PAGSEGURO

<?php/*
 * DATA DE CRIAÇÃO: 07/11/2011
 * ÚLTIMA ALTERAÇÃO: 07/11/2011
 * VERSÃO ATUAL: 1.0
 * LICENSA: OPEN SOURCE
 */
interface IPagseguro{
    public function set_email_vendedor($email_vendedor);
    public function set_token($token);
    public function set_codigo_produto($codigo_produto);
    public function set_nome_produto($nome_produto);
    public function set_valor_produto($valor_produto);
    public function set_peso_produto($peso_produto);
    public function set_tipo_entrega($tipo_entrega);
    public function set_nome_comprador($nome_comprador);
    public function set_email_comprador($email_comprador);
    public function set_bairro($bairro);
    public function set_endereco($endereco);
    public function set_complemento($complemento);
    public function set_numero($numero);
    public function set_cidade($cidade);
    public function set_estado($estado);
    public function set_cep($cep);
    public function set_ddd($ddd);
    public function set_telefone($telefone);
    
    public function get_pagar($id,$qtn);
    public function get_definir_entrega();
    public function get_notificacoes();
}
class Pagseguro{
    protected $email_vendedor;
    protected $token;
    protected $codigo_produto;
    protected $nome_produto;
    protected $valor_produto;
    protected $peso_produto;
    protected $tipo_entrega;
    protected $nome_comprador;
    protected $email_comprador;
    protected $bairro;
    protected $endereco;
    protected $complemento;
    protected $numero;
    protected $cidade;
    protected $estado;
    protected $cep;
    protected $ddd;
    protected $telefone;
        
    public function set_email_vendedor($email_vendedor){
        return $this->email_vendedor = $email_vendedor;
    }
    
    public function set_token($token){
        return $this->token = $token;
    }
    
    public function set_codigo_produto($codigo_produto){
        return $this->codigo_produto = $codigo_produto;
    }
    
    public function set_nome_produto($nome_produto){
        return $this->nome_produto = $nome_produto;
    }
    
    public function set_valor_produto($valor_produto){
        return $this->valor_produto = $valor_produto;
    }
    
    public function set_peso_produto($peso_produto){
        return $this->peso_produto = $peso_produto;
    }
    
    public function set_tipo_entrega($tipo_entrega){
        return $this->tipo_entrega = $tipo_entrega;
    }
    
    public function set_nome_comprador($nome_comprador){
        return $this->nome_comprador = $nome_comprador;
    }
    
    public function set_email_comprador($email_comprador){
        return $this->email_comprador = $email_comprador;
    }
    
    public function set_bairro($bairro){
        return $this->bairro = $bairro;
    }
    
    public function set_endereco($endereco){
        return $this->endereco = $endereco;
    }
    
    public function set_complemento($complemento){
        return $this->complemento = $complemento;
    }
    
    public function set_numero($numero){
        return $this->numero = $numero;
    }
    
    public function set_cidade($cidade){
        return $this->cidade = $cidade;
    }
    
    public function set_estado($estado){
        return $this->estado = $estado;
    }
    
    public function set_cep($cep){
        return $this->cep = $cep;
    }
    
    public function set_ddd($ddd){
        return $this->ddd = $ddd;
    }
    
    public function set_telefone($telefone){
        return $this->telefone = $telefone;
    }
    
    public function get_pagar($id,$qtn){
        return $this->pagar($id,$qtn);
    }
    
    public function get_definir_entrega(){
        $this->definir_entrega();
    }
    
    public function get_notificacoes(){
        return $this->notificacoes();
    }
    
    protected  function definir_entrega(){
        switch($this->tipo_entrega){
            case 'pac':
                $this->tipo_entrega = 1;
                
            case 'sedex':
                $this->tipo_entrega = 2;
                
            case '':
                $this->tipo_entrega = 3;
        }
    }


    protected function pagar($id,$qtn){
        $post_fields = "email=$this->email_vendedor";
        $post_fields.= "&token=$this->token";
        $post_fields.= "&currency=BRL";
        $post_fields.= "&itemId$id=$id";
        $post_fields.= "&itemDescription$id=$this->nome_produto";
        $post_fields.= "&itemAmount$id=$this->valor_produto";
        $post_fields.= "&itemQuantity$id=$qtn";
        $post_fields.= "&itemWeight$id=$this->peso_produto";
        $post_fields.= "&senderName=$this->nome_comprador";
        $post_fields.= "&senderAreaCode=$this->ddd";
        $post_fields.= "&senderPhone=$this->telefone";
        $post_fields.= "&senderEmail=$this->email_comprador";
        $post_fields.= "&shippingType=$this->tipo_entrega";
        $post_fields.= "&shippingAddressStreet=$this->endereco";
        $post_fields.= "&shippingAddressNumber=$this->numero";
        $post_fields.= "&shippingAddressComplement=$this->complemento";
        $post_fields.= "&shippingAddressDistrict=$this->bairro";
        $post_fields.= "&shippingAddressPostalCode=$this->cep";
        $post_fields.= "&shippingAddressCity=$this->cidade";
        $post_fields.= "&shippingAddressState=$this->estado";
        $post_fields.= "&shippingAddressCountry=BRA";
        
        $ch = curl_init("https://ws.pagseguro.uol.com.br/v2/checkout/");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded; charset=ISO-8859-1"));
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
        $r = curl_exec($ch);
        curl_close($ch);

        $xml = simplexml_load_string($r);
        
        # verifica se o código existe ( se existir é porque tudo está ok )
        if(isset($xml->code)){      
            # retorna o codigo
            return $xml->code;
                 
        }else{
            return false;
        }
    }
    
    protected function notificacoes(){

        # seta a url de destino
        $url = "https://ws.pagseguro.uol.com.br/v2/transactions/$this->codigo_produto?email=$this->email_vendedor&token=$this->token";
        
        # armazena os tipos de status para comparar
        $status = array(
        1 =>    'Aguardando pagamento',
        2 =>    'Em análise',
        3 =>    'Pago',
        4 =>    'Disponível',
        5 =>    'Em disputa',
        6 =>    'Devolvida',
        7 =>    'Cancelada'
        );

        # faz a consulta a API
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
        curl_setopt($ch, CURLOPT_HEADER, false);
        $r = curl_exec($ch);
        curl_close($ch);

        # retorna o status no formato xml
        $xml = simplexml_load_string($r);
        
        # retorna o status da compra
        return $status[(int)$xml->status];
    }
}
?>

0 comentários:

Postar um comentário

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites More