| > this is really pretty vital to what ALL of us do as part of our product development/launching/testing process The whole point of test-mode is that you can run your transaction as if it was running on the live-mode network. The solution is to test in test mode. Live mode just runs real cards, it should be have identically to test mode. The reason why this is a per-se violation is because you're playing on the real network with real cards, and that means the real anti-fraud systems are active, and the card networks are taking real interchange fees for doing their jobs. If you're already processing a ton of money per day, you probably can fly under the radar with 1-2 non-refunded test transactions that you reimburse yourself for later. But why risk it? If you're breaking the ToS you're risking account termination. > The Stripe Services Agreement prohibits testing in live mode using real payment method details. If Stripe or whomever else is your gateway to accepting all payments, why would you poke the bear? Section 6.2 of the Stripe Services Agreement: > Stripe may immediately suspend providing any or all Services to you, and your access to the Stripe Technology, if: > (e) you breach this Agreement or any other agreement between the parties; It's just not worth the risk. |
Because testing environments often still mock some parts of the system and there may be subtle differences between mocked systems and live systems.
When I worked at a company that send out SMS to cell phones, we first tested our system without any connection to the network with our simulated SMS service provider. When we tried to go live, we tested a few live SMS on actual phones we controlled. It turned out, that there were some subtle differences between our mock SMS service and the real service, so we had to stop deployment and first fix the issues.
That was after months of testing in the test environment without any sign of the bug before we tried to go live.