Here's an overview of how I've done it based on the tdd series by Adam Wathan.
- Create an interface and call it PaymentGateway. Add a method to the interface called chargeOrder() that takes an order and a customer parameter. You'll also want to add other methods for getting total charges for a customer etc.
- Create a StripePaymentGateway and have it implement the PaymentGateway interface and all of its methods. This class is where you can import Stripe classes and actually talk to stripe. It should do some work and return whatever it returns like your current chargeOrder does.
- create a FakePaymentGateway and also have it implement the PaymentGateway interface. In this class you can just fake the chargeOrder method and have it return the same thing as the real implementation does when a successful transaction takes place but it won't actually talk to stripe. This class will just do something simple like store charges in an array so that you can retrieve them and ensure that they were charged properly in your test assertions.
If you go this route you will want to write contract tests in a trait to ensure that your fake and real implementation behave the same way and do not diverge. But that is more advanced and might be hard to cover in a forum post.