API-3.0-PHP
API-3.0-PHP copied to clipboard
Excpetion do pagamento via boleto retornando objeto null
Integrei a API com as 3 opções de pagamento disponíveis. No ambiente sandbox, tudo funcionou perfeitamente. Já no ambiente de produção, os pagamentos via crédito e débito funcionaram ok, mas o pagamento via boleto retorna um erro 500, com a seguinte response:
Call to a member function getMessage() on null
Eis a configuração do pagamento (com os dados de teste para eliminar possíveis problemas de formatação dos dados):
$customer = $sale->customer('Fulano de Tal')
->setIdentity('00000000001')
->setIdentityType('CPF')
->address()->setZipCode('22750012')
->setCountry('BRA')
->setState('RJ')
->setCity('Rio de Janeiro')
->setDistrict('Centro')
->setStreet('Av Marechal Camara')
->setNumber('123');
$payment = $sale->payment(15700)
->setType(Payment::PAYMENTTYPE_BOLETO)
->setAddress('Rua de Teste')
->setBoletoNumber('1234')
->setAssignor('Empresa de Teste')
->setDemonstrative('Desmonstrative Teste')
->setExpirationDate(date('d/m/Y', strtotime('+1 month')))
->setIdentification('11884926754')
->setInstructions('Esse é um boleto de exemplo');
try {
$sale = (new CieloEcommerce($merchant, $environment))->createSale($sale);
$paymentId = $sale->getPayment()->getPaymentId();
$boletoURL = $sale->getPayment()->getUrl();
return strval(base64_encode($boletoURL));
} catch (CieloRequestException $e) {
$error = $e->getCieloError();
return $error->getMessage();
}
Retornando apenas o objeto $error, obviamente eu recebo null
. O que pode estar acontecendo?
Estou com o mesmo problema - exclusivamente no ambiente de produção.
No sandbox consigo gerar o boleto (e a captura do cc), mas no ambiente de produção o cieloError retorna null e o retorno é um erro 500 na tentativa por boleto:
Cielo\API30\Ecommerce\Request\CieloRequestException {#384 ▼ -cieloError: null #message: "Unknown status" #code: 500 #file: "/home/gserrano/work/www/pixadelica/chevra/site/vendor/developercielo/api-3.0-php/src/Cielo/API30/Ecommerce/Request/AbstractRequest.php" #line: 148
Conseguiu alguma solução @jf-carvalho?
Estou com o mesmo problema - exclusivamente no ambiente de produção.
No sandbox consigo gerar o boleto (e a captura do cc), mas no ambiente de produção o cieloError retorna null e o retorno é um erro 500 na tentativa por boleto:
Cielo\API30\Ecommerce\Request\CieloRequestException {#384 ▼ -cieloError: null #message: "Unknown status" #code: 500 #file: "/home/gserrano/work/www/pixadelica/chevra/site/vendor/developercielo/api-3.0-php/src/Cielo/API30/Ecommerce/Request/AbstractRequest.php" #line: 148
Conseguiu alguma solução @jf-carvalho?
Infelizmente, não encontrei nenhuma solução, @gserrano. Tive que suspender a opção de pagamento por boleto do projeto até conseguir entender.
Testei no postman deles e o retorno foi diferente - no meu caso consegui um retorno que o pagamento por este método não estava liberado para a conta.
Já chegou a verificar isso aí na conta com a Cielo? Como aqui não cuido nem tenho acesso a parte contratual, não consegui confirmar se é realmente isso, mas estão validando com a Cielo. Dá uma conferida, perdi algumas horas testando essa parte até tentar ir para o postman...
Também não tenho acesso a essa informação, mas vou buscar saber se essa é a origem do problema.
@jf-carvalho
Também não tenho acesso a essa informação, mas vou buscar saber se essa é a origem do problema.
``{
"MerchantOrderId":"3099",
"Customer":
{
"Name":"Teste Gama",
"Identity": "36913636016",
"Address":
{
"Street": "Avenida Marechal Câmara",
"Number": "160",
"Complement": "Sala 934",
"ZipCode" : "22750012",
"District": "Centro",
"City": "Rio de Janeiro",
"State" : "RJ",
"Country": "BRA"
}
},
"Payment":
{
"Type":"Boleto",
"Amount":100,
"Provider":"Bradesco2",
"Address": "Rua Teste",
"BoletoNumber": "123",
"Assignor": "Empresa Teste",
"Demonstrative": "Desmonstrative Teste",
"ExpirationDate": "26/11/2020",
"Identification": "11884926754",
"Instructions": "Aceitar somente até a data de vencimento, após essa data juros de 1% dia."
}
}``
Sim, a cielo precisa liberar o boleto, tem q ligar lá.
Pelo postman consegui entender o erro. No meu provider tá buscando a string 'bradesco'. Isso do código fornecido aqui.
->setProvider(Payment::PROVIDER_BRADESCO)
Mas ao usar a string Bradesco2
que vi em por aí, testei e a Cielo aceitou a requisição como válida e parou de cuspir tela em branco com erro 500.
Sim, isso em produção. Quem estiver com um problema assim. Tá aí como resolvi, essa é a requisição que deu certo comigo..