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:
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..
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
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.
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:
Acesse o painel de controle do PagSeguro.
No menu a esquerda, opção Integrações, Página de Redirecionamento, A. Página fixa de redirecionamento.
Insira a URL no campo "Definir página de redirecionamento:" e clique em "Ativar".
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".
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
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP