This is comprised of badly written code and some unit tests. The overall objective is to refactor the code and keep the tests passing, however there are actually no rules here so if you want to change the tests thats also fine.

Fork, create a branch & pull request. Invite us: shahnmiddleton-re-leased, tonyschollum

Approach this as if it was the beginnings of a project that was likley to become a very large and long lived solution. Structure dependencies and organise the solution as you see fit. Refactor the "ProcessPayment" method, give it your best shot at making it readable and maintainable.