Refactor PaymentStates (use enums instead of integers) / add finish
state and handle when all messages are exchanged