ActiveMerchant 1.3 released
Posted by tobi January 31, 2008 @ 03:37 PM
ActiveMerchant 1.3 has been released. The focus on this latest release was the addition of standardized support for the Address Verification System (AVS) and credit card verification value (CVV2) checks across all gateways which is the latest extraction from Shopify.
AVS information helps reduce fraud by checking the billing address of the customer with the cardholder information on file at the credit card company. CVV2 checks help ensure that the cardholder information has not been stolen from a database of credit card numbers because it is forbidden to record or store CVV2 numbers in any way.
The results of the AVS and CVV2 checks are now available in the response object. ActiveMerchant does all the work of interpreting the information returned from the payment gateways for you and makes the information available in a consistent hash format.
Sample AVS/CVV2 result:
response.avs_result['message'] #=>
"Street address and 9-digit postal code match."
response.cvv_result['message'] #=>
"Suspicious Transaction."
# Details:
response.avs_result['code'] #=> "X"
response.avs_result['street_match'] #=> "Y"
response.avs_result['postal_match'] #=> "Y"
response.cvv_result['code'] #=> "D"
Other notable improvements with the 1.3 release include:
- Improved documentation
- Common interface to AVS / CVV2 results
- New gateways, including Authorize.net Recurring Billing (ARB)
- Improved supported feature set of many existing gateways
- Automatically retry failed connections (when it’s safe)
Coinciding with the 1.3 release of ActiveMerchant is the ActiveMerchant PeepCode PDF by Cody Fauser. The PDF goes over the basics of payment processing, making purchases with ActiveMerchant, and security considerations to keep in mind when processing credit cards in your Rails application. The PDF also walks through the development of a sample Rails application that addresses topics such as order pipelines, order state management and the appropriate unit testing a financial application requires. It is definitely a great read if you are curious about payment processing or require payment processing in your application.

Awesome. Thanks for the post.
Been using ActiveMerchant for a while, looks like another good release. :)
Where’s the support for Amazon Payments and Google Checkout? Snippets from projects like PotionStore are way more useful for US and Canadian merchants than ActiveMerchant itself, which has tons of gateways that nobody in North America cares about. BTW, PotionStore uses paypal-business gem from ELC Technologies and not AM.
I also want to mention that RailsCart just released their first gem a couple of days ago. It’s a great project and I highly recommend it!
”...than ActiveMerchant itself, which has tons of gateways that nobody in North America cares about.”
Care to qualify that statement? The main reason we’re using AM is because it had a wrapper for our gateway.
What I mean is that there’s no support for major gateways like Google Checkout, Amazon Payments, Echo, ProPay, BluePay, WorldPay, BillMeLater, etc. The point a library like AM should be to provide support for major gateways out of the box and allow easy addition of the less popular ones. What’s the point of having an “abstracting” library, if I will always have to deal with Google & Amazon outside of the “abstraction”?!
PayPal, Google Checkout and Amazon Payments are a must for AM. Even if you have your own merchant account, customers demand payment methods that PayPal, Google & Amazon provide as they want to minimize the sharing of financial info. Not to mention the micropayments.
I can understand that AM is a work in progress, but my frustration is based on what I read on their forum. They say that Google Checkout is not in their plans due to its high level of complexity.
Nikolay, I’m sure that the AM team will be more than happy to take your contributions. I doubt anyone on that team is working on gateways that they don’t have a personal interest in. So if you have a personal interest in one of the mentioned missing gateways, I’d strongly encourage you to get busy and implement support for it.
DHH, I agree – I shouldn’t not complain that there’s a fly in my “free beer”. AM team does not owe me anything. I often forget that the Rails open-source community is more pragmatic than the rest. :-) I waited long enough and I will try to make free time to contribute. I hope AM is really open for contributions and does not make the process discouraging like some other projects (rails-app-installer, for example).
I’m looking for a list of supported gateways on that site, and I’m not finding it. Does one exist?
Great gem, by the way! Looking forward to support for Google Checkout, PayPal, and the rest of the big ones. That’ll make it an essential gem (and will drive more contribution to the project).
Awesome! Great job!
The list of support gateways is in the documentation section. Here’s the link to it:
http://activemerchant.rubyforge.org/
@DHH – One of the things I find most annoying about OS communities is their disdain for constructive criticism and suggestions, punctuated in a form very similar to your response to Nikolay.
The “why-don’t-you-contribute-it-yo’-own-damn-self” response is tiring, off-putting, and closed-off. Generally speaking, it is assumed that OS projects would love contributions, so does it really need to be spoken? Why not just ball-up, accept the criticism and take it as a polite suggestion to direct further development?
Responses like this really discourage folks from making suggestions in the first place. And for anyone familiar with enterprise, getting feedback from customers is often the most difficult part of developing new products and improving existing ones.
I wonder if DHH is using AM at 37signals… I guess not.
@Jake – When you give someone a gift, do you consider that person your ‘customer’?
Do you gracefully accept criticism of the gift? Even if you do, what does it make you think of the recipient?
Just curious.
@Nikolay – We purposely don’t support Google Checkout in ActiveMerchant because the level 2 integration, which we use in Shopify, is far too complicated. There is nowhere to put Google Checkout in ActiveMerchant because it is just too different a process. Checkout google4r-checkout.
We also have pending patches for WorldPay and Pay Now from Amazon FPS, so expect to see support for those services soon.
@SomeGuy – ActiveMerchant already has support for PayPal Website Payments Pro US & UK, PayPal Payflow Pro, PayPal Express and PayPal Website Payments Standard.
@Cody: Thanks about Amazon FPS and WorldPay! This would be great! I will put some thoughts into abstracting Google Checkout Level 2 into AM (it will though rely on google4r-checkout as there’s no need to reinvent the wheel, right) and will contact you.
@Not a customer: A customer is a person/organisation that uses your product and on whose feedback you rely on to improve your products. It has nothing to do with money. For those that didn’t pay there’s the term “non-paying customers”.
A person/organization that uses your product is a ‘user’. A customer is a user that pays.
I encourage you to google ‘non-paying customer’. You’ll find that nearly all of the results deal with how to collect money from a deadbeat.
Of course I agree that feedback from users is vital to any project, open source or otherwise. In the open source world, I think it’s important to clearly understand when you are a customer and when you are the recipient of a gift and act accordingly.
@Not a customer: I never referred to users of OS as customers. My reference to customers was in the context of enterprise – presumably paying customers. My only similar reference in OS was “folks” which would include “users” and “not-yet-users”.
Most OS contributors I know (myself included) are happy when other people use their product. I personally welcome suggestions. It’s not always the case that I have the bandwidth to implement such suggestions, but at the very least I don’t push them away with rude, tired retorts.
I really don’t understand why you’re countering my remarks. I’m just politely suggesting one way that OS people can soften their image a bit and be more approachable. I’m certainly not demanding that they take all suggestions and become slaves to demanding users. I’m just saying they can learn a lot from users and should be a bit more open-minded regarding suggestions.
It’s always important to keep in mind that the community surrounding an OS project includes non-code-contributors as well as code-contributors. The former (usually) being a much larger group. But the non-code-contributors group doesn’t need to be non-contributing.
OS projects that treat users as (potential) customers are the most successful. In fact, ideas equal money; hence every proactive active user is a “paying customer”. :-)
With AM, another limiting factor is having accounts/way to test gateways. When i submitted nova gateway stuff, i had a way to test it. If there is something its doesnt provide for you, write it yourself, or support the OS community and donate time/money to the project to get what your missing.
@Jake: DHH was actually very polite in his suggestion. We can’t hear his actual voice, but based purely on the written words, I don’t think anyone can point to anything there that was rude.
If he sounded snarky to you it’s probably because you’ve heard others make the same point in a snarky way. I can’t see anything snarky in the way he put it however.
I think that’s worth pointing out, because it is in contrast the initial (apparent) tone of Nikolay, which sounded possibly a bit demanding. (If, for example, I walk in the door of my house and the first thing I say to my wife is “where’s my dinner?” do you think she’s going to respond positively?) Of course his tone later was clearly not that way, and with the written word, where there’s no literal voice, “tone” can be rather unclear at times. I’m not trying to get in Nikolay’s face about this or be accusative, because it’s not really absolutely clear what his attitude was, but it does appear a little demanding. But it appears to me that DHH was careful to avoid being rude.
On the other hand, Jake, don’t you think it was rude to accuse DHH of taking a “why-don’t-you-contribute-it-yo’-own-damn-self” attitude? It certainly sounded so to me, and probably the other readers. If you meant it differently, it might be helpful to clarify.