Closed menezes- closed 6 years ago
Outra coisa: a interface de endereço é inconsistente.
Eu tenho a função addAddress
que recebe uma const que indica se é do tipo billing
ou shiping
porém eu tenho duas funções getBillingAddress
e getShippingAddress
.
Acho que ou a gente fica nos getters e setters (setBillingAddress
e setShippingAddress
) ou faz uma função do tipo getAddress($tipo)
que recebe o mesmo const indicando qual endereço o programador quer.
Se não for ser adicionado mais nenhum tipo de endereço eu acredito que getters e setters seriam mais apropriados. Se, no futuro, outros tipos de endereço forem ser adicionados então uma interface addAddress
e getAddress
é mais apropriada.
Alguém que trabalha diretamente com a API poderia dar uma iluminada nessa questão? ( @vagnerfiuza ??)
@menezes- show de bola esse issue. Vou ver se consigo conversar com o @vagnerfiuza e com o @elisei em relação a isso para acertarmos o desenvolvimento.
Alguma novidade relacionada a esse issue ?
@menezes- Olá! Tudo bem?
Sobre o primeiro comentário: Realmente ficaria bem legal do jeito que você disse... Se ainda tiver disponibilidade para contribuir com essas mudanças, seria de grande ajuda para nós 😃
Sobre o segundo: Não pretendemos adicionar mais endereços, então realmente os getters e setters dos endereços fariam bastante sentido.
Mil desculpas pela demora na resposta dessa issue... Estaremos acompanhando as issues com frequência. 😄
Abraços!
@bressani
Cara, na época eu estava fazendo uma integração da API em um site e era meio "time sensitive" no fim eu acabei fazendo um fork, algumas correções (que, se não me engano, a maioria foi merged aqui no repositório oficial) e esse fork está sendo utilizado até hoje (inclusive nunca mais atualizei a biblioteca 😛). Enfim isso foi a bastante tempo atrás e hoje estou trabalhando em algo completamente diferente, estou meio sem tempo pra voltar a trabalhar nisso.
Agora se vocês estão pensando refatorar a API, eu recomendo muito darem uma olhada em como a API do PayPal funciona: https://github.com/paypal/PayPal-PHP-SDK (inclusive na época eu tinha planos de refazer a API do Moip usando o mesmo design, mas por questões de tempo eu mal comecei o projeto). Basicamente eles separam todos as partes em diferentes objetos com setters e getters apropriados, conversão pra JSON de cada um, etc. No fim acaba tornando a experiência muito prazerosa. Acredito que a API do Moip se beneficiaria bastante de um design assim, mesmo porquê a propria documentação da API defini uma série de objetos (por exemplo Endereco).
Abraços!
Atualmente se eu quero adicionar um endereço a um cliente eu preciso chamara função
addAddress
que recebe 7 parâmetros obrigatórios e 9 opcionais. Se eu quero utilizar um endereço setado no cliente eu tenho as opçõesgetShippingAddress
egetBillingAddress
ambas retornam umstdClass
(existe um bug no php doc da funçãogetBillingAddress
que indica que a função retorna uma string), ou seja, eu perco todas as facilidades de code completion da IDE e sou obrigado a lembrar o nome dos 9 campos que constituem um endereço. Acredito que seria muito mais fácil ter um objeto endereço (que existe na documentação oficial: http://dev.moip.com.br/referencia-api/?json#endereo) e mudar as interfaces para utilizar esse objeto. Outra grande vantagem é que isso dissociaria o endereço do cliente (o objeto de endereço pode vir a ser usado em outras circunstancias que não requerem um cliente).Eu acho que seria interessante discutir fazer essa mudança para outros objetos, por exemplo: meios de pagamento1, lançamentos2 e etc.
Se houver interesse eu estou disposto a abrir uma pull request com as mudanças discutidas