artistas / laravel-pagseguro Goto Github PK
View Code? Open in Web Editor NEWCheckout Transparente e Pagamentos Recorrentes (Assinaturas)
License: MIT License
Checkout Transparente e Pagamentos Recorrentes (Assinaturas)
License: MIT License
Implementar métodos para facilitar o recebimento das notificações do PagSeguro.
Assim que instalei o pacote, deu esse erro.
Estou usando o Laravel 5.4.
Alguma ideia de como consertar isso?
Is this package still being maintained so it worth the time to create a PR.
Quando tento fazer a chamada do método de assinatura de plano, conforme a documentação wiki ("PagSeguroRecorrente::setPlan()" ), me é retornado esse erro:
Non-static method Artistas\PagSeguro\PagSeguroRecorrente::setPlan() should not be called statically
De fato o método não é estático, mas alguém poderia me dar uma dica de como contornar esse erro?
Sempre que tento aderir ao pagamento recorrente, ele me retorna o seguinte erro:
PagSeguroException in PagSeguroClient.php line 173:
Method of payment currently unavailable.
Poderia implantar a função de pagamento recorrente no projeto ... ta ficando bom isso aqui ...
Ola boa tarde!
Como consigo resolver esse problema, pois já fiz todo o procedimento da documentação e mesmo assim não consigo fazer a ligação para o método setReference().
Apos atualizar para a versão 1.6.0 toda rota do pacote retorna que o controller não foi encontrado.
Tentei criar uma instalação do zero do laravel apenas para testar e retorna o mesmo erro. "PagseguroController not found"
composer require artistas/laravel-pagseguro
Retorno:
Obs: incompatibilidade com o novo "illuminate/support" v5.5
Diminuir a complexidade dos métodos setCreditCardHolder() e setBillingAddress()
, e verificar outras possíveis refatorações.
Ao gerar o boleto o endereço que vem no mesmo é diferente do que é lançado no setShippingAddress para aquele pagador. Alguém saberia informa se tem algum default ou algo do tipo?
Segue o endereço que é passado em todos os boletos, independente do pagador.
Av. Brigadeiro Faria Lima, 1.384 - CEP 01452002
São Paulo.
Atualmente estou tendo esse erro na hora de enviar os dados paga pagseguro!
The no interest installment quantity must be an integer.
Provavelmente é esperado dados em integer e por isso causa o erro, acontece que já alterei para integer e o erro persiste!
Log abaixo:
at PagSeguro->validate(array('paymentMethod' => 'creditCard', 'bankName' => null, 'creditCardToken' => 'Vem do Javascript', 'installmentQuantity' => '2', 'installmentValue' => '50.20', 'noInterestInstallmentQuantity' => null), array('paymentMethod' => 'required', 'bankName' => 'required_if:paymentMethod,eft', 'creditCardToken' => 'required_if:paymentMethod,creditCard', 'installmentQuantity' => 'required_if:paymentMethod,creditCard|integer|between:1,18', 'installmentValue' => 'required_if:paymentMethod,creditCard|numeric|between:0.00,9999999.00', 'noInterestInstallmentQuantity' => 'integer|between:1,18')) in PagSeguro.php line 436
Olá,
gostaria de saber se é possível utilizar no Lumen.
Abs.,
Sugiro adicionar a seguinte informação na wiki do projeto (tópico 1.1):
Atenção: Este método possui algumas dependências e, por isso, recomendamos que o getSenderHash não seja executado no onLoad da página. Você pode executa-lo, por exemplo quando o cliente clicar no botão de conclusão de pagamento.
Motivo: Durante testes realizados, o valor do senderHash era undefined se não seguisse o que a documentação informa.
Qual seria a dificuldade para fazer todas as chamadas via XML ao invés de JSON!? Estava conversando com um pessoal e lendo coisas a respeito do pagsgeuro, parece que a taxa de incidência de problemas com chamadas via JSON é bem mais alta do que via XML.
Estou obtendo esse erro ao envivar o pedido para um pagamento recorrente.
Eis o log da transação:
HTTP/1.1 POST
/pre-approvals?email=[email protected]&token=BD87C05155854599A18019952E563F78
host: ws.sandbox.pagseguro.uol.com.br
accept: application/vnd.pagseguro.com.br.v3+json;charset=ISO-8859-1
content-type: application/json; charset=UTF-8
connection: Keep-Alive
{"reference":"ID do pedido","plan":"0DFB3756BFBF81E114E7BF9B14A84AA3","sender":{"name":"Nome Completo","email":"[email protected]","ip":"123.123.123.123","hash":"36cb99ebc5a34567a89cb3651de29b65","phone":{"areaCode":"32","number":"988448523"},"documents":[{"type":"CPF","value":"06003738600"}],"address":{"street":"Rua/Avenida","number":"N\u00famero","complement":"Complemento","district":"Bairro","postalCode":"12345678","city":"Cidade","state":"RS","country":"BRA"}},"paymentMethod":{"type":"CREDITCARD","creditCard":{"token":"36cb99ebc5a34567a89cb3651de29b65","holder":{"name":"Nome Completo","birthDate":"10/02/1940","phone":{"areaCode":"32","number":"988448523"},"documents":[{"type":"CPF","value":"22233344455"}],"billingAddress":{"street":"Rua/Avenida","number":"N\u00famero","complement":"Complemento","district":"Bairro","postalCode":"12345678","city":"Cidade","state":"RS","country":"BRA"}}}}}
400
Content-Type: application/vnd.pagseguro.com.br.v3+json;charset=ISO-8859-1
{"error":true,"errors":{"10009":"Method of payment currently unavailable."}}
Adicionando a seguinte configuração como parâmetro 'shippingAddressRequired' => 'false'
faz com que não seja necessário enviar dados de entrega (shippingInfo
e shippingAddress
) para casos em que não há produtos a serem enviados.
Foco: O básico para habilitar o pagamento recorrente.
Foco: Terminar a implementação do Pagamento Recorrente.
Foco: Criar métodos pra consultar transações, necessário caso seja desenvolvido um painel que liste um histórico de pagamentos, por exemplo...
Ao tentar processar a transação recebo o seguinte error. Como resolver posso resolver?
simplexml_load_string(): Entity: line 1: parser error : Start tag expected, '<' not found {"userId":1,"email":"[email protected]","exception":"[object] (ErrorException(code: 0): simplexml_load_string(): Entity: line 1: parser error : Start tag expected, '<' not found at /application/vendor/artistas/laravel-pagseguro/src/Artistas/PagSeguroClient.php:155) [stacktrace] #0 [internal function]: Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError(2, 'simplexml_load_...', '/application/ve...', 155, Array) #1 /application/vendor/artistas/laravel-pagseguro/src/Artistas/PagSeguroClient.php(155): simplexml_load_string('Internal Server...') #2 /application/vendor/artistas/laravel-pagseguro/src/Artistas/PagSeguroClient.php(43): Artistas\\PagSeguro\\PagSeguroClient->formatResult('Internal Server...') #3 /application/vendor/artistas/laravel-pagseguro/src/Artistas/PagSeguro.php(423): Artistas\\PagSeguro\\PagSeguroClient->sendTransaction('email=thiago_an...') #4 /application/app/Http/Controllers/PagSeguro/PagSeguroController.php(28): Artistas\\PagSeguro\\PagSeguro->send(Array) #5 [internal function]: App\\Http\\Controllers\\PagSeguro\\PagSeguroController->boleto(Object(Illuminate\\Http\\Request), Object(App\\Models\\PagSeguro)) #6 /application/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): call_user_func_array(Array, Array) #7 /application/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\\Routing\\Controller->callAction('boleto', Array) #8 /application/vendor/laravel/framework/src/Illuminate/Routing/Route.php(212): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(App\\Http\\Controllers\\PagSeguro\\PagSeguroController), 'boleto') #9 /application/vendor/laravel/framework/src/Illuminate/Routing/Route.php(169): Illuminate\\Routing\\Route->runController() #10 /application/vendor/laravel/framework/src/Illuminate/Routing/Router.php(658): Illuminate\\Routing\\Route->run() #11 /application/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request)) #12 /application/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(41): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request)) #13 /application/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle(Object(Illuminate\\Http\\Request), Object(Closure)) #14 /application/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request)) #15 /application/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(68): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request)) #16 /application/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken->handle(Object(Illuminate\\Http\\Request), Object(Closure)) #17 /application/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request)) #18 /application/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request)) #19 /application/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle(Object(Illuminate\\Http\\Request), Object(Closure)) #20 /application/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request)) #21 /application/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(63): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request)) #22 /application/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\\Session\\Middleware\\StartSession->handle(Object(Illuminate\\Http\\Request), Object(Closure)) #23 /application/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request)) #24 /application/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request)) #25 /application/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle(Object(Illuminate\\Http\\Request), Object(Closure)) #26 /application/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request)) #27 /application/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(66): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request)) #28 /application/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\\Cookie\\Middleware\\EncryptCookies->handle(Object(Illuminate\\Http\\Request), Object(Closure)) #29 /application/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request)) #30 /application/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request)) #31 /application/vendor/laravel/framework/src/Illuminate/Routing/Router.php(660): Illuminate\\Pipeline\\Pipeline->then(Object(Closure)) #32 /application/vendor/laravel/framework/src/Illuminate/Routing/Router.php(635): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request)) #33 /application/vendor/laravel/framework/src/Illuminate/Routing/Router.php(601): Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route)) #34 /application/vendor/laravel/framework/src/Illuminate/Routing/Router.php(590): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request)) #35 /application/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(176): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request)) #36 /application/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request)) #37 /application/vendor/fideloper/proxy/src/TrustProxies.php(56): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request)) #38 /application/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Fideloper\\Proxy\\TrustProxies->handle(Object(Illuminate\\Http\\Request), Object(Closure)) #39 /application/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request)) #40 /application/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(30): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request)) #41 /application/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure)) #42 /application/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request)) #43 /application/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(30): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request)) #44 /application/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure)) #45 /application/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request)) #46 /application/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request)) #47 /application/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request), Object(Closure)) #48 /application/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request)) #49 /application/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(46): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request)) #50 /application/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode->handle(Object(Illuminate\\Http\\Request), Object(Closure)) #51 /application/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request)) #52 /application/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request)) #53 /application/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(151): Illuminate\\Pipeline\\Pipeline->then(Object(Closure)) #54 /application/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(116): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request)) #55 /application/public/index.php(55): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request)) #56 {main} "}
Estou tentando encontrar na documentação os nome dos bancos aceitos para o Débito Online.
No exemplo da sua biblioteca tem itau
como exemplo.
Como são chamados os outros ?
Obrigado!
Realizando o pagamento transparente, com o cartão de crédito sempre recebo o erro:
code: 1003,
message: "Campo obrigatório.".
Procurei na API mas não encontrei um método de adicionar desconto no próximo pagamento recorrente.
Se eu fizer esse método, posso fazer um pull request para implementar na API?
Segue documentação do pagseguro: https://dev.pagseguro.uol.com.br/referencia-da-api/api-de-pagamentos-pagseguro#!/ws_pagseguro_uol_com_br/pre_approvals_discount_xml
Ao tentar gerar um boleto utilizando a facade PagSeguroBoleto, tenho o retorno NULL e não é gerado o boleto.
Olá, tudo bem?
Estou com um problema após o método send, recebo o erro abaixo:
`
$pagseguro = PagSeguro::setReference($pedido->id)
->setSenderInfo([
'senderName' => $input['nome'], //Deve conter nome e sobrenome
'senderPhone' => $input['telefone'], //Código de área enviado junto com o telefone
'senderEmail' => $cadastro->email,
'senderHash' => $input['hash_pagseguro'],
'senderCPF' => $input['cpf'] //Ou CNPJ se for Pessoa Júridica
])
->setShippingAddress([ // OPCIONAL
'shippingAddressStreet' => $input['rua'],
'shippingAddressNumber' => $input['numero'],
'shippingAddressDistrict' => $input['bairro'],
'shippingAddressPostalCode' => $input['cep'],
'shippingAddressCity' => $input['cidade'],
'shippingAddressState' => $input['estado']
])->setItems($carrinho);
if($input['metodo'] == 2){
// Boleto
$pagseguro->send([
'paymentMethod' => 'boleto'
]);
$pedido->boleto = $pagseguro->paymentLink;
$pedido->save();
}
`
Alguém pode me ajudar?
Estou tentando implementar o pacote em meu formulário próprio.
Contudo, estou recebendo a mensagem "Serialization of 'SimpleXMLElement' is not allowed".
Dando uma rápida olhada, percebi algo que possivelmente estava gerando o meu problema:
Artistas/PagSeguroClient.php na linha 75:
$this->session->put('pagseguro.session', $result->id);
Contudo, o $result->id não é uma string. O retorno dela é:
SimpleXMLElement {#362 ▼
+0: "id-retornado"
}
Isso gera a mensagem "Serialization of 'SimpleXMLElement' is not allowed" ao tentar armazenar esse valor na Sessão. Se eu forçar o retorno da string da seguinte maneira, o retorno seria uma string que possibilitaria a serialização:
$this->session->put('pagseguro.session', (string) $result->id);
O retorno:
"id-retornado"
Estou correto, ou eu que estou implementando isso erroneamente?
Agradeço desde já. Abraço.
Quando eu envio o pagamento por boleto bancário, o pagseguro retorna um xml com o link para imprimir o boleto. Tem alguma função pronta para receber este retorno? Não encontrei na Wiki...
Obrigada!
Boa noite,
Não encontrei nenhum padrão para abertura de issues ou pull request. Então colocarei aqui o que fiz pra poder usar o campo reference, disponivel na API do Pagseguro Recorrente.
no arquivo: ./vendor/artistas/laravel-pagseguro/src/Artistas/PagSeguroRecorrente.php
na linha 70, temo o metodo sendPreApprovalRequest com a seguinte implementacao:
/**
* Define os dados do plano.
*
* @param array $preApprovalRequest
*
* @return \SimpleXMLElement
*/
public function sendPreApprovalRequest(array $preApprovalRequest)
{
$preApprovalRequest = [
'email' => $this->email,
'token' => $this->token,
'preApprovalName' => $this->sanitize($preApprovalRequest, 'preApprovalName'),
'preApprovalCharge' => $this->sanitize($preApprovalRequest, 'preApprovalCharge'),
'preApprovalPeriod' => $this->sanitize($preApprovalRequest, 'preApprovalPeriod'),
'preApprovalCancelUrl' => $this->sanitize($preApprovalRequest, 'preApprovalCancelUrl'),
'preApprovalAmountPerPayment' => $this->sanitizeMoney($preApprovalRequest, 'preApprovalAmountPerPayment'),
'preApprovalMembershipFee' => $this->sanitizeMoney($preApprovalRequest, 'preApprovalMembershipFee'),
'preApprovalTrialPeriodDuration' => $this->sanitizeNumber($preApprovalRequest, 'preApprovalTrialPeriodDuration'),
'preApprovalExpirationValue' => $this->sanitizeNumber($preApprovalRequest, 'preApprovalExpirationValue'),
'preApprovalExpirationUnit' => $this->sanitize($preApprovalRequest, 'preApprovalExpirationUnit'),
'maxUses' => $this->sanitizeNumber($preApprovalRequest, 'maxUses'),
];
$this->validatePreApprovalRequest($preApprovalRequest);
return (string) $this->sendTransaction($preApprovalRequest, $this->url['preApprovalRequest'])->code;
}
Porem não é possível utilizar o campo reference. Eu modifiquei o metodo e ficou assim:
/**
* Define os dados do plano.
*
* @param array $preApprovalRequest
*
* @return \SimpleXMLElement
*/
public function sendPreApprovalRequest(array $preApprovalRequest)
{
$preApprovalRequest = [
'email' => $this->email,
'token' => $this->token,
'preApprovalName' => $this->sanitize($preApprovalRequest, 'preApprovalName'),
'preApprovalCharge' => $this->sanitize($preApprovalRequest, 'preApprovalCharge'),
'preApprovalPeriod' => $this->sanitize($preApprovalRequest, 'preApprovalPeriod'),
'preApprovalCancelUrl' => $this->sanitize($preApprovalRequest, 'preApprovalCancelUrl'),
'preApprovalAmountPerPayment' => $this->sanitizeMoney($preApprovalRequest, 'preApprovalAmountPerPayment'),
'preApprovalMembershipFee' => $this->sanitizeMoney($preApprovalRequest, 'preApprovalMembershipFee'),
'preApprovalTrialPeriodDuration' => $this->sanitizeNumber($preApprovalRequest, 'preApprovalTrialPeriodDuration'),
'preApprovalExpirationValue' => $this->sanitizeNumber($preApprovalRequest, 'preApprovalExpirationValue'),
'preApprovalExpirationUnit' => $this->sanitize($preApprovalRequest, 'preApprovalExpirationUnit'),
'maxUses' => $this->sanitizeNumber($preApprovalRequest, 'maxUses'),
'reference' => $this->sanitize($preApprovalRequest, 'preApprovalReference')
];
$this->validatePreApprovalRequest($preApprovalRequest);
return (string) $this->sendTransaction($preApprovalRequest, $this->url['preApprovalRequest'])->code;
}
Possibilitando utilizar o pacote para criar plano assim:
/**
* Display a listing of the resource.
* @return Response
*/
public function pagseguro()
{
$reference = uniqid();
$response = \Artistas\PagSeguro\PagSeguroRecorrenteFacade::sendPreApprovalRequest([
'preApprovalReference' => $reference,
'preApprovalName' => 'Plano ' . $reference, //Nome do plano
'preApprovalCharge' => 'AUTO', //Tipo de Cobrança
'preApprovalPeriod' => 'MONTHLY', //Periodicidade do plano
//'preApprovalCancelURL' => 'https://sistema.spicolibri.com.br', //URL de cancelamento OPCIONAL
'preApprovalAmountPerPayment' => '1.00', //Valor exato da cobrança
'preApprovalTrialPeriodDuration' => '28', //Tempo de teste OPCIONAL
'preApprovalExpirationUnit' => 'MONTHS', //Período em que as cobranças serão realizadas OPCIONAL
]);
dump($response);
exit;
return view('recurringsignature::index');
}
É possível incluir isso ?
Obrigado.
Boa noite pessoal,
Primeiro lugar, parabéns pela iniciativa, esta me ajudando muito.
Mas estou com o seguinte problema ao iniciar a sessão via sandbox:
{{ PagSeguro::startSession() }}
simplexml_load_string(): Entity: line 14: parser error : Input is not proper UTF-8, indicate encoding !
Bytes: 0xE3 0x6F 0x20 0x66 (View: /home/vagrant/Code/Anun/resources/views/payment/showForm.blade.php)
No final de semana não estava dando este erro. Será que é problema da pagseguro?
Recentemente o pagseguro atualizou para TLS 1.2. Existe alguma previsão para implementar essa modificação?
Quais seriam as alterações necessárias para que cada vendedor (tendo sua própria conta no PagSeguro) autorizasse a aplicação (ou sugerisse cadastro, caso não houvesse) a se comunicar com a conta para vinculação do boleto do checkout transparente?
Quando eu recebo uma notificação do pagseguro, o PagSeguro::notification($request->notificationCode, $request->notificationType);
sempre retorna vazio. Entrei na função e fui dando uns Logs para entender e percebi que sempre que chega na chamada formatResult($result) que está em PagSeguroClient.php, é aonde fica nula a resposta.
O método $result = simplexml_load_string($result);
está fazendo algo de errado e deixando nula a resposta.
Como faz para corrigir isso?
Olá,
Estava utilizando normalmente o pagseguro, mas ontem ao dar um update no composer recebi uma atualização e desde então estou recebendo a seguinte mensagem "Unauthorized: Não foi possível estabelecer uma conexão com o PagSeguro." ...
Fiz outras modificações também e tenho tentado verificar o que aconteceu, já verifiquei o token e as configurações, mas até o momento sem sucesso ...
Eu não consegui fazer funcionar a consulta de notificações usando o codigo abaixo:
PagSeguro::notification($request->notificationCode, $request->notificationType);
Retorna erro dizendo que não é possível chamar este método de forma estática. De fato, eu vi no codigo que a função não está declarada com static. Isso pode ser devido a versão do PHP. Estou usando a seguinte versão:
PHP 7.1.9 (cli) (built: Sep 15 2017 00:15:33) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.1.9, Copyright (c) 1999-2017, by Zend Technologies
Consegui fazer funcionar usando o iOC do Laravel:
<?php
...
$notificationCode = $request->input('notificationCode');
$notificationType = $request->input('notificationType');
$p = app()->make(PagSeguro::class);
$response = $p->notification($notificationCode, $notificationType);
dd($response);
Me retornando o seguinte:
SimpleXMLElement {#421
+"date": "2018-07-20T10:24:40.000-03:00"
+"code": "DC2527F9-XXX-XXXX-XXXX-7CF1DA73774D"
+"reference": " - 5b51e2981f3bf"
+"type": "1"
+"status": "1"
+"lastEventDate": "2018-07-20T10:24:41.000-03:00"
+"paymentMethod": SimpleXMLElement {#433
+"type": "2"
+"code": "202"
}
+"paymentLink": "https://sandbox.pagseguro.uol.com.br/checkout/payment/booklet/print.jhtml?c=fc333e3eff9c677c9ebcad1bc3148b91212b02bc082c11f79b1d2a98d1324fc468fb2d7e369fa0fa"
+"grossAmount": "1311.00"
+"discountAmount": "0.00"
+"creditorFees": SimpleXMLElement {#434
+"intermediationRateAmount": "0.40"
+"intermediationFeeAmount": "52.31"
}
+"netAmount": "1258.29"
+"extraAmount": "0.00"
+"installmentCount": "1"
+"itemCount": "1"
+"items": SimpleXMLElement {#435
+"item": SimpleXMLElement {#441
+"id": "01"
+"description": "Teste de compra"
+"quantity": "1"
+"amount": "1311.00"
}
}
+"sender": SimpleXMLElement {#436
+"name": "Joselito da Silva"
+"email": "[email protected]"
+"phone": SimpleXMLElement {#443
+"areaCode": "41"
+"number": "99999999"
}
+"documents": SimpleXMLElement {#444
+"document": SimpleXMLElement {#449
+"type": "CPF"
+"value": "00000000"
}
}
}
+"primaryReceiver": SimpleXMLElement {#437
+"publicKey": "PUBC4AF6294AE9A4EC6B576D75559EA9174"
}
}
Apesar de muitos erros de validação, comentei algumas linhas e os dados são enviados para o sandbox.
Entretanto, não retorna dados de resposta do sandbox.
Alguém sabe me dizer o que pode ser!??
Olá, talvez esse problema que estou enfrentando seja por causa de falta de conhecimento não neccessáriamente um bug no sistema de vcs, enfim segue a baixo o problema.
erro:
Unauthorized: Não foi possível estabelecer uma conexão com o PagSeguro.
--
in PagSeguroClient.php (line 139)
meu código:
......
......
.....
<script type="text/javascript" src="/pagseguro/javascript"></script>
<script>
PagSeguroDirectPayment.setSessionId('{{ PagSeguro::startSession() }}');
</script>
......
......
......
minha configuração .env (email e token ficticios porem acredito estar usando os dados corretos rsrs)
#pagseguro settings
PAGSEGURO_SANDBOX=true
[email protected]
PAGSEGURO_TOKEN=135772AD6B3C401ABC7EE285FC0G972A
PAGSEGURO_NOTIFICATION=/payment/notification
Basicamente o que fiz ate agora foi seguir os passos 1 e 1.1 da wiki. espero que alguem consiga me ajudar ou caso seja algum problema no sistema eu consiga ser util para ajudar a soluciona-lo.
informações de ambiente utilizado:
php: 7.1.7
laravel: 5.4
Dês de já agradeço pela atenção.
Pessoal, vejam o método abaixo. Onde tem $this->plan, não deveria ser o código do preApproval?
laravel-pagseguro/src/Artistas/PagSeguroRecorrente.php
Lines 361 to 371 in 5293649
Na documentação dá a entender isto, mas como estou fazendo esse tipo de integração pela primeira vez, posso não estar enxergando alguma coisa. https://dev.pagseguro.uol.com.br/documentacao/pagamento-online/pagamentos/pagamento-recorrente-transparente
Quando tento executar este método ele me retorna:
{
"code": 17008,
"message": "pre-approval not found."
}
Mais um indício de que o valor que realmente vai no request é o código do plano e não o do preApproval.
Atualmente quando é feito o envio da requisição com caracteres acentuados no nome por exemplo, os mesmos perdem a codificação no pagseguro. Verificar o que pode ser feito para evitar que isto aconteça, caso não tenha o que fazer trocar os acentos por caracteres normais ao enviar.
Percebi que vocês possuem possibilidade de pagamento recorrente e assinar um plano manual.
Mas percebi que não tem método implementado para fazer a cobrança manual
https://dev.pagseguro.uol.com.br/v1/reference#api-pagamento-recorrente-cobranca-de-plano
O que adianta fazer adesão de um plano e configurar ele como manual se não tem como fazer um acionamento de cobrança?
Acredito que deveríamos implementar algo desse tipo:
public function sendPayment(string $preApprovalCode)
{
$data = [
'preApprovalCode' => $preApprovalCode
];
return $this->sendJsonTransaction($data, $this->url['preApproval'] . '/payment');
}
Existe alguma função para atualizar os valores de um plano já criado?
Existiria algum comando para gerar o checkout?
$pagseguro = PagSeguro::setReference('id')...
Error:
Non-static method Artistas\PagSeguro\PagSeguro::setReference() should not be called statically
Deparei-me com esta tela de manutenção do Pagseguro Sandbox http://prntscr.com/cw8sta
Sendo assim, eu não consigo realizar transações na minha implementação, rebendo o erro:
ErrorException in PagSeguroClient.php line 66:
simplexml_load_string(): Entity: line 1: parser error : Space required after the Public Identifier
Identifiquei o seguinte. Na classe PagSeguroClient.php, método sendTransaction() na linha que é executado o CURL:
$result = curl_exec($ch);
Se eu utilizar um echo $result me retorna o seguinte: http://prntscr.com/cw8uqf
Ou seja, ocasiona um erro 503 do servidor. O que não entra em nenhuma condição de tratamento que vem logo abaixo desse trecho do código.
Como sugestão, poderia ser utilizado após o curl_exec o seguinte:
$getInfo = curl_getinfo($ch);
Esse cara retornaria o seguinte: http://prntscr.com/cw8vxy
Com esse array, poderia ser tratado chamando o índice 'http_code' e verificando se o mesmo retorno uma resposta válida do servidor.
Dessa forma, seria melhor para eu tratar o sistema de pagamento informando ao usuário que o serviço está temporariamente indisponível.
Espero que eu tenha sido claro na minha explicação.
Se eu estiver realizando alguma coisa errada, por favor me informe.
Fico no aguardo. Abraço.
Opa, tudo bom?
Tem algum meio de editar os planos?
O Pagseguro, permite fazer um checkout de serviço: https://dev.pagseguro.uol.com.br/documentacao/pagamento-online/pagamentos/checkout-de-servico
Indicando o ShippingAddressRequired como false como parametro.
Analisar se o formulário está sendo utilizado, desta forma refatorar o mesmo ou tirá-lo da lib (nesse caso melhorar a documentação).
Em sandbox o pagamento e realizado perfeitamente.
Em produção ele não é realizado e não retorna nenhuma mensagem de erro.
Somente o status 301.
Esse erro ocorre somente para checkout transparente.
Qual é o retorno do método send quando a forma de pagamento for cartão de crédito?
Estou estando e está vindo vazio.
Agora o PagSeguro tem outro modelo de notificação que tem como o parâmetro o notificationType => 'preApproval'
e essas notificações podem ser consultadas usando o link https://ws.pagseguro.uol.com.br/v2/pre-approvals/notifications/{notificationCode}
Ao usar o PagSeguroRecorrente::notification($notificationCode)
ele busca diretamente nas transações e não nas assinaturas, retornando assim como Not Found
Me parece que existe um erro de lógica na validação que acontece na linha 291 do arquivo PagSeguro.php.
A validação não acontece em todos os itens do pedido. Se tiver 3 itens por, exemplo, ele valida o primeiro e o segundo item e não valida o terceiro.
Isso acontece, pois a comparação na linha 305 do mesmo arquivo é:
for ($cont = 1; $cont < $this->itemsCount; $cont++) {
mas deveria ser
for ($cont = 1; $cont <= $this->itemsCount; $cont++) {
Eu usei a sua biblioteca como base para criar a minha própria, pois precisava usar o modelo de aplicação (que é quando o cliente me dá permissão para receber pagamento por ele). Essa forma de integração é melhor pois em um clique o usuário integra a conta dele com o meio de pagamento. Caso queira que eu desenvolva essa nova funcionalidade aqui neste library me diga como poderia contribuir com o projeto. grande abraço!
Estou tendo erro com a trait!
Fiz igual o modelo, usando a facade e deu esse erro
FatalErrorException in PagSeguroController.php line 11:
Trait 'Icom\Http\Controllers\PagSeguro' not found
fiz todo o passo a passo do Wiki....
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.