Partial Payments or Payment Plans

Posts: 28
Joined: 03/07/2008

I am looking for a module that will allow a user to set up some time of payment plan. Basically, the user wants to purchase a product, but they want to pay for the product over the course a 2-3 months. I had a couple of questions:

1 - Is there already a module that does this? I searched around a bit but couldn't find anything that does this.
2 - If there is not a module of this nature, any suggestions on where to start? I was looking at the uc_recurring.module and it has a basic start to what we are looking for, but not exactly what we need it seemed to me.

We are ultimately looking at integrating this with Paypal as we do all of our transactions through them, so the ultimate goal will be to have a module that charges the user through Paypal depending on the payment plan.

Any suggestions are welcom.

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

I guess the preliminary question is will the customer receive the product immediately upon checkout or once payment has been received in full?

Posts: 28
Joined: 03/07/2008

The user will receive the product immediately. What the customer is paying for is a service (online class) that they can complete as quickly or slowly as they want. So, the service or class will start immediately but we will have control over what they receive in terms of that service. We are thinking about limiting how much they will be able to complete until they are paid in full. Fortunately, we have final control because even if they complete the course, they will not receive a certificate of completion until they are paid in full. I suppose the answer to your question then is that they will not receive the product until paid in full. They will be able to work on the class, but without the proof that they completed the class, that will mean nothing to anyone else.

We'll say they don't receive the product until after payment is made in full (unless of course someone sees this differently than I do).

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

If you'd consider using Authorize.net instead of Paypal, you could use the Authorize.net CIM module (uc_cim) to build this functionality. Once the customer has entered their credit card info, you have a lot of flexibility with what and when you charge them. It wouldn't work out of the box - you would have to build the custom logic for partial payments - but it would be a good basis to start from. I'm not sure if there's anything similar for Paypal or not.

Chad

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

My initial thought is that this might be a good time for someone to bite the bullet and write a recurring fee handler for PayPal. Laughing out loud There's already a structure in place to receive IPNs, so it might have to be developed as a patch to the PayPal module itself... but the idea would be setup a recurring fee that spreads the payments out over three months or something. As payments come in, they will be entered on the order by the IPN... once the balance reaches $0 you can move the orders to the Completed status or something. You can setup the recurring fee feature to only work on one option... i.e. the product could have a "Payment type" attribute. The default option is pay in full, but the second option could be pay in 4 installments w/ an appropriate adjusted SKU, drop the price to 25%, and have a recurring fee feature attached to its adjusted SKU that is 25% of the price set to be billed 3 times, once a month, starting in a month. (oof... confusing sentence... if it wasn't so late, I'd retool that.)

Posts: 28
Joined: 03/07/2008

chadcrew - Paypal does allow for recurring payments, but the problem here is that we need to keep track of this in Drupal (this is for accounting purposes). I haven't gotten really deep into this yet, and I still need to have a meeting with a few people to nail down some more of the details, so I will let you know all of that once I know and kind of where we are headed. I assumed that it would be the case of what Ryan wrote just after you. I just wanted to find out if I was missing something before I took off on a journey of writing this module. I have some experience writing modules using ubercart, but I have never dealt with billing directly, and since it such an important concept, I just want to get the best idea. There will be lots of research to come, but I want to get the best idea of where to look. According to Ryan I will look through the Paypal module, and I will look about setting this up as a recurring fee (to be honest I don't know how this works yet as I have not actually enabled the module or played around with it yet).

Posts: 28
Joined: 03/07/2008

After doing some research into this, I don't believe this is what we want. The main reason being that the recurring fee handling in Paypal allows a user to cancel at any time. However, the module that we are looking to develop will be more of a payment plan that we will charge them 3 times in a month. After thinking about your questions some more, I have come to the conclusion that the product is received before full payment is completed. Thus, we don't want the user to be able to cancel payments in the middle of the billing process. This isn't a subscription. They either buy the course or they don't. We just want to give them the option of making payments on the course over a certain period (as I write this it seems like we are extending credit in a sense and we are using Paypal to collect the money, whereas we are just holding on to the balance owed). Anyways, any other thoughts that you might have would be great.

Posts: 28
Joined: 03/07/2008

Oh yeah. Where is the newest revision of the uc_recurring module? All I can find is the original module.

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

The version packaged w/ the 1.0 release should be the latest. Puzzled

Posts: 28
Joined: 03/07/2008

Here is the only place I can find a copy of this module:
http://www.ubercart.org/forum/development/2912/looking_uc_recurringmodul...
I was wondering if it was in the contributed modules section or if this is where I should download this from?

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

It's included in the 1.0 release... maybe you just didn't unzip it at the time?

http://drupal.org/project/ubercart

Posts: 28
Joined: 03/07/2008

Not sure. We were using ubercart before the official release, and then we upgraded (I didn't do the upgrade so I am not sure exactly how they went about it). Anyways, thanks for clearing that up. I will grab the zip and just get the module. Thanks.

Posts: 1374
Joined: 08/14/2007
Bug FinderEarly adopter... addicted to alphas.Getting busy with the Ubercode.

What about a Feature as Ryan suggested for "Payment type: Full" and "Payment type: Partial" with an extra option to allow for cancellation? I can see where this would be a good option to have, such as in the cases of online courses where you can't cancel. Checking this option box would allow for an additional message upon product completion (or in the product description itself) saying that "The recurring fee cannot be canceled and you will be billed the full amount after x duration."

This could even work for subscription products that need such an option. Perhaps then the meseage would be customizable to be more descriptive, e.g. "You cannot cancel this subscription through the account interface; you must email us." I don't think that's the best way to go about subscriptions, of course, but I think the issue still remains that this option would need to be in place for certain products, such as courses. Instead of breaking it out into two modules, keeping everything rolled into one is probably the best bet.

My two cents, anyway.

--

"Pain don't hurt." - Dalton

Mike Nelson's RiffTrax! www.rifftrax.com

Posts: 28
Joined: 03/07/2008

Ok. I got some good ideas about this today. I had a meeting with the client and they gave me an idea or thought on what they envisioned. The funny thing is that I had basically came up with this same idea earlier today. The basic plan is to make a new payment type which would be a payment plan. The administrator can then select which other payment type (besides the Payment Plan) that a user can use to make their payments. Also, they will be able to select their payment plan. The user then will complete checkout and the Payment Plan module will charge them based off of the plan selected using the method (payment type) that they selected. Then, similar to uc_recurring, a cron job will charge them according to their payment plan by the method they selected on checkout.

Any thoughts on this? Any potential problems with this module that anyone sees? Would other be interested in such a module? Let me know your thoughts before I dive in.

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

I'm doing a lot of this already w/ uc_recurring, the difference being "payment plan" isn't a valid payment method. However, you should be able to use a lot of the code related to storing payment info, processing payments, and restricting which payment methods are good for payment plans.

The main snag is PCI compliance. Once you've authorized a card, you're not supposed to store the CVV to be fully compliant. From what I understand, a lot of service agreements require such compliance. There are workarounds, like Authorize.Net's CIM for CC payments, tho.

Posts: 28
Joined: 03/07/2008

Thanks for the great comment. I completely forgot about the PCI compliance issue. I'll have to think on this one a bit more. With paypal it won't be an issue (we use strictly Paypal right now), but with other payment methods this is a big issue.

Posts: 1374
Joined: 08/14/2007
Bug FinderEarly adopter... addicted to alphas.Getting busy with the Ubercode.

I would try to not rely on PayPal going forward, their service can be spotty (although I haven't seen any issues lately). Their signup form should have a "Buyer Beware" clause.. Eye-wink

And yeah I would say for future PCI compliance, the Authorize.net CIM is your best bet. I'm hoping to integrate this in the near future once we get subscriptions going.

--

"Pain don't hurt." - Dalton

Mike Nelson's RiffTrax! www.rifftrax.com

Posts: 1
Joined: 08/21/2008

Ryan said that uc_recurring is included in the 1.0 Ubercart release. I can't find it.

EDIT: Never mind, I found it. It's in a different section than the one I expected:
Admin > Modules > Ubercart Payment.