Specification for changes to E-commerce (recurring products, role assignments and user account provisions)

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
sammys's picture

UPDATE (Jan 11): Code has been moved from the sandbox to ecommerce CVS pending full integration with the ecommerce system. I'm currently writing upgrade code to move products and the transaction records over to the new format. NOTE: If you are migrating custom solutions you will need to take special care with the upgrade. You may need to manually update the schema revision field in the system table to skip the upgrade and apply your own code instead.

Once the upgrade code is complete i'll be removing the old code from ecommerce. After this i'll send a mail to the ecommerce list to ask for testers.

You can get a copy of the alpha code by using the CVS tag DRUPAL-4-7--3. Alternatively download the tarball.

UPDATE (Oct 12): Thank you to the financial contributors. Code for all modules is now available in my sandbox. Please keep in mind that the code is still in beta and no upgrade code is available for you to upgrade your current 4.7 sites. It is not recommended that you use this code in production. Please post all issues to the Drupal issue queue and it would be very handy if you provided patches. I'd like to get hold of some anonymized production databases using the 4.7 default recurring product system. It'll help me build the upgrade code.

UPDATE (Sep 30): Still waiting on financial contributors. The ec_anon module is ready for trialling. It's available in my sandbox.

UPDATE (Sep 22): I'm excited to announce ec_recurring, ec_roles and ec_mail modules are ready for testing. There is a slight delay on ec_useracc due to some extra feature requirements on EC. That should be available very soon. Financial contributors please forward your second instalment and contact me to obtain code.

UPDATE (Sep 04): Feature Freeze in effect as of September 4, 2006. No more features will be added.
Scheduled UAT date: September 22, 2006. Scheduled completion date: September 30, 2006.

Hi everyone,

I've just finished writing up a specification document from which developers can see what is planned for E-commerce in relation to subscriptions, roles and user accounts being manipulated during checkout. These are highly sought after requirements and many people are scratching their own itch scratch scratch. My aim, though providing a specification document, is twofold. First, I want to make sure everyone knows what we're developing for 4.7 and then for 5.0 (after we do some major changes to E-Commerce core). Second, it provides a solid reference for any developer planning to write anything.

The document is still a work in progress and I hope discussions bring out any flaws in the specification or improve it.

Before you look at the document remember this: the document is a functional specification and doesn't delve into implementation detail. I'm saving that for another document, if we need it.

Thus, I unleash this specification document to the world.

Major Sponsors

    Only local images are allowed.

    Only local images are allowed.
    Only local images are allowed.

Minor Sponsors

Wellness Corps, LLC

A very BIG thank you to those that have contributed!

We are still looking for more sponsorship for these features as the time required to make them haven't been covered. Please contact me through my groups.drupal.org or drupal.org contact page to pledge.

List of CANs and CAN'Ts

CAN

  • Create, update and delete product expiry schedules through a purpose-built schedule management interface.
  • Unexpired purchases using an updated schedule are updated with the new schedule automatically. E.g a customer buys a product that expires in a month and you choose to change it to two months for everyone that purchased it. Update the schedule to two months and all unexpired purchases will be extended to two months automatically.
  • An expiry schedule can not be deleted if it is associated with an unexpired purchase.
  • Make products expire by selecting an expiry schedule in the product attributes.
  • Send emails reminding customers that a previous purchase is expiring.
  • Any number of reminder emails can be added to an expiry schedule.
  • Each reminder email can be scheduled individually.
  • Roles can be given to customer accounts when payment is received.
  • Roles can be given to and removed from customer accounts when a product expires.
  • A user account can be created when payment is received.
  • A user acccount can be blocked when a product expires

CAN'T

  • Process automated payments. Payment modules don't support it either. See comment below entitled Automated payments.

--
Sammy Spets
Synerger Pty Ltd
http://synerger.com

Comments

cool

sime's picture

Hi sammys.

I read on the mailing list, you've incorporated other ongoing efforts into this spec. This is great, I'd like to see anyone interested in this area offer their comments.

Just working at the top level, are there any known conflicts between this proposal and other developments?

Conflicts?

sammys's picture

There aren't any conflicts I know of. If there are any people working on conflicting stuff they better speak up so I can incorporate their needs/work into the design.

--
Sammy Spets
Synerger
http://synerger.com

cool

sime's picture

cool

A few comments

sym's picture

I have a few comments.

Notes: From now on I will call subscriptions recurring payments. That is to say, a product that is paid for by the day/month/year and has to be renewed is a recurring payment.

Addition of roles should be called role membership as per the draft module that has been made.

The first job should be to remove any trace of roles and recurring payments from the core. As per Gordon’s comments, this should include the database tables as well as code. I would like to see a working copy of ecommerce tested and working before any more work starts.

Recurring Payments

I like the proposed changes. I would like to see an api for recurring payments that include ‘on expire’, ‘on renew’ and ‘on first purchase’ (or something like that). I would also like to see functions that return the time until the product expires (this could be used with a cron hook to send emails).

A feature that would extend the payment time from the expire date is important too. If a site offers a product by the year and a renewal is paid a month before it expires, the renewal payment needs to extend the expiration date a year from the last expiration date.

Ec_actions.modulem

I would like to see a module that works in the same way as the action module does for the rest of Drupal. It would take every event hook (‘on payment complete’, ‘on checkout’ and the new ‘on expire’ etc) and add actions from there. Maybe it could work with the actions module.

I came up with this idea after I made a site where members pay to submit extracts from books and publishers can read the book extract and contact the writer. I wanted to have the writer pay for a role, but when the payment expired unpublish all the nodes (of a type) and place them in a ‘writer demoted’ role. I wanted to do something like this:

[product page]
-[actions]
On payment complete:
-add to role: writer

on renew
send email

on expire
-remove from role: writer
-add to role: writer demoted
change nodes: unpublish nodes of type: book

Have a look at the actions and workflow modules for an idea of what I am talking about. I don’t think that ecommerce should provide all these options, but an api to handle this would be great! I think this should be one of the core modules.

Role membership

If the above ec_actions is agreed on and made, this module should be very simple. It will be something like the store_change_role function in the store module at the moment, only exposed to the ec_actions module. It wouldn’t need to deal with any events directly because ec_actions would.

User accounts

Again, I think this should be independent of the other modules, as there are many cases where you would not want a user account to be made. This could also be part of ec_actions.

I think the user should be able to log in before the payment is complete, with a lesser role like ‘[role name] pending’. This could allow them to get to the ‘my orders’ page so they can pay for the account at any time after (if the payment gateway crashes out, the user will be left without an active account an unable to use the username they just tried). All the registration logic should be dome by the user.module.

Sammy, I am interested to know how much of the work in the pdf you are going to do. I was planning on removing the code from the core myself, but I have no problems if you or anyone else wants to do it! I would be willing to take on some parts of the changes, so maybe we should start assigning tasks?

Some progress

sammys's picture

Thanks for the swift response.

I totally agree with getting core cleaned out before work begins though i'm advocating we avoid coding anything for the permanent inclusion until we've worked out the best way to implement everything. insert soapbox It's important we get this stuff right so we get what we want first go. I realise there are people in a very big hurry to get these features, but some time spent now will ensure we get it right. I don't want half-assed crap going into E-commerce.

It may have appeared that everything in the specification was piled into the one module. That is far from the case. Each section (Subscriptions/Roles/User Accounts) were intended to each be in their own module. Here are my comments on your sections above.

Recurring Payments

These are good suggestions for hooks. We'll need to work out all of those required. Expiry date calculation is also important. I was under the impression that was already working properly. Am I wrong? If so, I would have fixed that for 4.7 release had I known about it.

Ec_actions.module

I agree with having a neat way of dealing with this. Exactly which way to implement it is still outside my vision. I plan to get up to speed with actions module before commenting any further or adding anything to the specification.

My inclination, as I write this, is to have modules implementing actions themselves and the ec_actions module exposes an interface into products enabling administrators to pair events with actions. This will require an ecommerce API extension for say 'actions'. It'll no doubt be much more comprehensive than this so we need to discover all the use cases before proceeding further with actions.

Roles and User Accounts

Very true that some of this could be part of the actions framework. What I just wrote would work very well.

How much am I going to do? Well to start with, i'm going to design how everything will fit together. As far as implementation goes, I don't see any point in doing anything until the design is done. Thus, assigning tasks to people will be a waste of time. See my soapbox episode in the first paragraph for reasons why! :) I think it would be very good if we could get some use cases drawn up. I can create an implementation design out of that.

I want you to know that I believe your work done already is great as it has given people a way to do something with their Drupal solutions. Good work and hope you can work with me on the design.

--
Sammy Spets
Synerger
http://synerger.com

payment gateway

mariun's picture

Sammy and Sime,
Sammy, thank you very much for taking the time to write this detailed spec.
Sime, I have a use case just like yours and so your structure for unpublishing will work very well for me.

My comment is about the payment gateway.
Sammy is only planning to implement Paypal.
Now, Paypal does not accept credit cards for recurring payments, so this will only sign up users who have a paypal account. I think this will be a major deterrent.

I am looking into installing the authorize.net module so that I can receive recurring payments via credit cards. How easy or hard will it be to integrate this? With authorize.net, I have the option to not store any credit card data (so short of security alerts like the one we received when the data was accidentally stored). Sammy, would you consider that, or do you think the possible security holes in Drupal would still pose too much of a risk?

sym and sime (great show)

sime's picture

Sammy and Sime,
Sammy, thank you very much for taking the time to write this detailed spec.
Sime, I have a use case just like yours and so your structure for unpublishing will work very well for me.

Just to clarify, I think you're talking about "sym" :-)

I don't think the payment

sym's picture

I don't think the payment gateway has been questioned - the plans are to change the way recurring payments and roles are managed. The payment will be handled by ecommerce in the normal way, allowing you to use the payment gateway of your choice.

If I'm wrong, then I think it should be changed to work that way!

Ps, sime - we only share 2 letters! And my name rhymes with "him". Maybe screen readers are reading them as the same?

Yes better we clear this up

sime's picture

Yes better we clear this up early, so no-one gets confused who the good guy is when things go Superman/Lex Lutheresque between us.

payment gateway

sammys's picture

sym is correct that the specification does not deal with any payment gateways in particular and i've not stated we'd be developing support for a given gateway. Instead i've suggested support for recurring payments without user intervention be added into Drupal and that Paypal Subscriptions support is a good starting point. The implementation of the gateway and the procedure of the payments must be scrutinised heavily to ensure that even if the credentials Drupal stores (if need be) are stolen from a site, the perpetrator can't gain access to the credit card details. I am yet to take a look at Paypal Subscriptions and thus don't advocate anything at this stage.

mariun: Questions regarding specific payment modules are off-topic for this thread and I ask you post your question to the mailing list.

--
Sammy Spets
Synerger
http://synerger.com

coupet's picture

Excellent specifications!

As per workflow: emails are sent based on payment or workflow status, roles are assigned at registration/expiration/renewal/upgrade/downgrade/..., user account are created.

Integration of Actions into the workflow would allow for additional events to be accomplished as per specific product

the core of E-commerce itself will need to expose the events for all workflow state alterations as well as payment state alterations.

Good work

kbahey's picture

Hey Sammy

This is a great document, thanks for sharing.

Some comments after reading the PDF specs (a bit late, but better than never).

  • Paypal Subscriptions is the most convenient way for site owners (provided it is available in their country). The advantages are : no storage of credit cards needed, no need for SSL, no gateway fees, no merchant account, and best of all, customers do not have to take an action to renew.

  • Payment by cheque is needed, since some like to pay that way. We can use the COD module for this and create the transaction manually, or the user can create it themselves.

  • It is OK to ask customers to create accounts before purchasing. This ties their ID with the transaction and hence they get the role.

  • Page 7 point 2 for account creation. Delayed account signup does happen in paypal_subscriptions.module by using the email address, but that is because it is sent in the IPN. I like the idea of an email with a link. Logintoboggan is a good example of this. Of course, if the customer already has an account, we can skip this part.

  • Page 7 point 3. Better use "user" followed by the next sequence for the user ID rather than random characters. This will be guaranteed to be unique, and match the uid.

  • Where will the expiry timestamp be stored? Will it be per user, per transaction or per product? I mean it all is determined initially from the product, but upon payment, the time remaining is known, and we can just store the timestamp associated with the user somewhere. We can have a uid, txnid, timestamp. txnid will tell us what the product is and hence what the role is. The timestamp makes it easy for cron to expire the role. Issues arise when users have more than one transaction for the same product (one from last month and one from now, the SQL becomes complicated and potentially "heavy" on the system. Should we just denormalize and store uid, rid, timestamp?

  • For trial purchases (free trial), there can be a special product with a lesser period (e.g. one week vs. the normal month), and price is 0.00. Users are only allowed to purchase this once (but they can sign up as another user and then enjoy it for another week, and so on ...)

  • I have a client who can use this functionality, but the time frame is 6-8 weeks for delivery, and hence has to be on 4.7 (can't wait for 4.8/5.0). If this is not ready in that time frame, I will write a custom solution to meet their deadline. If there is a way to get it before then, I can co-fund the project (once we finalize the deal with the client). Contact me via the contact form or at 2bits.com for further discussions.

Coupet's comments are great, but can be phased in future releases. Rather than waiting for a long time to get it all done, better take one bite of the elephant at a time.

Drupal performance tuning, development, customization and consulting: 2bits.com, Inc..
Personal blog: Baheyeldin.com.

bit about timing

sime's picture

If the timing suits kbahey, and an arrangement is made to do this in a short time, I will also contribute some funds.

Great!

kbahey's picture

Yay!

The more the better.

Anyone who is interested on working on this (sammys, are you?) please contact me privately for a rough estimate, so I can factor it in the quote.

Drupal performance tuning, development, customization and consulting: 2bits.com, Inc..
Personal blog: Baheyeldin.com.

Working on these new features

sammys's picture

I'm planning to do the work for this yes. It's going to be two stages. First stage is to implement the modules we require for 4.7 and the second is the development of the 4.8 version. Here's the scoop: we're going to make e-commerce work on the actions and workflows model! You read it first right here on groups.drupal.org! :)

The actions model will be only implemented for 4.8+. Sorry for all those that are hoping it'll be for 4.7.

For 4.7 we're going to follow the specification document (now due for a revision) in this thread.

--
Sammy Spets
Synerger
http://www.synerger.com

--
Sammy Spets
Synerger
http://synerger.com

So, subscriptions for 4.7?

kbahey's picture

So, does this mean that subscriptions via Paypal and COD will make it to 4.7, including role granting/revoking?

If so, let me know the time frame.

Contact me via 2bits.com for details and discussing timeframes and possible funding.

Drupal performance tuning, development, customization and consulting: 2bits.com, Inc..
Personal blog: Baheyeldin.com.

Yes to some of it

sammys's picture

I'm not going to implement Paypal Subscriptions at this stage. Isn't COD support already in 4.7? Support for recurring payments will be added (in the form of hooks/functions - yet to be decided). I'm heading to Melbourne in a week and meeting with Gordon. We haven't planned to discuss this design yet, but I hope we get a chance. All those in favour say, "I"!

--
Sammy Spets
Synerger
http://synerger.com

I

sime's picture

I

I

coupet's picture

I

Bugger, I knew there was

sime's picture

Bugger, I knew there was something we didn't discuss.

actions and workflows model

coupet's picture

we're going to make e-commerce work on the actions and workflows model!

Would expand and ease development features of E-commerce.

Excellent design approach!

Darly

Two cents more

marcoBauli's picture

Howdy,

i am a bit reluctant to post in the "cave of giants", since i am no coder at all.

Still i am following the Role Membership discussion on Drupal.org since some time, so why not step up and stick my (inexpensive and easily trascurable ;) two lines from a user point of view?

  • About role expiration: when roles are stripped from users upon expiration, to which lower role are they demoted? Just to the "authenticated user" one?
    If this is the case, it would be nice to have a default "demoted" role specificable by the administrator. This is usefull in sites where users roles are separated from advertisers roles, to prevent demoted users to end-up as generic authenticated users.

  • About "Trial purchases allowing different (e.g. introductory) pricing " (#14): i would allow also different pricing (e.g discounted) for recurring purchases if possible, so to incentivate users to renew.
  • Admin reports: maybe this is more of an optional suited for 4.8, but an "admin report" panel would be desirable, showing resuming and statistic data (e.g. Total subscribers per role, New subscribers this week/Month, Suspended subscribers)
  • Possible conflicts: since the main use of this mod is to block access at some levels, someone in a thread (can't remember who or where) pointed out that Role Membership shouldn't conflict with other node access modules as Organic Groups, TAC, CAC, and similars. Carefull, i don't know what i am talking about here!



Pardon if this post lacks depth of vision or knowledge, but if there is something to say is better to do it now here. Big Thank You to all the people involved and to Sammys for the thoughtful document!

Marco
(Drupal.org: kiteatlas)

thanx

sime's picture

Thanks for the input Marco - these look great.

Or, wait, I could say "Bah, what do non-programmers know about the real world." ;-)

Some overlap

Jeff Veit's picture

There's some overlap with this one:
http://drupal.org/node/73727#comment-138769 which implements Paypal subscriptions.

diff

mwu's picture

they are significantly different in that sammy's would be integrated with the drupal ecommerce suite of modules, and the lm paypal modules are not integrated.

Version 4.7.2 of the specification is now available

sammys's picture

You'll find the new file here.

--
Sammy Spets
Synerger
http://www.synerger.com

--
Sammy Spets
Synerger
http://synerger.com

Using Actions for Role Assignment

Darren Oh's picture

Is there a draft of the ec_roles module? I'm trying to update the OG Promote module to provide the same features to groups that you describe for products. Roles would be based upon group membership rather than product purchase. Could a more general solution be provided by adding role assignment to the actions module?

Roles for groups

sammys's picture

Hi Darren,

The move to actions will be the major part of the next e-commerce release. I'm building this for 4.7 and the main driver is cleaning up the e-commerce core ready for the switch over to an actions/workflow design. We'll keep this in mind for the next release so thanks for pointing this out!

--
Sammy Spets
Synerger
http://www.synerger.com

--
Sammy Spets
Synerger
http://synerger.com

User Account Provisions and Anon Purchases

neclimdul's picture

I was under the impression that anonymous purchases where going to be removed in the next release of E-Commerce. However I don't see how we could sell user accounts without anonymous purchases as outlined in this spec.

A better solution would seem to be using role purchasing with authenticated users having the same permissions as anonymous users but if user account provision is a required feature we may need to look deeper.

One other question I was left with was how expiration would be handled. Are the individual modules left to setup an expiration warning system or will there be something built into the ec_recurring.module and handled by the recurringapi hooks?

Looking good though. The outline of requirements is starting to look very solid and I know I'm not the only one looking forward to getting in and getting this coded.

Anonymous purchases and expiration

sammys's picture

Thanks for looking through the specification @neclimdul and @darrenoh.

You're correct @neclimdul. We are stripping the anonymous purchasing out of e-commerce. However, I believe purchase of user accounts can be implemented in a way where it's not considered an anonymous purchase. I'll be discussing this with Gordon when he gets some time. Gordon is a staunch advocate of the solution you're suggesting - only authenticated users can purchase. I'm not convinced (yet) that it's the only solution so the conversation must be had! I'm not stubborn. No really i'm not! hehe :)

Expiration will be handled through the cron hook and ec_recurring will handle the warning emails (reminder emails in the specification) with their scheduling. This is going to be fairly tricky to do well (i.e big trade off between simple implementation and efficiency).

--
Sammy Spets
Synerger
http://www.synerger.com

--
Sammy Spets
Synerger
http://synerger.com

purchase of user accounts

mwu's picture

Sammy,
I did a lot of searches and finally found this paragraph you wrote.
http://groups.drupal.org/node/952#comment-3202

I'm setting up a system where users buy accounts. After they pay for an account, they can register. It doesn't work for me, to have them register, then pay for the account. I can't find anyone who can think of a way to implement this. You said it can be done. what is the way?

thank you.

Code it or wait :)

sammys's picture

Hi @mariun,

The only way to do this with the current (as of Sep 22) 4.7 release is to write some custom code. At the end of the month, the user account provision stuff i'm writing will help you achieve your goal without writing a line of code. Care to contribute some funding?

Cheers,

--
Sammy Spets
Synerger
http://synerger.com

--
Sammy Spets
Synerger
http://synerger.com

Walt Esquivel's picture

Hi Sammy,

You wrote:

We are still looking for more sponsorship for these features as the time required to make them haven't been covered. Please contact me through my groups.drupal.org or drupal.org contact page to pledge.

Please be sure to add any funding requests to Projects Needing Financing. I hope it helps.

Good luck and I hope you receive some additional donations. Thank you for all that you do for Drupal!!!

Incidentally, I added a comment to Dries' "Code freeze in preparation of Drupal 5.0.0" posting. Could you perhaps touch a bit on this part of my posting? If I understand how things work, I would be able to assign users to a specific role such as a "Platinum", "Gold", "Silver", or "Bronze" plan based upon which plan they paid for, correct? So if they paid me $49 for the "Platinum" plan, I could automatically assign that customer to the "Platinum" plan, correct? Here's what I wrote:

- usability:
* made it possible to instantly assign roles to newly created user accounts
(Cha-ching! I think this will be an excellent tie-in with the ecommerce module! Customer pays for "Platinum Plan" and gets placed into "Platinum" category with all its associated perks...)

Thank you in advance for your feedback!

Walt Esquivel, MBA; MA; President, Wellness Corps; Captain, USMC (Veteran)
$50 Hosting Discount Helps Projects Needing Financing

Walt Esquivel, MBA; MA; President, Wellness Corps; Captain, USMC (Veteran)
$50 Hosting Discount Helps Projects Needing Financing

Role assignments

sammys's picture

Hi Walt,

You're correct that those role assignments will be possible once payment is received. Since this is such an important feature to you perhaps you can contribute some funds?

--
Sammy Spets
Synerger
http://synerger.com

--
Sammy Spets
Synerger
http://synerger.com

I'm happy to donate

Walt Esquivel's picture

I just donated to the OSL Rackathon, but I'll make a small donation to this e-commerce project once I've received a few more web hosting affiliate sign-ups.

Thank you for all your excellent e-commerce contributions!

UPDATED Sep 8, 2006:
OK, I made my contribution and I hope it goes towards helping you further build the ecommerce module into the best ecommerce solution for any CMS!

Walt Esquivel, MBA; MA; President, Wellness Corps; Captain, USMC (Veteran)
$50 Hosting Discount Helps Projects Needing Financing

Walt Esquivel, MBA; MA; President, Wellness Corps; Captain, USMC (Veteran)
$50 Hosting Discount Helps Projects Needing Financing

Call for collaborative funding

mariano.barcia's picture

Dear all consultants/execs,

I want to ask for your help here. Sammy Specs from Synerger will be working on this important functionality of e-commerce, and I will be helping him with some funds.

However, I cannot contribute as much $$$ as I wish. I would like to kindly ask everyone interested/benefited to pledge a contribution in order to reach 100% of the budget. More little contributions of more people will make this module better, will make the community stronger and will make our businesses grow bigger!

Please contact me or Sammy for more details, thanks very much

Budget

AgnesCB's picture

So what is the budget at this point?
And, being unfamiliar with the process, how does the pledge system work in practical terms?

The budget

sammys's picture

The pledge system is very simple. You pledge and pay an amount at your discretion (after contacting me directly to find out which paypal address it goes to). You feel warm and fuzzy inside because you've done the right thing. Your name (or company name) is enshrined in the history books and folklore of Drupal E-Commerce forever.

Some questions to ask yourself:

  • How much would I expect to pay a developer to get these features built in?
  • How much would I expect to pay an E-Commerce maintainer to get these features built in?

The second one will give you the highest quality code and a guarantee that the code is upgraded with future releases. How much is that worth to your organisation? Let's examine this more carefully.

Say you have a website that doesn't require anything during a one year lifespan. Your calculations figure that you have started getting a return on investment (ROI) from the original cost of the site. Great stuff!

Unfortunately, those pesky Drupal core maintainers have decided to release two new major versions of Drupal during those twelve months (just like they will have in 2006) and you have to pay your developer to go through all that spaghetti code they wrote and upgrade it - twice! That'll easily set you back US$500-US$1000 for just the features we're talking about here.

Now there may be some of you out there that are sceptical. Is that money really going to result in development being completed and upgrades being performed? Well, my answer to that is pretty blunt. My name is on all of this (not to mention my company name). I'm not about to ruin the reputation i've built over a lifetime for a few thousand $$.

Cheers,

--
Sammy Spets
Synerger
http://synerger.com

--
Sammy Spets
Synerger
http://synerger.com

Walt Esquivel's picture

I made a minor donation to this project months ago. Could someone please update me on where we are?

I'm still looking for an affordable solution. If we need additional funding for this project, please update Reverse Bounty Status of Projects Needing Financing. I'll donate $100 if I can be assured we'll get this project finished to include recurring credit card billing without end-user interaction while storing the credit card info on someone else's server such as PayPal's. I hope we can get a few interested parties to chip in financially and a developer or two with some interest in coding this need.

For my subscription-based members, I need an open-source shopping cart or a Drupal module that will allow credit card payments on a recurring basis without end-user interaction, preferably on someone else's server such as PayPal's (I prefer to NOT store credit card numbers on my database due to security issues with hackers and potential liabilities if credit card numbers get stolen). I also would like the functionality to allow my currently signed-up web site users to sign up for a subscription, be charged, and for my customers to then be able to see their subscription status (amount paid, date signed up, expiration date, etc.) somewhere from within their Drupal account.

  1. Does anyone know if there is ANY Drupal module that does recurring billing via a credit card? Has anything in the Drupal ecommerce module been updated within the last few months to allow this? It seems it's functionality that's been identified as a strong need for quite some time but yet has not been properly addressed, at least not to my knowledge.

  2. LM_PayPal, a completely separate module from the Drupal ecommerce module, apparently does NOT support recurring debits via a credit card. 2.a. What about using the Drupal ecommerce module with Authorize.net's Automated Recurring Billing for recurring charges (e.g., monthly) via a credit card? 2.b. What about using the Drupal ecommerce module with PayPal's Subscriptions and Recurring Payments for recurring charges (e.g., monthly) via a credit card if I, as a merchant, have a PayPal Business Account? I have a few additional related comments here.

  3. Does anyone know if there is ANY open-source shopping cart that does recurring billing via a credit card? If so, are there any examples you can include of that shopping cart working (integrated) with Drupal?

Thanks in advance & Happy New Year!

Walt Esquivel, MBA; MA; President, Wellness Corps; Captain, USMC (Veteran)
$50 Hosting Discount Helps Projects Needing Financing

Walt Esquivel, MBA; MA; President, Wellness Corps; Captain, USMC (Veteran)
$50 Hosting Discount Helps Projects Needing Financing

Automated billing of recurring products

sammys's picture

Hi Walt,

Presently, the recurring system doesn't entirely support automated. This due to time constraints (both in time available for me to develop and time before EC5 is due out). There is currently some support in the system for this but automated billing (done properly) will require some refactoring of the payment system, which is much needed.

That said, it's not impossible to get automated billing working in the oncoming version of EC 4.7-3.x and 5.0. You'll need to pay a programmer to do it and it'll most certainly cost you more than $100 (which btw is around 1 hour). A programmer needs an hour just to setup their development environment and liaise with the client.

Cheers,

--
Sammy Spets
Synerger
http://synerger.com

--
Sammy Spets
Synerger
http://synerger.com

Walt Esquivel's picture

Hi Sammy - Thanks for the update and I see you're making good progress!!!

To anyone reading this - Yes, I'm interested in pursuing the ability for my web site users to subscribe via "automated recurring payments" which a subscriber would make via his/her credit card onto a system such as PayPal, etc., so that the credit card is not stored on my server (to avoid security breaches, hackers, etc.).

  1. If you're a developer and feel you could code the necessary functionality, please post your preliminary specs here and be sure to include initial cost estimates. Hopefully, folks will step up and donate as they see fit once you've got the necessary guidance from the community to flesh out the specs. Be sure to include a PayPal account which, I have found, is a relatively easy way for folks to donate. I'll update the Reverse Bounty Status of Projects Needing Financing as necessary once we get going. Thanks in advance.

  2. If you're a user like me who could use "automated recurring payments" functionality and would be interested in making a small (or large!) financial donation to get this project completed, please "reply" to this post. We can figure out pledge amounts once we know how much this project will cost via the developer(s). Thanks in advance.

Walt Esquivel, MBA; MA; President, Wellness Corps; Captain, USMC (Veteran)
$50 Hosting Discount Helps Projects Needing Financing

Walt Esquivel, MBA; MA; President, Wellness Corps; Captain, USMC (Veteran)
$50 Hosting Discount Helps Projects Needing Financing

Automated payments

sammys's picture

Reading through my response I realise now that recurring payments implementation requires some explanation.

There are two major components required to get recurring payments to work. One component is a module to handling the payments themselves (1) and the other component handles the management of the payments (2). Payment handling is done by the payment modules that already exist in Drupal E-commerce. Management of recurring payments is done by a new automated payment module. Another way of looking at it is:

  1. Payment module (gateway specific)
  2. Automated payment module (generic)

Synerger is currently developing a module for managing recurring payments (2). Automated payments require special API and more robust code than what can be provided for free. Addtionally, this will generate some money for us to keep improving E-commerce. We are aiming to release the module for sale mid-February. The features we're including will make it worth your while and the code will be actively maintained.

The E-commerce recurring subsystem and all payment modules will still function as they do now without the automated payments module. We won't be restricting the current feature set in any way. See the list of CANs and CAN'Ts in the top section of this thread.

I hope this clears things up a bit!

--
Sammy Spets
Synerger
http://synerger.com

--
Sammy Spets
Synerger
http://synerger.com

Thanks for clarifying this

sime's picture

Thanks for clarifying this sammys. The "Can and Can't" list at the top is really helpful to get all these concepts straight in my head.

Christoph C. Cemper's picture

Sammy, no offense, but judging from you sentence

  • The E-commerce recurring subsystem and all payment modules will still function as they do now without the automated payments module.

it seems like we have a different understanding of automated payment

EC doesn not support automated payments via CC currently, nor does it support vendor specific APIs like Worldpay futurepay

In general many of those payment gateways have different APIs for automated recurring payments (as paypal subscriptions got diff IPN calls)

So how on earth do you plan to support multiple auto-bill gateways with your generic module?

In short - as I stated in several places I am interested in getting WorldPay Futurepay or another automated credit card billing solution that works in Europe

If you can provide that, I'm buying

best, christoph

PS: some of my other threads/comments/insights

http://drupal.org/node/72517
http://drupal.org/node/32187
http://groups.drupal.org/node/2447

Christoph C. Cemper
- the http://www.marketingfan.com

Christoph C. Cemper

General Manager of CEMPER.COM Internet Marketing Services
running Internet Marketing Fan Blog and a lot of other Drupal sites