Our goal is to create a dynamic domain registration website based on PHP. The backend will be based on MySQL. The domain registration system will use the OpenSRS API. The OpenSRS API documentation can be found here: [url removed, login to view] . There is a OpenSRS API client written in PHP which is open source and is located here: [url removed, login to view] . The OpenSRS PHP client will be used, unless you have another alternative based on PHP.
The registration system should utilize cart-like functionality. When a user goes to the home page, he will see a domain availability search field. He’s able to select the TLD from a drop down menu. Once the search is submitted by the user, we will seek results using the OpenSRS API. Even though we request have a drop-down for TLD, we will return results for other TLD’s as well as suggested results also. Each domain name that is available will have a checkbox next to it, if selected, once the user clicks Add to Cart, the domain names will be stored in a cart (using cookies or sessions).
The next step will ask the user to select additional services and registration term. Additional services may include WHOIS Privacy (Including the term to purchase WP for) and DNS Management. Once the user has selected the options, they can Add the Items to the cart, or they can go to Checkout. Once they decide to checkout, they will be asked to Login. The users will be managed locally using mySQL. If they’re a new user, they must create a user account, contact profile(s) (for use when registering the domain names) and add a payment method.
If a user added a payment method of credit card, we would first attempt to charge the card for the total cart amount. If this succeeds, we will register the domain names and services selected. If a payment of Check is selected, we would move the order to the Pending Check Payments location.
All orders will be stored in our database. This information will be linked to each user account. This way users can search their order history and we can search the users order history as well. All orders will need to be checked for fraud, and our interface should allow us an easy way to do this.
Management of domain names will be based on user accounts locally. When a user account is created, they will be assigned a user id. When a domain name is registered or transferred by a user, the domain name will be assigned to that user, using a user id field. Since OpenSRS Domain names are based on username/password/domain name, we’ll also store the opensrs username & password within the database. When a user logs into his account, it will list all domain names in their account, using the information from our own database.
Unless changes are being made to a domain name, API calls should not be required. We want to limit the requirement for the API for simple queries. If someone is simply trying to retrieve their domain contact info, or domain name servers, etc…this is all stored in our database reducing the load on the API and making the results quicker.
When a user manages his domain name, he should be able to do virtually anything the API does. This should be a fairly straightforward aspect of development. Simple features to manage a domain name will need to be implemented, and more advanced features will come in the future. The required features for initial development will be: Lock/Unlock Domain, Change Contact Info (based on Contact Profiles), Change Name Servers, Create/Edit/Delete Domain Based Name servers, Manage DNS (OpenSRS based DNS), Retrieve Auth Code, Set Auth Code. These are the absolute minimal features we will require for initial development.