View Issue Details

IDProjectCategoryView StatusLast Update
0000263Composrecommercepublic2017-03-29 00:44
ReportermythusAssigned ToChris Graham 
Status resolvedResolutionfixed 
Product Version 
Target VersionFixed in Version 
Summary0000263: Purchase to Download - attach downloadable files that must be purchased before downloading

Back in version 4 when I originally advocated for a native Composr shopping cart, the only ecomerce was dealing with points system and paid subsriptions type of thing. At that time one would need to use an outside ecommerce product for a shopping cart and such.

Later on you brought in a shopping cart, which is great. I much rather use only one tool for the site than to have to bridge tools. But there is one thing that still is missing. That is... being able to pay for an item and then download it.

This is something that exists in various other ecommerce solutions and CMS'es that have ecommerce, something that I am surprised doesn't yet exist for Composr. Being able to have downloaded media that you can sell per item is one of the basic aspects of internet buisness IMO. It is something that I sorely need for my site and something that would be appreciated by a large multitude of sites.

As it stands right now, to sell my ebook I have only two choices not counting bridging with an outside ecomerce tool....
1.) Have them make the purchase and then manually email the file to them
2.) Put it in downloads with permissions set for a specific group and make that group be a subscription group.

Neither really work nas well as I would want. In a day when so many are used to getting instant results, having to wait for me to send them an email of the file after they have paid for it seems odd. So why not put in a field that allows one to upload a file that can be downloaded after payment is processed?

This would serve many different types of sites and situations. Site builders would be able to make their unique gallery artwork a purchasable download. Theme makers could make their commercial themes and sell them through Composr. eBooks and other electronic media, which is playing an ever increasing role in todays market with smart phone and tablet users, would finally be able to be sold from Composr sites.

Yes, this could potentially be an add on. However I feel very strongly that this should be a part of the core shopping cart. I feel that this should be a function of the shopping cart.

Anyways, this is my feature request. This is the one thing I think that Composr needs that has been missing. Hopefully the need of it can be seen and this can be made a reality. Regardless, thanks for your hard work and for this fine product.
TagsType: Usability (major)
Attach Tags
Time estimation (hours)5
Sponsorship open

If users wish to sponsor this issue (optional, some issues are implemented without sponsorship)...
If users wish to sponsor this issue (optional, some issues are implemented without sponsorship)...


related to 0000063 closedChris Graham Multi-categorisation 
related to 0002131 non-assigned Banner subscriptions 
related to 0000830 resolvedChris Graham Points discount for eCommerce items 
related to 0000123 non-assigned Gift vouchers 


Chris Graham

2011-05-15 18:13

administrator   ~0000144

Ideally we want to properly bridge the pointstore and ecommerce systems, to have just one kind of product purchasable either by points or by real money. This isn't so simple, it involves lots of DB and UI changes. Obviously any particular item should not automatically be available by both.

A workaround until the day we hopefully can implement this...

You could consider setting up PayPal button code manually into the DOWNLOAD_SCREEN template, and then setting up an auto-responder on your email address (pretty sure gmail can do this) that auto-sends out the media. You could have different buttons in different places, possibly putting the download title into the PayPal code and then making the auto-responder trigger based on the combination between that and the money received.


2012-01-26 14:15

reporter   ~0000307

How do I add a vote for this?

Chris Graham

2012-01-26 14:18

administrator   ~0000308

You just did by 'Monitoring' :). We hjiacked that mechanism to mean 'vote' (technically some people will monitor it because they want to check it's not being implemented, but I think statistically that's not going to cause a problem, and people can leave notes too)

Chris Graham

2012-05-11 17:38

administrator   ~0000462

This is now partially done. It's in non-bundled addon form in the development repository, and I'm attaching it here.

It is a working system for selling downloads.

This tracker issue will stay open, as eventually we want to remove the point store entirely and just have it as part of the eCommerce functionality (with points as a substitute for money).

Chris Graham

2012-05-11 17:38


download-purchase.tar.gz (96,426 bytes)

Chris Graham

2012-05-11 17:38


explanation.txt (4,910 bytes)

Deliverables produced:
 - Updated permissions pointstore products that allow defining an email of instructions sent to the purchaser
 - Removed previous necessary timeout of permission products after defined number of hours passes
 - Support for the permissions pointstore products in the eCommerce system (non-bundled addon)
 - A points/currency conversion factor config option
 - Modified member profiles, to show downloads you have access to
 - Integrated signup into purchase module
 - The explanation below


STEP 0 (initial config):

Set up PayPal as normal in the ocPortal configuration.

STEP 1 (upload):

Upload the attached new/updated code files from download-purchase.tar (compatible with v8).

STEP 2 (upgrade):

The points and pointstore modules are version-bumped, so you'll need to call up the upgrader and run a "Do a database upgrade" step (step 5).

STEP 3 (config):

See step3.png to understand how the points/currency conversion factor config option works. As you can see, an intuitive default has been chosen, so you can leave as is.

STEP 4 (downloads):

Create download categories for each product. I note you may have a "bulk purchase" option -- make a category for this. We'll need to duplicate entries into that category (a fudge, but K.I.S.S.). When you create the categories, make sure to untick all the "View access" check boxes under "Permissions", i.e. no default view access to anyone. Note down the IDs of the categories by looking at the IDs in the 'edit this category' URL after you add each.

(For the purpose of screenshots for your explanation I am making a single download category entitled "Example purchasable", ID#3)

Add your downloads to your download categories.

STEP 5 (products):

(See step5.png for reference)

Go to...
Admin Zone > Setup > Point-store inventory management

On this screen, look under "Add", and then under "Add new permission product", expand the settings.

Fill in the form:
 - The Title is the name of the product
 - The Description is shown in the purchase module after selecting the product (or when you link direct to that step of the wizard in your case)
 - The cost is in pennies/cents due to our points/currency conversion factor option
 - "Permission type" should be "Category-access"
 - "The zone" can be left as "Welcome"
 - "The module codename" should be "downloads"
 - "The category" should be the category ID you added

I choose to set "Confirmation e-mail subject" as "Access to your document has been granted".
and, "Confirmation e-mail body" as
"Collect your download from the downloads area of your account:


(Repeat for all your products / download categories)

STEP 6 (enabling purchase):

Manually call up the purchase module (it is not linked into any menus by default)

You'll see your product(s) in the list.

Or if you like you can call a filtered view of the same:

You now have a choice, how exactly you will link people through to the purchase module:
1) To the list of (probably filtered) products
2) To the product description of each product separately
3) To the purchase page for each product separately
4) Avoid the purchase module entirely, use PayPal button code directly somewhere else [possibly a bad idea, as it will bypass the integrated OCF signup code]

For 1/2/3 you simply grab the URL(s) from your browser's address bar for the step you want. Link to it from your menus/Comcode as appropriate.

For 4, you can grab the PayPal button HTML from the next step and use it directly. Don't worry, it's safe for this particular payment hook, with one exception... 
<input type="hidden" name="custom" value="2" />
needs to actually be...
<input type="hidden" name="custom" value="{$USER*}" />
So that the purchase is assigned to the active user, and not your own admin account!

STEP 7 (obtaining purchases):

This is more of a note. The purchased downloads could be accessed from the downloads module, but we've also placed a new tab in member profiles. The "Confirmation e-mail body" I used in Step 5 informed the user of this and linked them to it directly.

STEP 8 (customising layout):

You may want to disable the "Reveal usage figures" option to stop the download counts being shown to the customers.

If you want to customise the layout further, edit the DOWNLOAD_BOX.tpl template.

STEP 9 (manual transactions):

If you need to manually grant a member a purchase (e.g. if they paid by cheque), go to:
Admin Zone > Setup > eCommerce > Manual transaction

Choose your product.

Put in the member's member ID as the Identifier.

Click Manual Transaction.

The member will be e-mailed to tell of their purchase, and granted access, exactly as if they had gone it themselves through the purchase module.
explanation.txt (4,910 bytes)

Chris Graham

2012-05-11 17:39


step3.png (309,053 bytes)

Chris Graham

2012-05-11 17:39


step5.png (873,515 bytes)


2012-05-11 22:42

reporter   ~0000463


RE: STEP 4 (downloads):

Create download categories for each product. I note you may have a "bulk purchase" option -- make a category for this. We'll need to duplicate entries into that category (a fudge, but K.I.S.S.).

Am I correct that the duplicate entries would not be necessary if the multi-categorization feature was in place?

Chris Graham

2012-05-11 22:43

administrator   ~0000464

If multi-categorisation was implemented for downloads, you're correct yes ;).

Chris Graham

2016-11-21 15:38

administrator (154,053 bytes)

Chris Graham

2016-11-21 15:39

administrator   ~0004564

Old 4.3 code attached ( for a fork we had. Probably of little to no use now, but may be worth reviewing.

Chris Graham

2016-12-14 23:06

administrator   ~0004641

We're seeking sponsorship of this issue currently, and Jason was kind enough to be the first to chip in.

If sponsored I'll make sure a clean implementation is done, nicely bridging the point store and eCommerce store systems.

Further discussion is on this forum topic:

Chris Graham

2017-01-01 14:56

administrator   ~0004659

Thanks for the sponsorship moimaim :)!

Chris Graham

2017-01-03 21:25

administrator   ~0004665

This is now sponsored :). Thanks to TQ, who made a donation, which I've funnelled into sponsoring this.

Chris Graham

2017-01-25 17:13

administrator   ~0004706

This is now implemented in the feature__pointstore_merge branch on github, which will be merged into the v11 branch at a later date. I'll be posting a news announcement about it on the forum.

Chris Graham

2017-03-27 00:59

administrator   ~0004902

It is likely this branch is going to become v10.1 (it has a lot more eCommerce work done now besides just this work), so I'll mark resolved as no merging is required for the initial delivery.


2017-03-29 00:44

administrator   ~0004918

Nice to know we will be getting this sooner rather than later. Thanks for the sponsorship guys and thanks for all your hard work Chris and team.

Issue History

Date Modified Username Field Change
2016-11-21 15:38 Chris Graham File Added:
2016-11-21 15:39 Chris Graham Note Added: 0004564
2016-11-25 20:30 Chris Graham Relationship added related to 0000830
2016-11-25 20:31 Chris Graham Relationship added related to 0000123
2016-12-03 04:17 Jason Verhagen Sponsorship Added Jason Verhagen: GBP &pound 55.00
2016-12-03 04:17 Jason Verhagen Sponsorship Total 0 => 55
2016-12-14 23:06 Chris Graham Note Added: 0004641
2017-01-01 11:54 moimaim Sponsorship Added moimaim: GBP &pound 55.00
2017-01-01 11:54 moimaim Sponsorship Total 55 => 110
2017-01-01 14:56 Chris Graham Note Added: 0004659
2017-01-03 21:24 Chris Graham Sponsorship Added Chris Graham: GBP &pound 55.00
2017-01-03 21:24 Chris Graham Sponsorship Total 110 => 165
2017-01-03 21:25 Chris Graham Note Added: 0004665
2017-01-14 14:02 Chris Graham Tag Attached: Type: Usability (major)
2017-01-25 17:13 Chris Graham Note Added: 0004706
2017-03-27 00:59 Chris Graham Note Added: 0004902
2017-03-27 00:59 Chris Graham Status non-assigned => resolved
2017-03-27 00:59 Chris Graham Resolution open => fixed
2017-03-27 00:59 Chris Graham Assigned To => Chris Graham
2017-03-29 00:44 KingBast Note Added: 0004918