This is comprised of badly written code and some unit tests. The overall objective is to refactor the code and keep the tests passing.
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.