minha proposta de solução ao desafio

Só para constar, poderia quebrar os dados de merchant e purchaser em outros modelos.