Remove the yield block from the signature checker. Everything it's returning is data that's already available within the scope of the controller, so it's not adding value.
In the Profile model initializer, use a loop to assign all the instance variables from the config data
Allow for subclassing the Payment model. This provides a flexible way for gem users to add optional fields (like shipping address) and do things like decide if card_cvn should be required or not, without us having to get heavily involved with form configuration
Improve the signature checker, so it's clearer what kind of signature checker you're asking for.
Change the CybersourceResponseHandler to be something simpler - a ReasonCodeChecker. There was too much bundled into the ResponseHandler. This approach gives the gem user more flexibility in how they handle responses from Cybersource, and makes redirecting to a "success url" entirely optional.