PHPAY-89: adicionar o gateway Woovi/OpenPix — segundo com as cinco capacidades - #90
Merged
Merged
Conversation
Nono gateway, e o segundo da biblioteca a declarar as CINCO capacidades. Isso importa além da cobertura. Até aqui só o Asaas populava as cinco, o que deixava em aberto se o modelo de capacidades introduzido em PHPAY-72 generalizava ou tinha sido modelado em cima de um caso único. Dois gateways independentes, de empresas independentes, preenchendo o mesmo contrato é evidência de que a abstração descreve o domínio. SupportsCustomers api/v1/customer SupportsCharges api/v1/charge SupportsSubscriptions api/v1/subscriptions SupportsWebhooks api/openpix/v1/webhook SupportsPixKeys api/v1/pix-keys e api/v1/pixQrCode Particularidades: - O AppID vai cru no header Authorization, sem Bearer nem Basic. É o único assim. - O sandbox tem domínio próprio, api.woovi-sandbox.com, em vez de subdomínio ou caminho de produção. - O webhook fica em api/openpix/v1/ enquanto os demais recursos ficam em api/v1/. Não é engano: é herança da fusão das duas marcas, e está anotado no código para ninguém "corrigir" depois. - Todo objeto é endereçável pelo correlationID, o id no sistema de quem integra, em vez do id do gateway. Nenhum outro gateway da biblioteca oferece isso, então find() e destroy() aceitam os dois e a documentação mostra o caminho pelo correlationID. - Valores em centavos inteiros. O README transpõe as duas tabelas de capacidade: com nove gateways, colunas por gateway não renderiam. Agora gateway é linha e capacidade é coluna, o que também escala melhor daqui pra frente. 240 testes no total. Os do Woovi cobrem as cinco capacidades declaradas, a paridade com o Asaas, o AppID sem esquema, o domínio de sandbox, o prefixo próprio do webhook, e o endereçamento por correlationID.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #89
Nono gateway — e o segundo da biblioteca a declarar as cinco capacidades.
Por que isso importa além da cobertura
Até aqui só o Asaas populava as cinco. Isso deixava em aberto uma dúvida legítima sobre o modelo de capacidades introduzido em #72: ele generaliza, ou foi modelado em cima de um caso único?
O Woovi responde. Duas empresas independentes, com APIs independentes, preenchendo o mesmo contrato:
Há um teste que assevera exatamente essa paridade — se um dos dois perder uma capacidade, ele falha.
Também confirma o que o modelo dizia sobre
SupportsPixKeys: é sobre ser PSP e emitir chave própria. O AbacatePay é Pix-nativo e não tem; o Woovi é PSP e tem.Particularidades
O AppID vai cru no
Authorization— semBearer, semBasic. É o único assim, e há teste garantindo que nenhum esquema é prefixado.O sandbox tem domínio próprio:
api.woovi-sandbox.com, não um subdomínio ou caminho de produção.O webhook fica em
api/openpix/v1/enquanto os demais recursos ficam emapi/v1/. Não é engano — é herança da fusão das duas marcas. Anotei no código para ninguém "corrigir" depois.Todo objeto é endereçável pelo
correlationID, o id no seu sistema em vez do id do gateway. Nenhum outro gateway da biblioteca oferece isso, então achei que valia expor em vez de esconder:Chaves Pix de verdade
README: tabelas transpostas
Com nove gateways, uma coluna por gateway não renderia. Agora gateway é linha e capacidade é coluna — mais legível e escala daqui pra frente.
Verificação
240 testes (643 asserções), PHPStan nível 9 limpo, Pint limpo.