I recently began a new effort at TransFS that involves a good amount of Objective-C coding. Yes, we are working on an iPhone application… more on that soon, should be exciting.
As part of this new project, we need to be able to process transactions via Authorize.Net. In the rails world, there is an excellent plugin for processing credit card sales called ActiveMerchant. It is very mature and has support for nearly every kind of authorization gateway you could imagine. The plugin is open-source (of course), and is used by hundreds of production websites.
You can find the source repo here on Github via Shopify, who created it as an extraction from their in-house code. What an superb contribution they made to the community!
Unfortunately, the Objective-C and iPhone development community is still relatively young, and no such plugin (or Framework, as they are called in XCode-land) exists.
Enter ObjectiveMerchant…
Today I’m announcing a new open source project, sponsored by TransFS.com, to port ActiveMerchant over to Objective-C. The project is already underway, and about a quarter of the code has been ported so far… but there is a long way to go still.
The goal is to create a reasonable facsimile of the ActiveMerchant code, replicating as much of the class structure and patterns as possible. If we succeed, then it should be very easy for someone who is familiar with the ActiveMerchant plugin to move over to iPhone development and get started with ObjectiveMerchant. Initially we’ll probably try to support the Authorize.Net and Paypal gateways, but it should be relatively easily to fill in the full list over time.
A key challenge in this project will be to develop good unit tests for the ObjectiveMerchant framework. I am hoping that I can write OCUnit tests based on the existing tests in ActiveMerchant, but the differences between the two testing frameworks might make that difficult. TDD is not nearly as prevalent in the XCode world, so this is trickier than I would like. Any suggestions on how to improve the testing of this new library would be greatly appreciated.
If you are interested in helping out with this effort… fork the repo and contribute!
I’ll be posting more info here as the project matures, and hopefully within a week or so it will be at a stage where I can show off some working payment authorizations. Until then, spread the word if you find this interesting… Thanks for reading!