Use Stripe. It handles plans, trials, proration, invoices, tax and card recovery, and it integrates cleanly with modern stacks. The engineering work is mapping billing states to your product: what happens on upgrade, downgrade, failed payment and cancellation. That mapping is where experience matters.
Have a question specific to your product?
Share the context and I will reply with a practical next step.