Universe Admin: Setting Up For Registration

By default, the Active Worlds UniServer runs in "free immigration" mode. This means that any tourist who enters the system can create themselves a citizenship for free by pressing the "Immigrate" button on the browser's toolbar.

If you wish to charge for citizenship in your universe, the UniServer has the ability to accept credit card payments for citizenships and process them automatically. However, this functionality requires connecting your UniServer up with a online credit card service. Once you have set up an account with such a service, your UniServer can talk directly to their transaction server in order to process live credit card transactions.

Once you have a credit card account, enabling for-pay registration in the universe requires the creation of a [billing] section in the universe.ini file. A typical [billing] section might look like this:

[billing] host=www.myuniverse.com port=80 url=path/to/AwSkipJack.php notify=charges@myuniverse.com notify_file=/tmp/notify log=billing.log term=366 trial=14 charge=19.95 mcharge=19.95 acharge=19.95

The host=, port=, and url= fields specify the server and URL to which the UniServer should POST the completed credit card request and wait for a response. When using a SkipJack account, the host is your web server, and the url is the path to the AwSkipJack.php file on your web server.

In 3.4 the charge= field has been replaced by mcharge= and acharge=. These values contain the amount to charge per citizenship in US dollars. mcharge is used for monthly registrations, acharge= for annual. If charge= is specified it is used as the default for mcharge= and acharge=.

The trial= field specifies the free trial period in days. This value is passed to the URL specified by host=, port=, and url= and is otherwised not used. It is up to the billing app to offset the billing if needed.

The term= field specifies the length of a citizenship in days. After this many days pass, the citizenship expires and the user will need to renew with another credit card charge in order to continue using their citizenship. The user will automatically begin to receive warnings in the browser on login if their citizenship expires in less than 30 days.

The notify= field specifies an optional email address to which the UniServer can send an automated notification whenever someone registers. Note that this mechanism requires that the ability to send email be correctly set up for the UniServer. The notify_file= field specifies the temporary file to use for the notify email.

The billing log

The log= field specifies the location and name for the billing log file. Whenever a user attempts to register a citizenship it is recorded in this log. A typical billing log entry might look like:

Sun 02/18/01 10:31:40 89.28.145.109:2339 BILL 'AWLD' 'Rocketman' 243192 '432140124212****' 'Adam Jones' '' '20 Aspen Ln' 'Springfield' 'PA' '12345' '326-6547' '5' '2002' - Y484789AUTH/TKT YY [0]

This entry gives the date and time at which the transaction occurred and the IP address and port from which it originated. After the BILL comes the optional browser vendor code which is useful if you have multiple distributors for your browser and you need to give credit to distributors for registrations received from their browsers. Then comes the citizen name, numer, part of the credit card number, followed by the billing name, address, telephone number, and credit card expiration date. The last portion of the entry is the response code from the credit card service, followed by an error code for the entire transaction as it was returned to the user's browser. A [0] indicates the transaction succeeded, the charge was accepted, and the citizenship was created.

Some possible billing error codes include:

[46] - Timeout. The UniServer timed out waiting for a response from the credit card script. This can occur if the web server hosting the script is having problems, or the credit card service is having a problem with their server, or if there is a problem with the internet connection anywhere between the servers.

[48] - Invalid response received (from credit card service). The most common cause for this is a problem in the credit card processing script on your web server, or a configuration problem on the web server hosting the script.

[51] - Unable to connect. The UniServer was not able to establish a connection with the billing host. Verify that your internet connection is okay and that the web server hosting the billing script is alive and responding. An easy way to do this is to open a web browser and type in the URL directly to your billing script.

[55] - The credit card was declined. Some part of the information was invalid, usually either the name, number, or expiration date. This is by far the most common error code.

If you are receiving an error code that is not listed above, contact support@activeworlds.com for assistance.

Blocking fraud

One frustrating aspect of administering a universe that accepts credit card transactions is fraud. On the internet it is relatively easy for unscrupulous users to acquire stolen credit card numbers and use them to register a citizenship. If the number has not yet been reported stolen, the charge may be approved, and you will not find out until later that the number was stolen, possibly requiring you to conduct an expensive refund process.

If you are having problems with fraud from a particular location or locations on the internet, you can have the UniServer automatically block any further registrations received from those IP addresses. To do this, simply create a file called "block.txt" and place it in your UniServer directory. Place any IP addresses you want to block from registration in this file, one per line. To block an entire "class C" address block, specify the last digit as 0. For example:

24.141.29.168 24.200.111.0

The first line rejects any registration attempts coming from the IP address 24.141.29.168. The second line blocks registration attempts coming from any IP address in the range 24.200.111.1 to 24.200.111.255.

It is not necessary to restart the UniServer after adding new entries to the block.txt file.

A more extreme approach would be to block the IP address out from accessing UniServer at all, from the Universe Ejections dialog.