Allow multiple mode payments #6448

It allows sale payments using multiple gateways.
wish we could just send `(amount, sale)` and the error message picked up attributes from sale