I think a clearer way to do this might be to have the student views signal be a simple "unenroll" that sends the relevant course enrollment object over. This method can then check to see whether it's a verified certificate, a paid-for-course (which Stanford uses), almond fudge, or whatever. That kind of logic of what exactly gets a refund or not doesn't belong in student views, it should be in the shoppingcart app.