I am starting this thread with a goal mind: To discuss the recurring billing functionality we want available with Ubercart, and how we are going to get there.
For the past few weeks I have been diligently reading, coding, and pulling out my hair figuring out what is currently available with recurring billing for UC 2.x, and what needs to be created or modified to get there. There has been a number of discussions around this topic and it takes someone new to the topic a lot of searching to get a grasp on the current status. First I will spend some time outlining the current state of recurring billing.
Ubercart Core Modules
The included recurring functionality (uc_recurring) does a good job of allowing any payment module to hook into it. In my mind, this was definitely done the right way. Where I do think some issues are with this is how recurring billing ties into the order system. There was some discussion here about the desire for a recurring fee to create a new order. This is good for both physical and virtual goods in the sense that a user can then see a payment history. As it is right now, a customer cannot see a log of payments.
The core modules currently use Authorize.net's ARB for recurring billing. As it is, there is no way to monitor failed transactions built-in, and I am not quite sure how expired credit cards are handled, but my guess is not very well. ARB does not allow for editing the recurring fee site side, but that is not a large issues as it can be modified from Authorize.net's interface if needed.
CIM
The uc_cim module does a better job of handling recurring billing. I evaluated the port to UC 2.x for this module, and found a few bugs resulting from changes from 1.x -> 2.x. The benefits of this module are as such:
- Help your repeat customers checkout more quickly by entering their credit card info only once.
- Accept pre-orders for a product and charge the customer when you ship it.
- Process recurring payments using the uc_recurring module.
- Process refunds from within Ubercart.
- Admin ability to create orders and charge a stored credit card for a user.
The only thing that I see as a step backwards from the core ARB is not having the ability for anonymous checkout. This is because the CIM information has to be linked to an account, and in the checkout process, the account isn't created until after the CIM code has to run. I was able to modify the CIM code without touching the core Ubercart to create the order during the CIM process, but the problem with that is that then Ubercart thinks it is an existing account and reports to the user that it found its existing account. It works, but is hackish.
If this module is going to live up to its potential it needs to have a project page on d.o and an issue tracker. There is no way to collaborate around this module as it stands.
I know this discussion was specifically around Authorize.net, but I believe that is where we have to start, to get at least 1 good recurring system going, and this is the furthest along. Please discuss your desires for recurring billing functionality, and ideas on how we can collaborate and manage this elephant of a requirement.
