Automatic billing annual subscriptions with 30 day free trial?

Posts: 3
Joined: 02/16/2008

We are looking to implement a site that offers product subscriptions that are billed annually, but have a 30 day free trial before the first payment, within which time the customer can cancel without being billed.

• The user may be subscribed to multiple products, and may not necessarily start the subscriptions at the same time.
• Billing should be automatic, both after the trial period and on renewal.
• The system should send notice of billing emails 5 working days before the payment is processed.
• Ideally I'd like to use the protex gateway, but can change if this is not possible.

I am new to drupal, but not to PHP, so would be happy to help in development of such a system if it doesn't already exist.

Does anyone have any pointers / experience in this area? There seem to be so many ways of achieving this, I am unsure of which direction to start looking in. I don't want to put lots of time in and then run into problems later on, so I'm asking you lovely helpful people first Smiling

Posts: 86
Joined: 02/06/2008

I'd be interested in this too. Training site www.lynda.com does it exactly this way and this is great for membership sites.

subscribing...

Posts: 79
Joined: 08/09/2007
Bug Finder

The easiest thing to do is to use a coupon for the first month. Another option would be to setup a discount. Both are contrib modules.

--

Biodiesel * (ubercart + drupal) = Sundays Energy

Posts: 3
Joined: 02/16/2008

I'd take the payment info, pass it to my CC gateway (no local storage of CC nos) and apply a coupon? How?

It is important for the billing to happen automatically unless it is cancelled.

Posts: 4368
Joined: 08/07/2007
AdministratorHead Code Monkey - I eat bugs.

You sound like the perfect candidate to give the recurring payments module a ride. Eye-wink Basically, it provides a framework for enabling people to add recurring payment options to their gateway modules. With it you can add a product feature to the registration product that can specify an initial charge date and recurring billing specs. Then you'll need to write the code in a payment gateway module using a hook in the module that passes the info on to your payment gateway.

There is no admin screen to handle the cancellations or anything like that... so it will require a good amount of customization. I just couldn't fathom a way to get it done in core without spending all my time on it, so leaving it as a framework that operates on a simple hook seemed like the thing to do.

You'd need to implement hook_recurring_fee($order, $fee) in your module which receives the order and the fee information as arguments. More documentation on this will be posted, but in the meantime you can check out the function uc_recurring_recurring_fee() in uc_recurring.module for an example.

Posts: 3
Joined: 04/12/2008

This hugely important flow of functionality for subscription sites, because all the marketing people say that's how they should work to convert the most users.

Just wondering if anyone has made any progress on this in the last couple months since it seems a few different people were interested.

If not I'm thinking about putting a bounty on it. I would try to make the code contribution myself but I'm still a php beginner and just starting with Drupal.

If anyone else is interested please chime in - I'd want it to benefit as many people as possible.

regards,
ltg
http://www.hdgreetings.com

Posts: 79
Joined: 12/28/2007
Bug FinderGetting busy with the Ubercode.

Hi ltg,

Just stumbled across your post here...

I think you can do this pretty easily now: use the uc_reccuring module to set up a recurring fee that starts however many days or months after checkout that you like. Use the uc_cim contrib (http://www.ubercart.org/contrib/2537) I put together to store the credit card information with Authorize.net so that you can charge credit cards at a later date and for each recurring payment. It gives you a lot of flexibility.

Let me know if you see something missing here or if you need help...

Best,
Chad