I had previously been using dj-stripe, but it turned out to be way more trouble than it was worth for this project. I had what I thought was a fully functional setup, but after laying dormant for months, I turned it back on to see it broken. And sometimes when it wasn’t broken, I’d still get Django deprecation warnings. I got tired of relying on a third party tool that may or may not be updated in a timely manner. I’m sure it’s a great product if you have complex needs and no time to roll your own solution, but it was overkill for me.
I tore all that code out and rolled my own solution that I could understand and test(!) from top to bottom. Felt great.
I still don’t have any payment code live yet, but I’m a lot closer than I’ve been before.
I ended up using this article as the basis for what I did. I went beyond what it talks about in a lot of ways, but it was incredibly helpful to see a working example that was this easy to understand!