The NGP VAN Payment Service is a centralized payments system built using .NET, Domain Driven Design, and piles upon piles of automated tests. By building an abstraction over payment processing with as few core models as possible, it’s very easy to add new payment gateways (such as PayPal, Stripe, or Litle) without modifying logic on the consumer’s side. The Payment Processor was developed by following three core principles:
- Correctness (never falsely charge, never charge and fail to report it)
- Ease of integration (an easy to use REST API for charging, and a robust messaging system for eventing)
- Ease of extensibility (it should take minimal effort to add a new payment gateway to the system)
Interesting things learned on this project include the value of comprehensive suites of tests (integration, unit, and functional alike), how payment processing works at a fundamental level, and what it takes to be different levels of PCI compliant.