The purpose of this page is to introduce and begin to address some of the issues of dealing with secure online transactions. The basic process of an online transaction is explained, and some of the specific technologies that relate to ecommerce are explained as well. A good starting point for those interested in developing or opening an online store.
To fully automate online ordering a store must have an SSL certificate and webspace set up to use it, a Payment Gateway, an Internet Merchant Account and shopping cart software that lets all these work together. The basic flow of an online transaction is as follows:
The first thing required in an online transaction is that the end user must be able to, well... shop. This is where many of the technologies we've learned in this course come into play. Usually a store has a server database back end that holds all of the products for sale, and JSP, ASP, ColdFusion, PHP, or some other web development language is used to create the HTML and StyleSheet formatted storefront. If the inventory is small and static it's possible to do this without a database back end but rarely would this be a good idea in the long run.
Here as well the same technologies we've learned can be put to use to create a shopping cart. This is what the user uses while shopping to keep track of what they want to buy. There are many different ways of implementing this and the complexity of a well built Cart can become great. For this reason many companies offer pre-made carts you can install on your website and customize. Some you have to buy, but many (PHP) carts are free and come with most hosting plans (even ones that don't have enough features to use the cart). These are usually set up so that you can easily interface the cart with whichever Payment Gateway you are using.
This is the online credit card processor or transaction handler which is capable of hooking into credit card accounts belonging to the online shopper and the merchant's internet merchant account. It handles and approves the transaction.
This is a separate bank account for the merchant that is approved and capable of receiving credit card payments from credit card providers. Internet merchant accounts typically do not hold funds for an extended period of time such as your typical bank account but usually transfer payments to another bank account designated by the internet merchant on a daily basis
Of course many companies offer a bundle of the last two services, often at a discount. One stop solutions like this can be convenient as well.
There are 3 primary components to the standard merchant account fee structure:
These same items apply to the payment gateway fee structure:
One last time, this is the JSP, ASP, Perl, PHP, or whatever your language of choice is. With these you allow the user to select items and place an order. These technologies are what send the information to the Payment Gateway, store things on the server, etc. It's mostly server side, so if your server is secure then the transaction is secure and no one gets ripped off, right? Well... the date has to get from the user to the server. There are all kinds of things on the internet just waiting to intercept personal information like credit card information. So how does this information make the journey safely?
SSL stands for Secure Socket Layer. The basic idea of it is simple:
Once the handshake has been made, the server and the client's web browser talk back and forth via the HTTPS protocol, using the master key they agreed upon to encrypt and decrypt all of the data being exchanged. This is when you see the little Lock in the bottom corner of your web browser.
For servers to understand and handle SSL they usually need to be set up a bit differently. You can buy SSL server extensions and the like but there are open source ones as well including Apache-SSL, a specific fork of Apache for this purpose.
Now, how do you know, as a customer, that the certificate is worth anything? There are a few companies that serve the purpose of verifying a company's legitimacy. Some of the main ones are (you've heard of them I'm sure) Verisign, Thawte, Entrust, Geotrust... there are others. In exchange for a fee, they will vouch for your business and provide and SSL certificate the client can look at before making an SSL connection. Most browsers automatically handle Verisign and other certificates, but if it's from an unknown company your browser should alert you so you can read and investigate.
An SSL Certificate is directly tied to a domain name, which in turn is tied via nameservers to and IP address. Thus, to get an SSL certificate, you need a static IP server. Bad things happen when more than one SSL certificate are set up on the same IP. This rules out the cheap shared hosting plans then.
There is the option of a shared Certificate though. This is kind of clever trick using subdomains. For instance maps.google.com versus www.google.com. Google.com can have one SSL, but if it's a Wildcard Certificate it will allow handshakes on all of the subdomains. This is often cheaper, but not quite as trustworthy as having your own Certificate.
In a SSL server-client transaction, the data can be encrypted by a number of different techniques:
The encrypts and decrypts of an HTTPS call take up processor cycles, and lengthen the load times on pages, but until you are dealing with a huge site it's not noticable. For this reason I have not investigated speed issues with SSL. Though obviously 128-Bit encryption, or Triple DES will take longer (but be more secure).
This short information sheet is not on encryption, the one-way or the two-way variety, so I don't address it in any more detail than this. The point is that this is where it happens, in the SSL.
There is ongoing debate about the retainment of sensitve information on servers, becuase it can get stolen off of servers. Happens all the time. The safest thing to do seems to be to discard the card information after each transaction. If it must be stored, I read various solutions like keeping half of the number in one database, and the other half in another... I don't know. If you encrypt the information and store it in a secure database on a secure server, you SHOULD be fine, but if information theft occurs... it's your fault.
Here, P2P stands for Person to Person, instead of Peer to Peer. The quintessential example of a P2P service is PayPal. Once the merchant or customer has set up their bank account information PayPal can handle all of the rest, a direct payment from the customer into the bank account of the merchant. The idea is that it's almost like two people simply exchanging money.
A quick and easy way to start doing online transactions is through a 3rd party service. After a point it becomes cheaper for your store to do all of it's own credit card handling, get a merchant account and the like, but for speed and ease of set up this takes the cake. A simple rundown of how it works:
Basically, the 3rd party handles all of the transactions, they are the "seller", and they pay the actual merchant who becomes almost like a supplier.
More as a side note, it's possible to only accept orders via mail or phone (which is actually how the government classifies online business for legal purposes - MOTO: Mail Order and Telephone Order). No matter what service you are using, credit card fraud can still occur.