TransWikia.com

Pagseguro não redireciona cliente após pagamento

Stack Overflow em Português Asked by Ale on January 26, 2021

Após o pagamento, o cliente devia ser redirecionado para a página de obrigado que eu configurei, mas não é o que acontece.

Veja, eu peguei uma API, precisei apenas configurar 2 arquivos, entre eles são: PaymentPagseguro.php e PagSeguroConfig.php.

O cliente paga, eu recebo o pagamento, tá tudo certo, o problema é que não é direcionado para página que configurei neste arquivo PaymentPagseguro.php, exatamente neste pedaço de código:

$paymentRequest->setRedirectUrl("https://meusite.com/obrigado.php");

Veja que, eu recebo alguns erros no console(não visível pro cliente) a respeito da aplicação do Pagseguro, mas nunca desconfiei porquê tudo funciona normalmente, somente o redirecionamento que não funciona.

Mas veja, os erros que ocorrem no console:

  1. No momento da abertura da página:

    (2) Bloqueado carregamento de conteúdo ativo mesclado
    http://clicklogger.rm.uol.com.br/qkw_crossdomain.html?appender=&prd=32&grouping=&referrer=https%3A//www.slimpatchbr.com/comprar.php

    Isso deve ocorrer porquê meu site é https, mas não acredito ser o problema..

  2. Quando preencho meu e-mail e clico em avançar:

    GET
    https://dna.uol.com.br/service/sample/conn?id=64ef863649064183a7e740d6a2ae259c&sess=&_=1427674714416
    403 Forbidden 60ms


    GET
    https://dna.uol.com.br/service/sample/conn?id=64ef863649064183a7e740d6a2ae259c&sess=&_=1427674714513
    403 Forbidden 42ms

  3. Quando finalizo o pagamento e clico em fechar

    TypeError: this.callback is undefined
    …Token=this.token;},catchCommunicationException:function(){if(window.location.toS…

Bom, mais detalhes, peçam, para mim tá sendo um grande problema, pois na página de obrigado possuo pixels de conversão que não estão sendo ativados.

3 Answers

Acredito que esteja usando o v2, como você não informou como configurou, irei apenas supor a resposta conforme a documentação

No PHP devemos chamar a classe PagSeguroPaymentRequest

$paymentRequest = new PagSeguroPaymentRequest();

Para adicionar um item ou mais:

$paymentRequest->addItem('0001', 'Notebook', 1, 2430.00);  
$paymentRequest->addItem('0002', 'Mochila',  1, 150.99);

Informando o endereço do comprador, assim como tipo do frete:

$sedexCode = PagSeguroShippingType::getCodeByType('SEDEX');  
$paymentRequest->setShippingType($sedexCode);  
$paymentRequest->setShippingAddress(  
  '01452002',  
  'Av. Brig. Faria Lima',
  '1384',
  'apto. 114',
  'Jardim Paulistano',
  'São Paulo',
  'SP',
  'BRA'
);

Caso você já tenha os dados do comprador, poderá informá-los para facilitar o fluxo de pagamento. Desta forma ele não precisará informá-los novamente.

$paymentRequest->setSender(  
  'João Comprador',  
  '[email protected]',  
  '11',  
  '56273440',  
  'CPF',  
  '156.009.442-76'  
); 

Definindo a moeda a ser utilizada no pagamento.

$paymentRequest->setCurrency("BRL"); 

Definindo informações adicionais, que poderão ser utilizadas pelo seu sistema após o fluxo de pagamento no PagSeguro, acredito que o problema possa ser aqui.

// Referenciando a transação do PagSeguro em seu sistema
$paymentRequest->setReference("REF123");  
  
// URL para onde o comprador será redirecionado (GET) após o fluxo de pagamento  
$paymentRequest->setRedirectUrl("https://exemplo.com/obrigado.php");  
  
// URL para onde serão enviadas notificações (POST) indicando alterações no status da transação  
$paymentRequest->addParameter('notificationURL', 'http://www.lojamodelo.com.br/nas');

É possível adicionar na requisição de checkout parâmetros/informações que, apesar de já terem sido implementados na API, ainda não estão disponíveis em forma de métodos na biblioteca.

$paymentRequest->addParameter('senderBornDate', '07/05/1981');

Por fim você deve registrar a requisição no sistema do PagSeguro. O retorno do método register, por padrão, será a URL que deverá ser utilizada para redirecionar o comprador para a tela de pagamento no PagSeguro.

A maneira de realizar o redirecionamento do comprador para efetivar o pagamento no PagSeguro após o retorno da chamada ao método register depende da implementação de seu sistema.

try {
  $credentials = PagSeguroConfig::getAccountCredentials();
  $checkoutUrl = $paymentRequest->register($credentials); 
} catch (PagSeguroServiceException $e) {
    die($e->getMessage());
}

Neste ponto devemos usar o $checkoutUrl, deve ficar algo como:

try {
    $credentials = PagSeguroConfig::getAccountCredentials();
    $checkoutUrl = $paymentRequest->register($credentials);

    echo '<h2>Criando requisição de pagamento</h2>',
        '<p>URL do pagamento: <strong>', $checkoutUrl,'</strong></p>',
        '<p>',

        //Mostra link para pagamento
        '<a title="URL do pagamento" href="', $checkoutUrl,'">',
        'Ir para URL do pagamento.</a></p>';

} catch (PagSeguroServiceException $e) {
    die($e->getMessage());
}

Se o uso de PagSeguroConfig::getAccountCredentials não funcionar é por que provavelmente tem algo errado nos dados do PagSeguroConfig.php, mas você pode tentar "manualmente" para verificar a situação:

$credentials = new PagSeguroAccountCredentials("[email protected]",
    "E231B2C9BCC8474DA2E260B6C8CF60D3");

$url = $paymentRequest->register($credentials);

E231B2C9BCC8474DA2E260B6C8CF60D3 é o código de autorização, você também pode setar ele no PagSeguroConfig::getAccountCredentials, como descrito nos exemplos, assim:

$credentials->setAuthorizationCode("E231B2C9BCC8474DA2E260B6C8CF60D3");

Alguns dos demais problemas (erro 403) que ocorrem pode ser por falta do "token" do arquivo pageseguro, configure o arquivo e de preferencia adicione o caminho real para um arquivo de log.

Inicie a configuração normalmente no PagSeguroConfig.php:

$PagSeguroConfig = array();

$PagSeguroConfig['environment'] = "production"; // production ou sandbox

$PagSeguroConfig['credentials'] = array();
$PagSeguroConfig['credentials']['email'] = "your_pagseguro_email";

Este pode ser o ponto que precisa ser corrigido, é necessário o token de produção o appId e o appKey:

$PagSeguroConfig['credentials']['token']['production'] = "Token de produçao do pagseguro";
$PagSeguroConfig['credentials']['token']['sandbox'] = "Token do sandbox";
$PagSeguroConfig['credentials']['appId']['production'] = "Seu ID de produção";
$PagSeguroConfig['credentials']['appId']['sandbox'] = "Seu ID de produção";
$PagSeguroConfig['credentials']['appKey']['production'] = "Sua chave de aplicativo para o ambiente de produção";
$PagSeguroConfig['credentials']['appKey']['sandbox'] = "Sua chave de aplicativo para o ambiente sandbox";

Configure o log para poder obter detalhes, talvez ajude a encontrar o problema defina true em $PagSeguroConfig['log']['active'] = true; e o caminho real de um arquivo em $PagSeguroConfig['log']['fileLocation'], por exemplo:

$PagSeguroConfig['log']['fileLocation'] = '/home/user/www/pagseguro/log.txt';

Deve ficar algo como:

$PagSeguroConfig['log'] = array();
$PagSeguroConfig['log']['active'] = true;
$PagSeguroConfig['log']['fileLocation'] = '/home/user/www/pagseguro/log.txt';

O erro TypeError: this.callback is undefined pode ter ocorrido por causa do (2) Bloqueado carregamento de conteúdo ativo mesclado, mas não sei exatamente em que ponto ocorre este problema (se é no seu site ou quando já está na página do pagseguro).

Para fazer o download da API para PHP acesse:

Dica: após o download acesse a pasta source/examples, tem todos exemplos necessários para integração via PHP, poderá ser útil

Correct answer by Guilherme Nascimento on January 26, 2021

Sobre o primeiro problema, encontrei uma solução no google.

Na sua pergunta você citou:

Isso deve ocorrer porquê meu site é https, mas não acredito ser o problema..

Nesse link você pode ver a conversa original.

Segue a resposta dada:

Fico feliz a sua utilidade para você ! Conteúdo misto normalmente significa que seus arquivos estáticos estão sendo servidos a partir de HTTP e HTTPS, se isso é verdade , você vai precisar para assegurar que todos os arquivos ( e API) está usando HTTPS

Tente isso.

A propósito, já tentou entrar no forum deles neste link ?

Answered by Raul3k on January 26, 2021

Seguem os passos para lidar com a questão:

  1. Acesse o painel de controle do PagSeguro.

  2. No menu a esquerda, opção Integrações, Página de Redirecionamento, A. Página fixa de redirecionamento.

  3. Insira a URL no campo "Definir página de redirecionamento:" e clique em "Ativar".

  4. No menu a esquerda, opção Integrações, Notificação de Transações, insira a URL no campo "Definir URL para receber as notificações:" e clique em "Ativar".

  5. No menu a esquerda, opção Integrações,Retorno Automático de Dados,insira a URL no campo "Definir URL para receber as notificações:" e clique em "Ativar".

Está usando a API nova?

Answered by Aline on January 26, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP