Easy Charging of Credit Cards with Spreedly

24 Mar 2009

When we built SQuiD (easy project management for link building), we had a problem in that the client was on a limited budget and yet the site had to charge people subscriptions for usage. Which, if we wrote that part ourselves, would take all sorts of time to research, implement, and (most importantly) not screw up. When you take people’s credit card numbers there is no such thing as a small security breach.

Luckily my teammate, Joseph Leddy, remembered hearing about Spreedly -- all they do is “Make Selling Subscriptions Easy.” We decided to use Spreedly and it saved us a ton of time (and consequently money). Here’s 9 reasons why I loved working with Spreedly:

1. Free to start and test with!
Spreedly doesn’t charge any money to sign up and run tests against their API. You start paying only as soon as you’re ready to start collecting real money.

2. Ridiculously test friendly
You can create a pretend (test) area that you can charge accounts to. It looks and behaves exactly like the real version, even down to the managing of your pretend subscriptions. When you’re running the site on your local machine you can follow a full path to Spreedly (with stubbed out credit card processing) and back to your local server.

3. Super easy Rails integration
This the all the code I needed to integrate with Spreedly:

class Subscriber < ActiveResource::Base
self.site = “https://secretapitoken:X@spreedly.com/api/v3/test”
end

That’s it. Now I can call:

Subscribe.find(id)

and get back a Spreedly object I can interrogate.

4. No storing credit card numbers on my site
Don’t have to worry about purging them from the logs, encrypting them, storing them in a secure place, or whatever. My site never sees credit card data so I don’t have to care about it at all.

5. I don’t have to track time left on a subscription
Spreedly will tell me when the customer’s run out of time.

6. Nice notification when subscriptions have changed
I expose a controller action to Spreedly and they send me a list of Subscriber ids that have changed, when they’ve changed. If they can’t reach me through some fluke of the internet they keep trying until they do.

7. Good documentation
Very easy to follow.

8. Great customer service
They usually got back to us in 15 minutes or so. Really.

9. Versioned API
We launched with version 3 of the API. They’ve since gone to version 4, but since there’s a “v3” in that “self.site” above I don’t have to worry about that. I can upgrade on my schedule.