-
Notifications
You must be signed in to change notification settings - Fork 0
Update #4
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
base: master
Are you sure you want to change the base?
Update #4
Conversation
* ♻️ Fix empty url serialize * ✅ Fix tests * 🙈 Adicionar env no gitignore * ✨ Adicionando metodo de pagamento PIX * ✨ Adicionar e popular `qrCode` na transação * ♻️ Refatorar estrutura dos testes * ✅ Adicionar timezone `America/Sao_Paulo` nos testes * ♻️ Fix case `threeDSecure` props * 📝 Update readme
refactor: Remover `monolog ` das dependências
…nCode release v1.0.1
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Summary of Changes
Hello @JonathanNitroEcom, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!
Este pull request foca na expansão das opções de pagamento ao adicionar o suporte a PIX, além de modernizar a base de código PHP para garantir compatibilidade com versões mais recentes da linguagem. Paralelamente, houve um investimento significativo na melhoria das ferramentas de desenvolvimento e na infraestrutura de testes, visando maior qualidade de código e uma experiência de desenvolvimento mais eficiente.
Highlights
- Suporte a PIX: Adição do PIX como um novo método de pagamento, incluindo a criação de QR Codes para transações.
- Modernização do Código PHP: Refatoração extensiva do código para aproveitar recursos modernos do PHP (versão 8.2+), como a remoção de docblocks redundantes e a simplificação de declarações de propriedades e métodos.
- Atualização da Infraestrutura de Desenvolvimento e Testes: Introdução de novas ferramentas e configurações para padronização de código (EditorConfig, PHP-CS-Fixer), automação de dependências (Dependabot) e um sistema de testes mais robusto (PHPUnit, PHPStan).
- Melhorias na Manipulação de Respostas da API: Implementação de um novo
ResponseTraite ajustes na desserialização de objetos para melhor encapsulamento e acesso aos dados brutos da resposta HTTP.
Using Gemini Code Assist
The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.
Invoking Gemini
You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.
| Feature | Command | Description |
|---|---|---|
| Code Review | /gemini review |
Performs a code review for the current pull request in its current state. |
| Pull Request Summary | /gemini summary |
Provides a summary of the current pull request in its current state. |
| Comment | @gemini-code-assist | Responds in comments when explicitly tagged, both in issue comments and review comments. |
| Help | /gemini help |
Displays a list of available commands. |
Customization
To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.
Limitations & Feedback
Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.
You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.
Footnotes
-
Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
Este pull request é uma atualização substancial que introduz o suporte para pagamentos via PIX, moderniza a base de código para PHP 8.2, e melhora significativamente a manutenibilidade e a experiência do desenvolvedor. As mudanças incluem uma refatoração completa da desserialização de objetos, a adição de novos scripts de composer, configuração de ferramentas de qualidade de código e uma estrutura de testes mais robusta. No geral, é uma excelente contribuição que moderniza e expande as capacidades do SDK. Minha revisão inclui algumas sugestões para melhorar a consistência do código e a documentação para o usuário final.
| if (property_exists($this, $property) && null !== $value) { | ||
| if (in_array($property, $dateTimeProps) && is_string($value)) { | ||
| $value = new \DateTime($value); | ||
| } elseif ($objectMapping && isset($objectMapping[$property]) && !empty($value)) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A verificação !empty($value) na linha 20 pode causar problemas ao desserializar objetos aninhados que estejam vazios na resposta da API. Se a API retornar um objeto JSON vazio (ex: {}), json_decode o converterá em um objeto stdClass sem propriedades. A função empty() para tal objeto retorna true, fazendo com que a condição !empty($value) seja false e, consequentemente, o objeto aninhado não seja instanciado, resultando em um valor null. Isso pode levar a erros inesperados de ponteiro nulo em outras partes do código. Sugiro usar is_object($value) para garantir que, se o valor for um objeto (mesmo que vazio), a lógica de população seja acionada, criando uma instância vazia do objeto esperado e evitando possíveis bugs.
} elseif ($objectMapping && isset($objectMapping[$property]) && is_object($value)) {| public function setJavaEnabled(bool $JavaEnabled = true): static | ||
| { | ||
| $this->JavaEnabled = $JavaEnabled; | ||
| $this->javaEnabled = $JavaEnabled; | ||
|
|
||
| return $this; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
O nome do parâmetro $JavaEnabled no método setJavaEnabled está em PascalCase, o que é inconsistente com o nome da propriedade ($javaEnabled) e com a convenção camelCase usada no restante do código para variáveis e parâmetros. Para manter a consistência do código e seguir as boas práticas do PSR, sugiro renomeá-lo para $javaEnabled.
public function setJavaEnabled(bool $javaEnabled = true): static
{
$this->javaEnabled = $javaEnabled;
return $this;
}| ## Observações | ||
|
|
||
| - Ao criar uma transação com `$transaction = (new eRede($store))->create($transaction)` não vai retornar o campo `authorization`, para retornar o campo é preciso fazer uma consulta `$transaction = (new eRede($store))->get('TID123')` | ||
| - O campo `$transaction->getAuthorizationCode()` não está retornando nada, use `$transaction->getBrand()?->getAuthorizationCode()` ou `$transaction->getAuthorization()?->getBrand()?->getAuthorizationCode()` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A nota sobre como obter o código de autorização pode ser melhorada. A introdução do método getFirstAuthorizationCode() na classe Transaction simplifica a obtenção deste valor, pois ele já encapsula a lógica de procurar o código nos diferentes locais da resposta da API. Recomendo atualizar o README para sugerir o uso deste novo método, o que tornará o SDK mais fácil e intuitivo de usar.
| - O campo `$transaction->getAuthorizationCode()` não está retornando nada, use `$transaction->getBrand()?->getAuthorizationCode()` ou `$transaction->getAuthorization()?->getBrand()?->getAuthorizationCode()` | |
| - O campo `$transaction->getAuthorizationCode()` pode não retornar o código de autorização. Utilize o método `$transaction->getFirstAuthorizationCode()` que busca o código em todos os locais possíveis no retorno da API. |
feat: Migrar autenticação para protocolo OAuth 2.0
9033910 to
c44c9f0
Compare
c44c9f0 to
e2d2f73
Compare
feat: Adicionar PIX aos meios de pagamento