Closed gcjbr closed 6 years ago
Estou tendo o mesmo problema. Não consigo achar o erro. Eu vi que já tivemos essa dúvida antes #48 , mas o problema foi solucionado misteriosamente.
Pelo que eu me lembro em algumas situações o PagSeguro não tem uma mensagem de erro, então ele retorna este erro genérico Method of payment currently unavailable
. Tenta se certificar que as credenciais estão corretas (email e token) e se estiverem tenta colocar um cpf válido também na hora de mandar a requisição...
Eu vi que na função "setSenderInfo" ele coloca o e-mail default 'teste@sandbox.pagseguro.com.br' caso esteja em sandbox. Pode ser esse o problema? Ele não reconhece esse e-mail?
public function setSenderInfo(array $senderInfo) { $senderEmail = $this->sandbox ? 'teste@sandbox.pagseguro.com.br' : $this->sanitize($senderInfo, 'senderEmail'); $senderPhone = $this->sanitizeNumber($senderInfo, 'senderPhone');
Não, no sandbox só é aceito esse email, se tu colocar outro ele manda um erro de volta recusando o email por estar no sandbox.
Estou criando um hash para criar o plano, gero um id de sessão e depois tendo fazer a adesão. Eu confirmei todos os códigos, tokens e e-mail do pagseguro (sandbox) e estão corretos. Por acaso estou criando o código da sessão de forma errada? Isso tudo eu estou fazendo dentro de um Controller.
$hash = PagSeguroRecorrente::sendPreApprovalRequest([
'preApprovalName' => 'Plano de adesao teste',
'preApprovalCharge' => 'MANUAL',
'preApprovalPeriod' => 'MONTHLY',
'preApprovalAmountPerPayment' => '100.00',
]);
$sessao = PagSeguroRecorrente::startSession();
$adesao = PagSeguroRecorrente::setPlan($hash)
->setSenderInfo([
'senderName' => 'Gabriel Oliveira',
'senderPhone' => '19 987654321',
'senderEmail' => 'estou usando um email valido',
'senderHash' => $sessao,
'senderCPF' => 'estou usando um cpf valido'
])
->setCreditCardHolder([
'creditCardHolderBirthDate' => '10/02/1940',
])
->setSenderAddress([
'senderAddressStreet' => 'Rua Francisco Glicerio',
'senderAddressNumber' => '123',
'senderAddressDistrict' => 'Bairro',
'senderAddressPostalCode' => '13012-902',
'senderAddressCity' => 'Campinas',
'senderAddressState' => 'SP'
])
->sendPreApproval([
'creditCardToken' => $sessao
]);
Sim, o senderHash eh gerado pelo javascript e não pelo PHP, da uma olhada nessa linha:
Ele eh gerado usando a biblioteca js do javascript, da uma olhada nessa parte. Essa sessão gerada pelo PHP é usada apenas para iniciar uma instância da biblioteca javascript:
https://github.com/artistas/laravel-pagseguro/wiki/1.1.-Implementação-Javascript
Eu finalmente consegui fazer o pagamento. Eu não tinha acesso a esses forms até você enviar esse link. Com ele, tudo foi mais fácil.
O problema era que eu não estava gerando o hash com o JS. Então eu adicionei os forms, e deu tudo certo.
Obrigado pela ajuda!
Ok, vou fechar e atualizar um pouco a wiki qualquer coisa reabro.
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=teste@gmail.com&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":"teste@sandbox.pagseguro.com.br","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."}}