FitUsIn hired us to implement the eWAY payment gateway in their Ruby on Rails app at www.fitusin.com. After finding out the cost of opening a merchant account, they asked us to switch from eWay to Braintree, giving us a direct comparison of the implementation experiences at this point in time. We found that the eWay implementation is more difficult than it needs to be, with Braintree having an easier experience. Here's why:

The eWay Ruby sample code works, but is not a realistic part of a Ruby on Rails application. It contains unused ActiveMerchant sample code, which suggests that the eWAY gateway in ActiveMerchant is up to date & supported. It exists, but it has a few bugs and eWay support staff are not familiar with it, nor does it seem that eWay contribute code to it.

ActiveMerchant is our Ruby gem of choice because it provides a universal implementation for dozens of different payment gateways. When implementing eWay, we found over several hours that the "successful transaction" page proved very elusive. We investigated our code from all angles, eventually tracing data through the class in the gem which connects with the eWAY API. It turns out that the ActiveMerchant eWayRapidGateway class is not perfect, but could be fixed with a little open source work. I advised eWAY support (who always did a great job) that their company might get more business if they hired a ruby developer to improve the class, rather than relying on the open source community.

After fixing the eWAY class in the ActiveMerchant gem, FitUsIn finally had checked all the boxes on their NAB merchant account application form. Only then did NAB advise them of the full cost of opening and using a merchant account. The cost was significantly more than alternatives such as Braintree, cutting into their margin - so they decided to switch.

Switching to Braintree took roughly an hour, because we'd already implemented ActiveMerchant. A fresh implementation may take longer (and you'll also want to consider using the excellent Braintree gem). As mentioned above, ease of switching gateways with ActiveMerchant is one reason we favour it. The Braintree ActiveMerchant class is well supported, with everything functioning nicely. The Sandbox is easy to use and the support are responsive and informed. It should be noted that the Braintree payment settlement process is a little different, with no merchant account required.

While clients and their developers should consider all payment options together before each implementation (Stripe is in an Australian Beta), let our experience serve as a heads up for what may lie ahead in a Rails/ActiveMerchant project today.