discovery-tecnologia / dsc-mercado-livre

Biblioteca de integração com o Mercado Livre
Apache License 2.0
72 stars 29 forks source link

Erro ao obter informação de um pagamento como vendedor #45

Closed ombrodrigo closed 4 years ago

ombrodrigo commented 4 years ago

Bom dia. Não estou certo se o que está ocorrendo é um erro realmente ou um mal-entendido da minha parte em relação aos pagamentos, mais vamos lá.

Ao realizar a busa de um pagamento utilizando a classe Dsc\MercadoLivre\Resources\Payment\PaymentService método findPayment($code), está ocorrendo o seguinte erro:

{
    "message": "Payment not found",
    "error": "not_found",
    "status": 404,
    "cause": {
        "code": 2000,
        "description": "Payment not found",
        "data": null
    }
}

Analisando a execução do método findPayment($code), percebi que o erro ocorre devido a URL utilizada para busca api.mercadolibre.com/payments

GuzzleHttp\Psr7\Uri Object
(
    [scheme:GuzzleHttp\Psr7\Uri:private] => https
    [userInfo:GuzzleHttp\Psr7\Uri:private] => 
    [host:GuzzleHttp\Psr7\Uri:private] => api.mercadolibre.com
    [port:GuzzleHttp\Psr7\Uri:private] => 
    [path:GuzzleHttp\Psr7\Uri:private] => /payments/*********
    [query:GuzzleHttp\Psr7\Uri:private] => 
    [fragment:GuzzleHttp\Psr7\Uri:private] => 
)

Segundo a documentação (Link documentação), a URL para obter as informações de pagamento é a seguinte:

 https://api.mercadopago.com/v1/payments/$PAYMENT_ID?access_token=$ACCESS_TOKEN

Comparando as duas, é fácil notar a diferença: URL documentação: api.mercadopago.com/v1/payments URL utilizada no código: api.mercadolibre.com/payments

A questão é: Será que no momento da busca do pagamentos não teriamos que utilizar outra URL? Ou será que é um erro da minha parte?

Observação: no meu cenário, estou realizando a busca do pagamento a partir do backend, com uma conta de vendedor. Gerando o access_token a partir de um refresh_token.

Desde já, obrigado pela lib :+1: :clap:

ombrodrigo commented 4 years ago

Realizei um outro teste substituindo o recurso /payments para /collections conforme esse link da documentação (Link documentação), e funcionou a busca das informações do pagamento.

Outro ponto, o recurso /collections, funciona com a URL api.mercadolibre.com, que é a padrão na requests Production::WS_HOST.

Trecho do link do mercado livre

Como obter informação do pagamento como vendedor? Para obter informação do pagamento desde o rol vendedor, o recurso que deverá utilizar com o payment_id é “collections”. Chamada: curl -X GET https://api.mercadopago.com/v1/payments/$PAYMENT_ID?access_token=$ACCESS_TOKEN

Vou procurar mais informações sobre o recurso /collections antes de abrir um pull request.

dilowagner commented 4 years ago

Hum, interessante... pelo que parece essa URL de /payments deve ter mudado para o Mercado Pago. Mais uma vez obrigado pela ajuda @ombrodrigo

ombrodrigo commented 4 years ago

Hum, interessante... pelo que parece essa URL de /payments deve ter mudado para o Mercado Pago. Mais uma vez obrigado pela ajuda @ombrodrigo

Estou desenvolvendo a alteração. Logo vou abrir o PR.