4
Nov

DIY Domain Market Place Part II: Creating a proper checkout page for your domains.

 

 

This is part 2 of 10 of our series on Do It Yourself: Domaining Challenge: Create your own marketplace.

 

Part I is here.

 

For Part II, we will be creating a checkout page ( POS ). 

 

This page supports:

  1. PayPal support + Credit card for non-paypal subscribers
  2. Escrow.com API Support
  3. Ability to identify and display the referrer (source domain), fetch domain price from a relational DB or a json file.
  4. Functionality: Buy Now: will create a checkout link based on the prospect’s choice of payment (Paypal,Credit Card).
  5. Functionality: Counter-Offer: Ability to receive a counter-offer.
  6. Functionality: Support: Ability to receive a support request.
  7. Functionality: Trademark infringement protection: If the price is zero (or any other integer you prefer) then the message “This domain might be available, please email to check availability” will be displayed, no buy now link nor counter-offer should work for such domain.
  8.  Custom analytics
  9. Should also contain a Google Analytics (GA) tracking code, so GA can be compared with the custom stats and vice-versa. This is important to highlight subtle leads.
  10. Must be compatible with all browsers and devices, in another words: Responsive ( we will be using flex boxes ).
  11. Paid alternative: Dotboss.digital, the most complete domain management system ever written.

I’ve designed a very simple checkout, yet efficient, responsive and modern looking. I used dotbos.digital’s website builder tailored for domainers to construct the design, but you don’t have to if you don’t want to, I will provide you with the HTML right here, directly exported from the builder.

The functionalities, scopes, actual code will be placed in a littler later on this article. For now, let’s establish that the main checkout box, will look as follow:

 

The screenshot above shows the two conditions that the checkout page needs to handle.

Don’t worry about the underlying code right now, there’s none, let’s make the template first… so let’s recap:

If there is a referrer ( domain of which someone organically clicked ) then the checkout page should be able to display the domain SLD.TLD ( as per the screenshot ) AND the price. We will handle the price a little later.

AND thirdly, we should be able to identify the event when the page is being accessed directly (without any referrers), in such case we can forward somewhere or simply use the “please email” routine. We will tackle this condition later on this article when we place some actual code behind this POS page.

Now, we need to create 3 additional functionalities: BuyNow , Counter-Offer and Support/Contact.

First, the design, later the code:

 

In the above picture you can see three additional flex boxes, with thumbnail pictures ( perhaps on a different article we can enhance this page to associate the actual domain logo to the buttons above, please let me know if that is of interest ).

Clicking in Counter should produce the following effect, using a popup:

 

 

 

 

Clicking on the Counter button will produce a popup (as per the screenshot above) that will allow the prospect to enter the counter-offer, such counter-offer should be redirected to an email, that is associated with the domain name in the same place as the price ( MySQL or json file, later on this article ).

Now for the buynow, if clicked we should display a Paypal/Credit Card secure ( please watch for an upcoming article on how to install unlimited SSL certificates in your domaining server, for FREE using Let’s Encrypt or Dotboss.digital ) .

The result of clicking buynow should be:

( and again, don’t worry about the code right now, we will make it painless in a little while ).

 

 

And finally, the Support button should behave as per the below screenshot:

 

 

 

Let’s get REALLY technical !

 

Now that we’ve got our design and understand the requirements, we need to place it all together.

But where ? I’m assuming you have got a hosting account with VPS root access. You will need to select a spare domain for this project, pick a nice one, remember that this is the POS of your domain marketplace.

Now that you have chosen a domain for this POS page, please ensure you have at least FTP access ( to place files ) to your domain’s home directory in your domaining server.

Firstly we will create and upload the HTML for the POS ( The main box, and three boxes below ).

You could use a Website builder tailored for domain investors at dotboss.digital ( see video here on how I created the above flex boxes ) or you could simply take the HTML that will be provided here.

Please create a local file in your computer, folder of your preference called:

pos.php section 1 ( php ) 

<?php
// Domaining DIY: Create Your own Domain Marketplace
// part II - Creating a proper checkout page for your domain marketplace.
// BSD-3 License. Do anything you want with it as long as you keep the original credit.
// DomainOverflow.com
// s, 2nov2017
// the sld.tld - this info will come from the referrer.
// sld stands for second level domain or to the left of the dot.
$sldtld = "tbd"; // to be defined
$route = "tbd"; // This later will help us decide is we are displaying a price or not.
if ($route=="tbd") { // always true unless a new condition is needed and added above
if(isset($_SERVER["HTTP_REFERER"]) && !empty( $_SERVER["HTTP_REFERER"])){
$sldtld = $_GET["sldtld"] ; echo $sldtld;
$dots = substr_count($_SERVER['HTTP_REFERER'],"http");
if ($dots==1) {$sldtld=$_SERVER["HTTP_REFERER"];
$route = "specific.";
}
else {$sldtld="sld.tld";$route="default";
//could try URI from server
//this condition happens when the referrer is not found.
//this can happen if page is directly accessed ( no referrers )
//or if this routine did not manage to fetch the price
}
}
}
// Series of string validations.
if ($route=="tbd") {
if(isset($_GET['sldtld']) && !empty($_GET['sldtld'])){
$sldtld = $_GET["sldtld"] ;
if ($sldtld=="") {echo "blank though!";}
$route = "specific";
}
}// route==tbd
if ($route=="tbd") {
$route = "default"; $sldtld = "sld.tld";
}?>

pos.php section 2 ( html )

<!doctype html>
<html>
<head>
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<meta content="utf-8" http-equiv="encoding">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Lang" content="en">
<meta name="DomainOverflow.com" content="DomainOverflow.com">
<meta http-equiv="Reply-to" content="info@domainoverflow.com">
<meta name="description" content="DIY Domaining Challenge. Create your own domain marketplace. Part II: Proper Checkout page for your domain marketplace.">
<meta name="keywords" content="domain investing, domainoverflow.com, DIY Domaining, domain management, domaining, .com, gtld, ngtls, website builder for domainers.">
<meta name="creation-date" content="09/06/2017">
<script src="https://code.jquery.com/jquery-3.2.1.min.js">
</script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/6.11.4/sweetalert2.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/6.11.4/sweetalert2.min.js">
</script>
<link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet">
// Below is where you would change the font ( font-family )

<style>.blk-row::after{
clear:both;
display:block;
content:"";
}
.blk-row{
padding-right:1px;
;
padding-left:1px;
}
.blk1{
width:100%;
padding-right:1px;
padding-left:1px;
min-height:75px;
background-color:#ffffff;
color:#e93450;
text-align:center;
font-family: 'Nunito', sans-serif;
font-size:35px;
}
.c1290{
color:#E93450;
font-family: 'Nunito', sans-serif;
font-size:20px;
}
.c1747{
color:black;
text-align:center;
font-family: 'Nunito', sans-serif;
}
.c2128{
color:#e93450;
font-size:20px;
}
.c2306{
color:#07fd30;
}
span.info{
margin-left: 10px;
color: #b1b1b1;
font-size: 11px;
font-style: italic;
font-weight:bold;
}
h1 {
font-family: 'Nunito', sans-serif;
font-size: 33px;
font-style: normal;
font-variant: normal;
font-weight: 500;
line-height: 26.4px;
}
h3 {
font-family: 'Nunito', sans-serif;
font-size: 33px;
font-style: normal;
font-variant: normal;
font-weight: 500;
line-height: 15.4px;
}
p {
font-family: 'Nunito', sans-serif;
font-size: 33px;
font-style: normal;
font-variant: normal;
font-weight: 400;
line-height: 20px;
}
blockquote {
font-family: 'Nunito', sans-serif;
font-size: 33px;
font-style: normal;
font-variant: normal;
font-weight: 400;
line-height: 30px;
}
pre {
font-family: 'Nunito', sans-serif;
font-size: 33px;
font-style: normal;
font-variant: normal;
font-weight: 400;
}
h2
{
position: absolute;
/* To place the text on the image*/
top: 50%;
/* The exact location of the text from the top of the image*/
left: 0;
/* Other beautification stuff */
width: 100%;
/*opacity: 0.5; */
font-family: 'Nunito', sans-serif;
font-size: 34px;
font-style: normal;
font-variant: normal;
font-weight: 100;
}
h2 span /* decorating the text within the span tag */
{
color: '#fcfcff';
font: bold 30px/30px Nunito;
letter-spacing: 1px;
/*background: rgb(0, 0, 0); /* fallback color */
/*background: rgba(0, 0, 0, 0.7); padding: 2px;*/
/*background: white;*/
}
h2 span.spacer {
padding:0 0px;
}
/* to pad the background color of text to make it look more elegant *
</style>
</head>
<body>
<div class='blk-row'>
<div class='blk1'>
<div class="image"
style="position: relative;
">

<!-- the image container -->
<img style="height:33%; width:37%"src='https://domainoverflow/downloads/checkouts.png'>
<!-- span tag to beautify it efficiently -->
<h2 id ="titleobject2"style="font-family: 'Nunito', sans-serif;font-size:15px;color:#fcfcff;">
<span style="display:block;" id="spanobject2">USD:
<span id="priceobject2" >
</span>
<br>
<span class='spacer'>
</span>
</span>
<!-- span tag to beautify it efficiently -->
<div id="pagamento" style="text-align:center">
<div id="paymentlink" style="text-align:center;">
<form action="https://www.paypal.com/cgi-bin/webscr" id="Domain Purchase" method="post" target="_self">
<input type="hidden" name="cmd" value="_xclick" />
<input type="hidden" name="business" value="YOURPAYPAL@PAYPAL.COM"/>
<input type="text" readonly="true" id ="itemname" name="item_name" value="sld.tld"/>
<input id="domainprice" type="text" readonly="true" name="amount" value="Please email the@e.ventures"/>
<input type="hidden" name="currency_code" value="USD"/>
<input type="hidden" name="lc" value="CA"/>
<input type="hidden" name="bn" value="btn_paynowCC_LG.gif"/>
<input type="hidden" name="weight_unit" value="kgs"/>
<br>
<input id ="paypalbutton" type="image" src="https://domainoverflow.com/downloads/paypalcheckout.jpg" name="submit" alt="Make payments with PayPal"/>
</form>
</div>
</h2>
</div>
<h2 id ="titleobject"style="font-family: 'Nunito', sans-serif;font-size:15px">
<span id="spanobject">SLD.TLD
<span id="priceobject" >USD
</span>
<span class='spacer'>
</span>
</span>
</div>
</div>
</div>
<div id="counter" style="text-align:center">
<input id="buynow" type="image" src="https://domainoverflow/downloads/buynows.png" onclick="$('#paymentsection').toggle();$('#pagamento').toggle();">
</input>
<input id="counteroffer" type="image" src="https://domainoverflow/downloads/counters.png" onclick="RequestCounterOffer();">
</input>
<input id="supporthelp" type="image" src="https://domainoverflow/supports.png" onclick="RequestHelp()">
</input>
</div>

pos.php section 3 ( javascript )

<script type="text/javascript">
var paypalstring = '<form action="https://www.paypal.com/cgi-bin/webscr" id="levelIIm" method="post" target="_self">'+
'<input type="hidden" name="cmd" value="_xclick" /><input type="hidden" name="business" value="YOURPAYPAL@PAYPALACCOUNT.COM"/>'+
'<input type="text" readonly="true" id ="itemname" name="item_name" value="loadingsldtld"/>'+
'<input id="domainprice" type="text" readonly="true" name="amount" value="loadingprice"/>'+
'<input type="hidden" name="currency_code" value="USD"/><input type="hidden" name="lc" value="CA"/>'+
'<input type="hidden" name="bn" value="https://domainoverflow/downloads/btn_paynowCC_LG.gif"/><input type="hidden" name="weight_unit" value="kgs"/>'+
'<br><input type="image" src="paypalcheckout.jpg" name="submit" alt="Make payments with PayPal"/></form>';
var paypalcode = paypalstring;
var priceavailable = "tbd";
var records="tbd";
var sldtld=''+'<?php echo $sldtld ?>';
var price=50;
var hostname="tbd";
var isithttp = occurrences (sldtld, 'http://' );
var isithttps = occurrences (sldtld, 'https://');
var spanprice = document.getElementById("spanobject2");
if (isithttp>0) {
hostnamestring = sldtld.replace('http://','');
}
if (isithttps>0) {
hostnamestring = sldtld.replace('https://','');
}
var slashes = occurrences(sldtld, '/');
if (slashes>0) {
hostnamestring=hostnamestring.replace('/','');
}
var hostnamestr = hostnamestring.replace('/', "");
console.log ("hostname string:"+hostnamestr);
var span = document.getElementById("spanobject");
span.textContent = hostnamestr;
$(document).ready(function(){
$('#paymentsection').toggle();
$('#pagamento').toggle();
//payment
SendThisData("local:callitself:sldtld="+sldtld);
}
);
function SendThisData (senddata)
{
var parser = document.createElement('a');
var tobesent="";
parser.href = sldtld;
tobesent = parser.hostname;
$.ajax(
{
// ************ REQUESTS PRICE ************************** from request-price.php
url: 'https://YOURDOMAIN/request-price.php?sldtld='+tobesent, // we will provide this shortly
beforeSend: function(xhr)
{
xhr.setRequestHeader("Content-Type", "application/json");
}
,
success: function(data, status)
{
price=data;
var span2 = document.getElementById("spanobject2");
span2.textContent = tobesent+" is USD:"+price;
var span3 = document.getElementById("spanobject");
span3.textContent = "";
// Update components with domain name and price **************************************
$('#domainprice').val(price);
$('#itemname').val(sldtld);
}
,
error: function(error)
{
console.log("error:data:"+error);
priceavailable="no"
}
}
);
}
function RequestPrice (p) {
// requestprice.php will be provided shortly within this article ( domainoverflow.com )
var data = new FormData();
data.append("data" , JSON.stringify(p));
var xhr = (window.XMLHttpRequest) ? new XMLHttpRequest() : new activeXObject("Microsoft.XMLHTTP");
xhr.open( 'post', 'requestprice.php', true );
xhr.send(data);
}
/** Function that count occurrences of a substring in a string;
* @author Vitim.us https://gist.github.com/victornpb/7736865 */

function occurrences(string, subString, allowOverlapping) {
string += "";
subString += "";
if (subString.length <= 0) return (string.length + 1);
var n = 0,
pos = 0,
step = allowOverlapping ? 1 : subString.length;
while (true) {
pos = string.indexOf(subString, pos);
if (pos >= 0) {
++n;
pos += step;
}
else break;
}
return n;
}
function sleep(milliseconds) {
// s
var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) {
if ((new Date().getTime() - start) > milliseconds){
break;
}
}
}
function RequestBuyNow () {
// MIT License - do as you please -except charge for it - and please keep the credit or the system will auto-destroy itself :-)
// sergio@sergio.email
$('#domainprice').val(price);
$('#paypalbutton').toggle();
var parser5 = document.createElement('a');
var tobesent2="";
parser5.href = sldtld;
tobesent2 = parser5.hostname;
var paypaltemp = paypalstring.replace("loadingprice", "USD"+price);
var paypalready = paypaltemp.replace("loadingsldtld",tobesent2);
$('#itemname').val(tobesent2);
$('#paypalbutton').toggle();
//$('paypalbutton').show(); ////////////////////////////////////////////////// this line and the below line
//$("#paypalbutton").css("display", "block"); ///// could be uncommented if you wish to display buynow gateway ssl right away upon pageload.
// ( regardless if the price was found or not and regardless if the event originates from a referrer or not.)
// depending on your context, you might want tweak with this.
}
function SendAnyData(anydata = "anydata") {
// sergio@sergio.email
// SENDS COUNTER-OFFER !!!!!!
var counteroffer1=anydata;
counteroffer1 = counteroffer1 + "["+ sldtld +"]";
var dataObject = {
counteroffer: counteroffer1
};
jQuery.ajaxSetup({
async: false // this depends on your context;
}
);
// request-counter-offer.php below will also be provided shortly within this article ( domainoverflow.com )
$.post("request-counter-offer.php", {
data: JSON.stringify(dataObject),
}
, function(data, status) {
console.log("Data: " + data + "\nStatus: " + status);
// this can be commented once OK
// to view the above log just right click while hovering your browser screen and choose
// "Inspect Element" or "Developer Tools" depending on the browser.
}
);
jQuery.ajaxSetup({
async: true //again this depends on your context.
}
);
}
function RequestHelp() {
swal({
title: 'Please, write your message below, kindly include your email and/or phone, for a fast reply.',
input: 'textarea',
showCancelButton: true,
}
).then(function(text) {
SendAnyDataTicket(text);
if (text) {
swal(text + ", message sent, We will reply promptly.")
}
}
).catch(swal.noop);
}
function RequestCounterOffer() {
var parser6 = document.createElement('a');
var tobesent3="";
parser6.href = sldtld;
tobesent3 = parser6.hostname;
swal({
// title: 'Counter Offer will be sent directly to the seller of '+sldtld+"[@USD"+price+"]",
text: 'Please include your email.',
input: 'textarea',
html: 'Counter Offer will be sent directly to the seller of:<br><b>'+tobesent3+'</b><br><br>Seller is asking for USD:'+price+'<br><br><h3>What is your counter-offer?</h3><br>*Please be sure to include your email along the message so the seller can reply directly to this offer.',
showCancelButton: true,
}
).then(function(text) {
if (text) {
SendAnyData(text);
swal(text + ", message sent!")
}
}
).catch(swal.noop);
}
function RequestRedirect () {
window.location.replace("https://dotboss.digital","_blank");
}
function CreateTicket() {
swal({
title: 'Support',
text: "Please describe problem and domain name(s) in question",
type: 'warning',
input: 'textarea',
showCancelButton: true,
confirmButtonColor: '#E93450',
cancelButtonColor: '#EFF512F',
useRejections: false,
confirmButtonText: 'Send it'
}
).then(function(text) {
SendAnyDataTicket(text);
swal(
'Sent!',
'You will receive an email with a ticket number, followed by updates until resolution.',
'success'
)
}
)
}
function SendAnyDataTicket(anydata = "anydata") {
var dataObject = {
requestssl: anydata
};
jQuery.ajaxSetup({
async: false
}
);
// support-help.php will be provided later on within this article ( domainoverflow.com )
$.post("request-support.php", {
data: dataObject
}
, function(data, status) {
console.log("Data: " + data + "\nStatus: " + status);
}
);
jQuery.ajaxSetup({
async: true // Depends on your context. If in the cloud, go fully asynch.
// ask us if in doubt info@domainoverflow@.com
}
);
}
</script>
</body>
<footer>
</div>
<div style="text-align:center">
<input id="dotbossdigitalobject" type="image" src="YOUR-LOGO-HERE.png" onclick="window.open('https://dotbossdigital.com', '_blank');">
</input>
</div>
</form>
</div>
</footer>
</html>

Feel free to simply grab the code and deploy but also feel free to leave comments with suggestions or questions.

So, the above code covers:

-Identifies the referrer from the webserver.

-Requests price and contact email from persistent data (mysql or json).

-Display the price and the domain name or display ‘Please check availability’ if price fails to be fetched or if price equals to zero.

-Buynow button generates paypal link accordingly to the price fetched from persistent data.

-Counter button allows the prospect to counter-offer.

-Support button so the guest  can report a technical glitch, a browser issue, etc.

*There will be an upcoming article at the end of the series, with enhancements and we will talk about the benefits of captchas, cookies & alikes. (to prevent automated traffic AND to identify leads interacting with the digital asset).

**Please keep in mind this marketplace assumes the owner of the POS is the owner of the portfolio. If you are interested in implementing a middle-man interface or to charge a fee, please also refer to the upcoming article on domain market enhancements, feel free to leave a comment down below for a quick answer.

*** Very important: please go through pos.php and search for “YOURPAYPAL” and make sure you replace that string with your actual paypal account, or you wont get paid !

There is a chance that you have not looked at the code at all. If that is the case then this is what’s missing:

-Page loading event fetches price upon start via request-price.php

-Counter button makes a request to  request-counter-offer.php

-Support button makes a request to request-support.php  support-help.php

-Buynow button doesn’t make any request, but it generates the paypal gateway image, according to the price fetched via request-price.php

Before we create these 3 phps, we need to talk a bit about the persisted data.

 

Persisting Data in your domain marketplace.

Only you know the context of which your domain marketplace will run. Please consider:

-If you are building your domain marketplace for your own portfolio, then your security concerns will be very low as you will be the only one using your own admin panel; in this context there are no logins; a JSON file schema can be used, and data will be persisted to a relational database such as MySQL later, in a different process – under this architecture there is no direct access to MySQL but there is a direct access to the JSON file schema, this will give a super performance.

-If you are building a layer of which there will be logins and multiple ownership, then you need a direct layer to a relational database such as MySQL.

In this article we will be covering the simpler context, no logins, hence a JSON file schema will be used and a secondary process will keep the relational database updated. However, please feel free to elaborate on a more complex context down below in the comments sections and we will see what’s possible.

 

The JSON File schema to store the domain price

Create a file called domains.json and paste the following content into domains.json then please upload domains.json to your domaining server, at the home folder of the domain chosen to host this project.

[

{"domain": "domain1.com","price": 999},

{"domain":"domain2.com","price":0},

{"domain":"domain3.digital","price":2000},

]

So, according to the above:

domain1.com is $999

domain2.com is $0

domain3.digital is $2000

Remember that pos.php will treat domains with price zero as not available ( message “Please contact your@email.tld for availability” ).

So feel free to dump your inventory into the above file ( domains.json ).

The process that backs your data into a relational database, in this case MySQL, will be provided as part of the final download at the end of the article, we will not go through the source code but in essence it runs every X minutes and it takes the json and places it into MySQL, so later you can have detailed reports but the reverse process will allow you to batch modify your prices from any source (including excel). Feel free to post questions about this process down below in the comments section.

Are we there yet ? Almost.

Ok, so now that we have a JSON schema, we can go ahead and complete the logic on those 3 buttons:

Quick recap:

1
2
3
4
5
6
7
Page loading event fetches price upon start via request-price.php

Counter button makes a request to  request-counter-offer.php

Support button makes a request to request-support.php

Buynow button doesn't make any request, but it generates the paypal gateway image, according to the price fetched via request-price.php

And here they are:

request-price.php

<?php

// fields are domain and price
// s 02-nov-2017
// info@domainoverflow.com

$domain_in_question = $_GET["domain"] ; // passed in the url as ?domain=sld.tld
$domain_in_question = strtolower (trim($domain_in_question));
$string = file_get_contents("domains.json");
$initial_array = json_decode($string, true);
$size=count($initial_array);
$t=0;
$domain_price="tbd";
$counter=0;
for($t=0;$t<$size;$t++) {$domain_inventory = $initial_array[$t]["domain"];
$domain_inventory = strtolower (trim($domain_inventory));
if ($domain_inventory==$domain_in_question)
{ // domain found in inventory !
$domain_price=$initial_array[$t]["price"];}
return $domain_price ; break;}?>

request-counter-offer.php

<?php

// Send email to domain owner with counter-offer
// counter-offer is in the request as per below

$counteroffertemp = json_decode($_POST["data"],true);
$counteroffer = $counteroffertemp["counteroffer"];
//if debug is needed, please uncomment the next line.
//file_put_contents('json.decode', print_r($abc, true),FILE_APPEND);
//Mail the counter offer
$maildata = $counter_offer . " [" .$_SERVER["REMOTE_ADDR"]."]" ;
mail("info@domainoverflow.com","CounterOffer->".$counteroffer,"-checkout" . $maildata) ;

?>

request-support.php

<?php
//Request Support

//Change the email to your email
file_put_contents('support.request.post.history', file_get_contents('php://input'),FILE_APPEND);
$maildata=file('support.request.post.history');
$maildata=implode("|",$maildata);
mail("info@domainoverflow.com","Help->from request-support.php".$maildata,"Support Message:" . $maildata) ;
?>

Please upload them to your domaining server, at the chosen’s domain home folder.

 

Let’s test it !

 

 

 

The link you should have distributed in your domains ( to call the pos ) should be something similar to this:

HTML

1
<a href="https://pos.domain" target="_blank">Click Here To Buy This Domain</a>

*Replace pos.domain with the domain that you have used for the POS. Adjust httpS or http accordingly to your ssl certificate status.

** the tag target equals blank above forces the opening in a new tab.

Try the live version here

 

Paid Alternatives to non-technical domain investors

Dotboss.digital is the most complete domain management system ever written. You can create your POS with much more details, add another types of payment, support for escrow dot com, and lots more, should you take this route, the following would be your super easy road-map:

1-Signup for dobotss.digital, it takes 60 seconds.

2-change your domain(s) to ns1.dotbossdigital.com and ns2.dotbossdigital.com

3-Launch the website builder tailored for domainers, create your own design using full-on photoshop features via the Adobe Aviary editor embedded in the builder.

4-Choose your domains, drag and drop and deploy your marketplace !

 

Thanks for reading and I hope at least one of the presented solutions, FREE or dotboss.digital, will be useful to your digital portoflio.

Our next part on this DIY Domaining Challenge: Create your own domain marketplace will be part III and the project will be:

Part III: Creating a custom landing page that can be applied to multiple-domains.

Please feel free to post technical questions and also comments.

Thanks for reading,

s

Tags: , , , , ,

Leave a Reply

1 Comment on "DIY Domain Market Place Part II: Creating a proper checkout page for your domains."

Notify of
avatar
Sort by:   newest | oldest | most voted
trackback

[…] now, you can already see the deliverable for Part I, Part II and Part […]

wpDiscuz

%d bloggers like this: