[RFC] Modification for refund

Added isAllowRefund to move the check from the controller to the model for reuse
When refunding, the transaction created has a null payment object