Closed victor-carv closed 5 years ago
@victor0402 eu tenho o mesmo problema, não sei porque ignoram os padrões de Exception... Não vem nada com getCode, getMessage, getNada. Resolveram apenas printar erro com .__toString() Tratar exceptions com essa SDK é algo dificílimo
https://github.com/moip/moip-sdk-php#tratamento-de-exce%C3%A7%C3%B5es
Veja que bizarro o que resolveram fazer com a ValidationException
Depois de muitos testes no escuro, descobri que o problema era algum valor que era passado no:
->setShippingAmount($pedido->frete)
//ou
->setDiscount($pedido->desconto)
Quando passava um valor como por exemplo 16.9
, um float, a API do moip me retornava erro 400, sem nenhuma informação. Fazendo o parse para int, transformando em 1690
, assim como eu faço para os valores de produtos, nas chamadas ao addItem
, passou a funcionar.
O que não entendi é que essas funções fazem um parse para float, e o input 16.9
é válido:
public function setDiscount($value)
{
$this->data->amount->subtotals->discount = (float) $value;
...
Se você tentar um
try {
$order = $order
->setShippingAmount($pedido->frete)
->setCustomer($customer)
->create();
} catch (\Exception $e) {
print_r($e->getErrors());
}
ele não devolve os erros de validação corretamente?
Estranho o erro do float mesmo, o único lugar que validam se int no Order é em preço e quantidade de item (https://github.com/moip/moip-sdk-php/blob/master/src/Resource/Orders.php#L59) que eu tenha visto.
@Pedr0Rocha ao executar o create()
o moip executa a requisição e cai nesse catch:
https://github.com/moip/moip-sdk-php/blob/master/src/Resource/MoipResource.php#L257
O problema é que o $response_body
vem vazio, dessa forma não tem como saber o que causou o erro.
Olá, de uns dias pra cá um site em que fiz a integração com o moip parou de funcionar. Nele estou utilizando a versao:
"moip/moip-sdk-php": "^2.2"
Tanto em produção quanto em ambiente sandbox, estou recebendo uma response vazia ao tentar criar o objeto Order. Segue meu código:
O erro que estou recebendo é justamente na chamada do
create()
, que dispara um\Moip\Exceptions\ValidationException
que foi disparado pelo seguinte código da classeMoip\Resource\MoipResource
:O erro vem vazio, sem nenhum item no
$errors
e nada no$message
. O valor do$code
é 400.Estava funcionando a pouco tempo, não houve nenhuma atualização no meu código. Teve alguma mudança na API? vi que agora tem a versão 3, preciso atualizar pra ela?