TabStore: Surfando uma onda de problemas com o split e a custódia dos pagamentos! 🌊💸
Sigo focado em avançar com o TabStore, mas a última semana foi bem complicada!!!! 😵💫
Se vc perdeu o começo dessa história, dá uma olhada nos links no final dessa postagem! 😀
Na última sexta à noite estava tudo certo pra subirmos a última parte do processo de intermediação das negociações do TabStore, mas o desfecho foi completamente diferente e encerramos a noite desabilitando praticamente tudo que já tínhamos construído. 😓
No dia 16/06, fizemos alguns testes em produção da nossa integração com o gateway de pagamentos, ficamos felizes com o resultado e, desde então, evoluímos o projeto apenas trabalhando no sandbox. Na sexta 04/07, estava tudo lindo e testado, então era só mandar pra produção e correr pro abraço. Subimos e... começou a chuva de problemas ☔ o que funcionava lindo no sandbox não funcionava mais em produção!
Puxando a capivara, descobrimos que o problema no perfil relatado pelo Programmer404, que a princípio parecia simples... na verdade era complexo 😬 e também relacionado ao gateway de pagamentos. 💳
O gateway de pagamentos mudou as regras do jogo e isso ferrou completamente o TabStore 😭 e em plena noite de sexta-feira, sem suporte, não tivemos outra opção a não ser desabilitar toda a integração com o gateway de pagamentos.
Na segunda-feira, o time de suporte do gateway atendeu meu chamado, ficou ciente do problema gerado pro TabStore e deu rollback nas novas regras implementadas, fazendo sumir o principal problema e revelando outros, dessa vez da nossa própria implementação. 🫣
Como funciona...
Dado o tipo de público do TabNews, acho que existe uma boa chance de você ter um perfil técnico, sendo assim, permita-me aprofundar um pouco. 👨💻
Resumidamente, o TabStore é um intermediador em uma transação financeira e tem o papel de garantir que algumas regras sejam seguidas durante o processo, além de fazer a custódia do dinheiro durante a vida desse processo e, no final, enviar o dinheiro a quem é de direito. 💰
Para fazer esse trabalho, o TabStore controla dois tipos de subcontas:
Subconta de pagamento
Toda vez que alguém faz um pagamento dentro do TabStore, uma subconta de pagamento é criada. Essa conta fica relacionada a uma operação e apenas o próprio TabStore pode movimentá-la. É nessa subconta que fazemos a custódia do valor da operação, ou seja, o dinheiro fica parado nessa subconta, isolado de tudo e de todos, só esperando o encerramento da operação, pra descobrir se deve ir pro vendedor da postagem patrocinada ou se deve ser devolvido ao comprador.
Subconta de usuário
Este é um tipo mais simples e intuitivo. Basicamente, quando o dinheiro sai de uma subconta de pagamento, ele vai pra conta de um usuário específico, onde somente esse próprio usuário tem o poder de sacar. 💸
A treta...
O que ferrou nossa vida aqui é que o TabStore criava as subcontas sempre com um UUID (aleatório gerado no momento da criação) sendo usado como pixKey. Isso por si só não era um problema... até o gateway de pagamentos implementar uma nova regra, exigindo que toda pixKey representasse uma conta real em algum banco de verdade! Aaaaiii ferrou!!! 😩
Pra conta de usuário até tínhamos a saída fácil de criar a subconta com o CPF do usuário, mas pra conta de custódia isso ferrava completamente os planos... e se essa regra continuasse, teríamos que mudar a estratégia e fazer uma refatoração... refatoração em um projeto que ainda nem nasceu direito!!! 😵
Felizmente o pior já passou 🙏 o gateway voltou, no meio do caminho encontramos e resolvemos outros pequenos problemas e, de quebra, fizemos algumas melhorias de observabilidade. 📈
Observação...
Essa é minha primeira vez implementando uma integração de pagamentos com split e custódia financeira, então pra mim algumas coisas são novidade 😅 e, se você tiver alguma ideia, sugestão ou crítica, eu adoraria conhecê-la nos comentários! 💡
E se você chegou até aqui, gostaria de lhe pedir mais 2 minutos do seu tempo, pra me ajudar respondendo essa pesquisa rápida sobre o TabStore. 🙏
Flw, vlw, bj... tchau! 👋
Fonte: https://tabstore.com.br