Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Charset não definido resulta no erro Unsupported Media Type #211

Open
enricodias opened this issue Sep 5, 2020 · 2 comments
Open

Charset não definido resulta no erro Unsupported Media Type #211

enricodias opened this issue Sep 5, 2020 · 2 comments

Comments

@enricodias
Copy link

Comportamento esperado

O charset padrão ISO-8859-1 deveria ser usado, definido no método post da classe PagSeguro\Resources\Http

Comportamento atual

Sem um charset definido, o request envia o charset vazio e resulta no erro Unsupported Media Type

{"timestamp":"2020-09-05T17:30:30.446+0000","status":415,"error":"Unsupported Media Type","message":"Invalid mime type \"application/x-www-form-urlencoded; charset=\": 'value' must not be empty","path":"/v2/checkout"}

Ambiente (produção, sandbox)

Sandbox

Passos para reproduzir o bug

  1. Instale a lib com o composer
  2. Use variáveis de ambiente para setar as credenciais, mas não sete a variável PAGSEGURO_CHARSET
  3. Tente criar um novo pagamento com quaisquer dados
@micaelomota
Copy link

Acho que este comportamento está correto pois o parametro CHARSET é obrigado. Basta você definir uma varíavel de ambiente PAGSEGURO_CHARSET: 'UTF-8' ou adicionar o parametro no arquivo de configuração.

@enricodias
Copy link
Author

@micaelomota pode ser obrigatório pela api, mas o cliente php nesse repositório deveria usar o padrão definido na classe PagSeguro\Resources\Http:

public function post($url, $data = null, $timeout = 20, $charset = 'ISO-8859-1')

O que acontece que é esse método é chamado com uma variável vazia no último parâmetro se o charset não tiver sido definido, ignorando o valor padrão definido no próprio método.

Como o charset vazio está resultando em um mime type quebrado, um envio de um post assim nem deveria ser permitido pela classe. A verificação desse tipo de problema é algo simples de implementar nos testes unitários, mas os testes unitários aqui só verificam a existência de atributos nas classes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants