Note: This feature is only available to customers on our Apache servers. Contact us to move your site or confirm that your site is on an Apache server. If you are on a CERN server and are looking for documentation on the CERN password protection scheme, please click here.
Mock Instant Stores example:
LIVE Instant Stores :
Similiarly, to see your source page, you need to FTP your source file to your computers. In particular, the view source option of your Web browser will not be able to display your source page, only the resulting HTML.
{command arg1 arg2 arg3}
If you wish to use a "{" in your HTML page, you must place a "\" before the "{" to tell HoloStore to skip the "{".
If you need to place a space in an argument, you must place a "\" before the space:
{command arg1a\ arg1b arg2}Or, you can place quotes around the spaces:
{command "arg1a arg1b" arg2a" "arg2b arg3}
If you need to place a quote in an argument, you must place a "\" before the quote.
{holostore ... }Using HoloStore you can place buttons or links that invoke the purchase sequence. Each page can have multiple purchase buttons or links. Each different item that can be purchased is given a unique name, or ID.
For example:
{holostore -i shoes ... }If you have multiple places a person can click to purchase an item, each place would utilize the same ID. For example, a person might be able to purchase an item by clicking on the picture of the item or on a purchase button. In this case both the picture and button would utilize the same ID.
{holostore -i carrots ... }
The first time you mention an ID, you must specify a simple description and price for the item:
{holostore -i shoes -d "Garden Clogs From Germany" -p 29.95 ... }
Finally, you must specify at least one of the following three behavoirs: charge the card, allow access to a protected area, and/or send e-mail.
To send e-mail we specify a comma seperated list of e-mail addresses:
{holostore -i shoes -d "Garden Clogs From Germany" -p 29.95
-e ,}
Note that there should be no spaces between comma seperated email addresses, because that would make them different arguments!
The default behavior of the holostore command is to create a purchase button:
{holostore -i shoes -d "Garden Clogs From Germany" -p 29.95
-e , -b "Buy Me"}
{holostore -i shoes -d "Garden Clogs From Germany" -p 29.95
-e , -s verbose}
<A HREF="{holostore -i shoes -d "Garden Clogs From Germany" -p 29.95
-e , -s url}">Buy Some Clogs</A>
{holostore -i shoes -d "Garden Clogs From Germany" -p 29.95
-anacom merchant password}
To charge the transaction via Credit Card Network, you must specify your Merchant id and password with the "-ccn" option:
{holostore -i shoes -d "Garden Clogs From Germany" -p 29.95You must obtain and use a password for "transparent" transactions from Credit Card Network. This password is not necessarily the same password you use for manual transactions.
-ccn merchant password}
Both options will add an additional input field to the bottom of the credit card form that will be presented to the user. For example:
{holostore -i shoes -d "Garden Clogs From Germany" -p 29.95This command requests that the user enter in their email address. However, with the '-f' flag, the field is optional. That is, if the user does not fill out the field, they will not be prevented from purchasing the item.
-e
-f E-mail}
To require that the field be filled out, use the '-F' option instead. However, even with the '-F' option, no checking is done on the field, so the user may enter any value they wish and it will be accepted without further prompting as long as they don't leave it blank.
You may add multiple -f or -F fields if you wish For example,
'-F email -f Age -f Weight' would prompt the user for their email address,
age, and weight. Because of the -F option, the email address would be required.
Password Protection
To provide access to a password protected area the following must be true:
The Apache Web server uses a different password protection scheme from the HoloNet standard CERN Web server. Eventually, all accounts will be moved from the CERN Web server to the Apache Web Server.
The full path of your password file will be similar to:
/www/sites/sitename/control/passwords/file
AuthType Basic AuthName Pictures From Germany AuthDBUserFile /www/sites/rocketshop/control/passwords/germany AuthDBGroupFile /www/sites/rocketshop/control/passwords/germany <Limit GET> require valid-user|group groupName[ groupName]* </Limit>
{holostore -i pictures -d "Pictures From Germany" -p 29.95
-a /control/passwords/germany 60 http://www.custom.com/protect/pictures/}
Note that you can use 'h', 'd', and 'w' at the end of this option as short hand for hours, days and weeks respectively. For instance '100' alone would allow access for 100 minutes, while '100d' would allow access for 100 days.
This option can be used to specify a level of access. For example, suppose your store sold panoramic pictures from Germany, with two pricing options: Silver and Gold. Silver is less expensive, but Gold gets access to additional pictures as well as the pictures that Silver users have.
On your store page, you would have have at least two holostore commands, one with the option '-g silver', one with the option '-g gold':
{holostore -i silverPics
-d "Pictures From Germany: Silver Access"
-p 29.95
-a /control/passwords/germany 60 http://www.custom.com/protect/silver/
-g silver}
{holostore -i goldPicsIn your protect directory you would have two directories, the silver directory and the gold directory. Both directories would have their own www_htaccess file.
-d "Pictures From Germany: Gold Access"
-p 59.95
-a /control/passwords/germany 60 http://www.custom.com/protect/gold/
-g gold}
However, the silver www_htaccess would have the lines:
require group silver gold
The gold www_htaccess would have the line:
require group gold
All the other lines in the two files would be identical. This would allow silver or gold users to have access to files in the silver directory, while gold users would have access to the files in the gold directory as well.
If you also wanted to sell upgrade packages from silver to gold, you could have another holostore command with the option '-g gold silver'. This would require that users purchasing this item must already be a member of the group silver, and would give them access to the gold group when purchased.
{holostore -i goldUpgrade
-d "Pictures From Germany: Upgrade to Gold Access"
-p 30.00
-a /control/passwords/germany 60 http://www.custom.com/protect/gold/
-g gold silver}
Presumably it would be priced as the difference between buying Gold access and buying Silver access.
{holostore -i pictures -d "Pictures From Germany" -p 29.95To construct a template page, construct a HoloStore document as normal, escaping any "{" as needed. Place the following command where you would like template forms to appear:
-a /control/passwords/germany 60 http://www.custom.com/protect/pictures/
-t template.holostore}
{holostore -t}The following is a complete sample template:
<HTML>
<HEAD>
<TITLE>Page Title For Browsers To Display</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<H2>Sample Template Header</H2>
The purchase forms will appear below this line.
<P>
{holostore -t}
The purchase forms will appear above this line.
<P>
<HR><A HREF="mailto:></A>
</BODY>
</HTML>
If '-persistent' is specified, no button or URL is output for that command. However, any option specified in the command is inherited by any holostore commands that follows it.
For example, suppose you wanted all your buttons to say 'Buy Me' instead of the default 'Purchase'. You could do this by adding the option '-b "Buy Me"' to all of your holostore commands, but this would be tedious.
With the persistent option, you could specify the following:
{holostore -persistent -b "Buy Me"}
All holostore commands that followed this command in your file would inherit the button name "Buy Me".
You can place as many flags as you wish with the '-persistent' option. For example, the following command would allow the button name, style, and price to be inherited:
{holostore -persistent -b "Buy Me" -s verbose -p 9.95}
Persistent commands have the following qualities:
{holostore -persistent -b "Buy Me" -p 9.95}
{holostore -persistent -p 20.00}
Any command between these two commands would inherit the button name "Buy Me" and the price 9.95.
Any commands after the second command would inherit the price 20.00, and also the button name "Buy Me".
Any invalid entries in this table also include an error row which will tell you what is wrong with the entry. For example, the following incomplete holostore command produces the following output:
{holostore -a bad_file}
| HoloStore Item | ||
|---|---|---|
| Field | Value | Error |
| id: | No id specified | |
| price: | Missing price (Example: 5.30) | |
| desc: | Missing description | |
| merchant|vendor: | ||
| merchant|id: | -HIDDEN- | |
| merchant|passwd: | -HIDDEN- | |
| remote|remoteURL: | ||
| remote|errorURL: | ||
| remote|errorEmail: | ||
| regNumF: | ||
| nocardB: | ||
| email: | ||
| accountB: | 1 | |
| account|passwd: | bad_file | File '/www/sites/holonet/http/support/holowww/holostore/bad_file' does not exist. Create a zero length file to initialize. |
| account|minutes: | ||
| account|url: | Invalid URL | |
| groups: | ||
| groups|required: | ||
| template: | ||
| buttonText: | Purchase | |
| logTabbed: | ||
| style: | button | |
| nocnpB: | ||
| title: | ||
| holosslB: | ||
| receiptB: | ||
| receiptF: | ||
| dontEmailCC: | ||
Each field that has an error is easily spotted. Notice that some options are required, like the price option. Other fields may have other problems. In the above example, the file 'bad_file' does not exist, and so must be remedied by creating the file.
NOTE: If you are using the '-s url' option, and have imbeded the holostore command in a HREF command, if the command needs to display errors in a table they will not look correct. This is because placing a table in a HREF is not supported HTML. However, while this is not aethetically appealing, you should still be able to determine the error and correct the problem.
If you prefer you can temporarily move the holostore command out of the HREF until you have fixed the problem.
{holostore -i item_id [-s[tyle] [button|url|verbose|debug]] [-b text]
[-d item_description -p item_price]
[-[eE] e-mail[,email]*]
[-(ccn|anacom) merchant_id merchant password [subaccount]]
[-a password_file minutes url]
[-persistent]
[-[fF] field]
[-[cC] field text]
[-t template]
[-lt file]
[-T title]
[-nocard]
[-nocnp]
[-holossl]
[-r] [file]
[-regnum] file
[-remoteNotify remoteURL errorURL errorEmail]
[-l[ogin]]
}
The following Credit Card Processors are currently supported:
Use the flag which corresponds to the service you wish to use.
NOTE: You must have an account with the service that you wish to use.
For bothe the group and required_groups field, multiple comma separated groups can be specified. Note that there should be no spaces beween the comma separated groups.
This file should contain the token {holostore -t} which will be replaced with the purchase form when the template is displayed.
If you wish the form to require that the checkbox be checked before allowing the user to purchase the item, use '-C' instead of '-c'
This flag may not be used with the -anacom or -ccn flag.
For technical reasons, store the must be under the 'www.holonet.net' URL while in secure mode using the HoloNet key (it does this automatically).
If a file is specified, the text of the file is added to the end of the standard email.
All Valid registration numbers must be listed in 'file'. Registration numbers may be any ASCII string, but may not include whitespace (spaces, tabs, returns). You may include multiple registration numbers per line, seperated by whitespace.
So for example, 'file' might contain the lines:
123 456 789
999 888 777
Each of these numbers would be a valid registration number.
Used registation numbers are placed in 'file.used', one per line. This file may be edited by the merchant as desired.
This flag may not be used with the -anacom or -ccn flag.
This option sets -nocard flag as a side effect.
When this flag is present, the the URL remoteURL is "touched" by the HoloStore (a HTTP GET command is issued) after each successful purchase, and given all the relevant parameters pertaining to the purchase. This allows you to use a HoloStore to purchase services you may have on web sites that are not on HoloNet.
remoteURL presumably is a cgi script that interprets the HoloStore parameters (passed in the Query String, e.g. remoteURL?parameters) and grants access to a remote service.
If the HoloStore is unable to touch remoteURL (due to a network failure, or whatever), the client is redirected to errorURL. That URL should be a page that notifies the client that they have been successfully charged, but that access will not be available for some period time (for example, within 24 hours).
In the case of such a failure, email with all the relevant purchase parameters is sent to the email address errorEmail. The recipient of this mail must manually grant access to the client.
NOTE: It would be wise for errorURL to be on HoloNet, or a provider different from remoteURL, so that the odds of both URL's being unreachable is minimized.An example CGI script which displays parameters is available at:
| remoteNotify.cgi?a=1&b=2 | (executable, for an Apache server) |
| remoteNotify.txt | (text) |