itens, base_params e params estão como variáveis de classe. O comportamento esperado é que elas fossem variáveis de instância, já que PagSeguroApi é uma classe instanciável com métodos que alteram essas variáveis.
O fato dessas variáveis serem de classe causa um bug sutil: pode acontecer da variável de classe não ser resetada após o final do request (o Django não garante isso). Isso aconteceu comigo em um deployment simples com gunicorn. No meu caso, ao voltar para a página anterior ao checkout do PagSeguro e realizar outra compra, as duas compras se acumulavam no carrinho do PagSeguro, o que é um comportamento incorreto. A solução segue neste pull-request.
Coverage increased (+0.15%) when pulling b12f4fffa757f03c0376e9ae612438bd4e588dbb on vintasoftware:fix-itens-bug into 253d18e3f7b0f5c974683d5f12365bf1f27ea1c7 on allisson:master.
itens
,base_params
eparams
estão como variáveis de classe. O comportamento esperado é que elas fossem variáveis de instância, já quePagSeguroApi
é uma classe instanciável com métodos que alteram essas variáveis.O fato dessas variáveis serem de classe causa um bug sutil: pode acontecer da variável de classe não ser resetada após o final do request (o Django não garante isso). Isso aconteceu comigo em um deployment simples com gunicorn. No meu caso, ao voltar para a página anterior ao checkout do PagSeguro e realizar outra compra, as duas compras se acumulavam no carrinho do PagSeguro, o que é um comportamento incorreto. A solução segue neste pull-request.