Ir para conteúdo
Fórum Script Brasil
  • 0

Problemas integrar API PagSeguro peço Ajuda


romihue

Pergunta

om dia,

Sou novo no scriptbrasil. Eu fiz um curso de PHP , mas uns 10 anos atrás e assim meu PHP está meio antigo :blush:.
Bem Montamos um portal em Joomla 3.4 , hospedado no Amazon webservice com Bitnami.
Estmaos usando uma extension chamado VikEvents. (Vender ingressos)
Preciso integrar PagSeguro API para as vendas, mas com meus conhecimentos não deu certo. Suporte do PaSeguro não pude (ou quis) resolver problema.
Recebi um exemplo do gateway de pagamento do vikevents. Eles usam formulario com hidden inputs. Mas precisamos do API.
O teame Vikevents sugeriu de usar um curl enquanto de um form. Testei mais não deu certo.
Peço ajuda aqui por que meu chefe tá já sem paciencia.

Este é o code do vikevents:

defined('_JEXEC') OR die('Restricted Area');


class VikEventsPayment {
    
    private $order_info;
    private $params;
    
    public static function getAdminParameters() {
        //shows payment in Backend Payments
        $logo_img = JURI::root().'administrator/components/com_vikevents/payments/mypay/logo.gif';
        return array(    
            'logo' => array(
                'label' => ' Logo',
                'type' => 'custom',
                'html' => '<img src="'.$logo_img.'"/>'
            ),
            'merchantid' => array(
                'label' => 'Pagseguro App ID',
                'type' => 'text'
            ),
            'merchantkey' => array(
                'label' => 'PagSeguro App Key',
                'type' => 'text'
            ),
            'testmode' => array(
                'label' => 'Test Mode',
                'type' => 'select',
                'options' => array('Yes', 'No'),
            ),
        );
    }
    
    public function __construct ($order, $params=array()) {
        $this->order_info = $order;
        $this->params = $params;
    }
        
    
    public function showPayment () {
    
        $merchant_id = $this->params['merchantid'];
        
        $action_url = "https://Your_payment_checkout.com/";
        if( $this->params['testmode'] == 'Yes' ) {
            $action_url = "https://sandbox.Your_payment_checkout.com/";
        }

        $form='<form action="'.$action_url.'" method="post">';
        // put here all the required fields of your gateway
        $form.='<input type="hidden" name="your_post_data_merchantid" value="'.$merchant_id.'"/>';
        $form.='<input type="hidden" name="your_post_data_amount" value="'.$this->order_info['total_to_pay'].'"/>';
        $form.='<input type="hidden" name="your_post_data_notifyurl" value="'.$this->order_info['notify_url'].'"/>'; //Payment response will be analyzed by the validatePayment()
        $form.='<input type="hidden" name="your_post_data_description" value="'.$this->order_info['transaction_name'].'"/>';
        // print a button to submit the payment form
        $form.='<input type="submit" name="_submit" value="Pay Now!" />';
        $form.='</form>';
        
        echo $form;

    }
    
    public function validatePayment () {
        $array_result = array();
        $array_result['verified'] = 0;
        $array_result['tot_paid'] = ''; /** This value will be stored in the DB */
        
        /** In case of error the logs will be sent via email to the admin */
        $array_result['log'] = '';
        
        $status = $_POST['status'];
        /** Process your gateway response here */
        if($status == 'success') {
            $array_result['verified'] = 1;
            /** Set a value for $array_result['tot_paid'] */
            $array_result['tot_paid'] = $_POST['amount'];
        } else {
            $array_result['log'] = "Transaction Error!\n".$_POST['error_msg'];
        }
        
        /** Return the array result to VikEvents */
        return $array_result;
    }

    public function afterValidation ($esit = 0) {
    
        $mainframe = JFactory::getApplication();
        //URL to order details page
        $redirect_url = 'index.php?option=com_vikevents&task=orders&oid='.$this->order_info['id'].'&scode='.$this->order_info['scode'];
        
        if($esit < 1) {
            JError::raiseWarning('', 'The payment was not verified, please try again.');
            $mainframe->redirect($redirect_url);
        } else {
            $mainframe->enqueueMessage('Thank you! The payment was verified successfully.');
            $mainframe->redirect($redirect_url);
        }
        
        exit;
        //No page rendering
    }
}

e este meu code para PagSeguro:

header("Content-Type: application/x-www-form-urlencoded; charset=UTF-8");

include_once "PagSeguroLibrary/PagSeguroLibrary.php";

class VikEventsPayment {
    
    private $order_info;
    private $params;
    
    public static function getAdminParameters() {
        //shows payment in Backend Payments
        $logo_img = JURI::root().'administrator/components/com_vikevents/payments/mypay/avista_estatico_130_230.gif';
        return array(    
            'logo' => array(
                'label' => ' Logo',
                'type' => 'custom',
                'html' => '<img src="'.$logo_img.'"/>'
            ),
            'merchantid' => array(
                'label' => 'Pagseguro App ID',
                'type' => 'text'
            ),
            'merchantkey' => array(
                'label' => 'PagSeguro App Key',
                'type' => 'text'
            ),
            'testmode' => array(
                'label' => 'Test Mode',
                'type' => 'select',
                'options' => array('Yes', 'No'),
            ),
        );
    }
    
    public function __construct ($order, $params=array()) {
        $this->order_info = $order;
        $this->params = $params;
    }
        
    
    public function showPayment () {
    
        $paymentRequest = new PagSeguroPaymentRequest();
        $merchant_id = $this->params['merchantid'];
        
        $action_url = "https://ws.pagseguro.uol.com.br/v2/checkout";
        if( $this->params['testmode'] == 'Yes' ) {
            $action_url = "https://sandbox.pagseguro.uol.com.br/";
        }
        
                $data['email'] = 'meumail@doportal.com';
                $data['token'] = '01234567890123456789';
                $data['currency'] = 'BRL';
                $data['itemId1'] = ''.$this->order_info['transaction_name'].'';
                $data['itemDescription1'] = ''.$this->order_info['event_name'].'';
                $data['itemAmount1'] = ''.$this->order_info['total_to_pay'].'';
                $data['itemQuantity1'] = ''.$this->order_info['order']['persons'].'';
                $data['reference'] = ''.$this->order_info['id'].'';
                $data['senderName'] = ''.$this->order_info['membdata'].'';
                
                $data['redirectURL'] = 'http://www.meuportal.com.br';
                
                $data = http_build_query($data);
                
                $curl = curl_init($url);
                
                curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
                curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
                curl_setopt($curl, CURLOPT_POST, true);
                curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
                curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
                $xml= curl_exec($curl);
                
                if($xml == 'Unauthorized'){
                //Insira seu código de prevenção a erros
                
                header('Location: erro.php?tipo=autenticacao');
                exit;//Mantenha essa linha
                }
                curl_close($curl);
                
                $xml= simplexml_load_string($xml);
                if(count($xml -> error) > 0){
                //Insira seu código de tratamento de erro, talvez seja útil enviar os códigos de erros.
                
                header('Location: erro.php?tipo=dadosInvalidos');
                exit;
                }
                header('Location: https://pagseguro.uol.com.br/v2/checkout/payment.html?code=' . $xml -> code);

        $form='<form action="'.$action_url.'" method="post">';
        // put here all the required fields of your gateway
        $form.='<input type="hidden" name="receiverEmail" value="meumail@doportal.com"/>';
        $form.='<input type="hidden" name="currency" value="BRL"/>';
        $form.='<input type="hidden" name="itemId1" value="'.$this->order_info['transaction_name'].'"/>';
        $form.='<input type="hidden" name="itemQuantity1" value="'.$this->order_info['order']['persons'].'"/>';
        $form.='<input type="hidden" name="itemDescription1" value="'.$this->order_info['event_name'].'"/>';
        $form.='<input type="hidden" name="itemAmount1" value="'.number_format($this->order_info['total_to_pay'], 2)."\"/>\n'/>'";
        $form.='<input type="hidden" name="itemAmount1" value="'.number_format($this->order_info['total_tax'], 2)."\"/>\n'/>'";    
        $form.='<input type="hidden" name="transaction_id" value="'.$this->order_info['notify_url'].'"/>'; //Payment response will be analyzed by the validatePayment()
        
        $form.='<input name="reference" value="'.$this->order_info['id'].'" type="hidden">';
        
        $form.='<input type="hidden" name="senderName" value="'.$this->order_info['membdata'].'"/>';
        // print a button to submit the payment form
        $form.='<input alt="Pague com PagSeguro" name="submit" type="image"
src="https://p.simg.uol.com.br/out/pagseguro/i/botoes/pagamentos/120x53-pagar.gif"/>';
        $form.='</form>';
        
        
        //output form
        
        echo $this->order_info['payment_info']['note'];
        echo $form;
        
        return true;

    }
    
    public function validatePayment () {
        $array_result = array();
        $array_result['verified'] = 0;
        $array_result['tot_paid'] = ''; /** This value will be stored in the DB */
        
        /** In case of error the logs will be sent via email to the admin */
        $array_result['log'] = '';
        
        $status = $_POST['status'];
        /** Process your gateway response here */
        if($status == 'success') {
            $array_result['verified'] = 1;
            /** Set a value for $array_result['tot_paid'] */
            $array_result['tot_paid'] = $_POST['amount'];
        } else {
            $array_result['log'] = "Transaction Error!\n".$_POST['error_msg'];
        }
        
        /** Return the array result to VikEvents */
        return $array_result;
    }

    public function afterValidation ($esit = 0) {
    
        $mainframe = JFactory::getApplication();
        //URL to order details page
        $redirect_url = 'index.php?option=com_vikevents&task=orders&oid='.$this->order_info['id'].'&scode='.$this->order_info['scode'];
        
        if($esit < 1) {
            JError::raiseWarning('', 'The payment was not verified, please try again.');
            $mainframe->redirect($redirect_url);
        } else {
            $mainframe->enqueueMessage('Thank you! The payment was verified successfully.');
            $mainframe->redirect($redirect_url);
        }
        
        exit;
        //No page rendering
    }
}

Com isso recebo o erro do pagseguro: Invalid email (troquei aqui, claro ,meu email-endereço, o original está certo e cadastrado no PagSeguro). Seu eu retiro o form, ele manda mais nada.

Algem pode ajudar favor?

Agradeço romihue

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...