Script PHP de création d’un domaine sur Internet BS via l’API

Voici le script que j’appelle toutes les x minutes afin d’enregistrer un nom de domaine chez Internet BS en passant par l’API. Je les enregistre là-bas pour la facilité avec laquelle je peux cacher le Whois. Vous devez bien entendu déjà avec votre clé API, si ce n’est pas le cas, il faut aller dans l’onglet « Mon compte« .

Le domaine est enregistré pour une période d’un an, Whois entièrement privé, réponse en JSON. Il est nécessaire de renseigner les paramètres registrant, technical, admin et billing pour un certain nombre de .tld. Ils sont donc par défaut dans le script. Je précise que pour acheter un .fr, vous devez être résident en France, pour un .ca au Canada, etc.

L’achat du domaine se fait en 2 étapes : vérification de la disponibilité et achat si status à ‘AVAILABLE’. Voici le code :

<?php
##################################################
############## PARAMETERS ##############
##################################################
$apiKey = 'xxx';
$password = 'xxx';
$domain = 'example.org';

$firstname = 'xxx';
$lastname = 'xxx';
$street = 'xxx';
$countrycode = 'FR'; // CA, UK...
$psotalcode = 'xxx';
$email = 'xxx@xxx.com';
$phone = '+33.xxx'; // +1.xxx...
$city = 'xxx';
$birthday = '1980-12-01';
##################################################
$url = 'https://api.internet.bs/Domain/Check';
$create = 'https://api.internet.bs/Domain/Create';

$params = array(
    'ApiKey' => $apiKey,
    'Password' => $password,
    'Domain' => $domain,
    'ResponseFormat' => 'json',
);

$paramsCreate = array(
    'ApiKey' => $apiKey,
    'Password' => $password,
    'Domain' => $domain,
    'Period' => '1Y',
    'privateWhois' => 'FULL',
    'ResponseFormat' => 'json',
    'registrant_firstname' => $firstname,
    'registrant_lastname' => $lastname,
    'registrant_street' => $street,
    'registrant_countrycode' => $countrycode,
    'registrant_postalcode' => $psotalcode,
    'registrant_email' => $email,
    'registrant_obfuscateemail' => '1',
    'registrant_phonenumber' => $phone,
    'technical_firstname' => $firstname,
    'technical_lastname' => $lastname,
    'technical_street' => $street,
    'technical_countrycode' => $countrycode,
    'technical_postalcode' => $psotalcode,
    'technical_email' => $email,
    'technical_phonenumber' => $phone,
    'admin_firstname' => $firstname,
    'admin_lastname' => $lastname,
    'admin_street' => $street,
    'admin_countrycode' => $countrycode,
    'admin_postalcode' => $psotalcode,
    'admin_email' => $email,
    'admin_phonenumber' => $phone,
    'registrant_city' => $city,
    'technical_city' => $city,
    'admin_city' => $city,
    'billing_firstname' => $firstname,
    'billing_lastname' => $lastname,
    'billing_street' => $street,
    'billing_countrycode' => $countrycode,
    'billing_postalcode' => $psotalcode,
    'billing_email' => $email,
    'billing_phonenumber' => $phone,
    'registrant_city' => $city,
    'technical_city' => $city,
    'billing_city' => $city,
    'registrant_dotfrcontactentitytype' => 'INDIVIDUAL',
    'registrant_dotFRContactEntityBirthDate' => $birthday,
    'registrant_dotfrcontactentitybirthplacecountrycode' => $countrycode,
    'registrant_dotfrcontactentitybirthcity' => $city,
    'registrant_dotfrcontactentitybirthplacepostalcode' => $psotalcode
);

function callAPI($url, $params)
{
    $options = array(
        CURLOPT_SSL_VERIFYHOST => 0,
        CURLOPT_SSL_VERIFYPEER => 0
    );

    $defaults = array(
        CURLOPT_URL => $url . (strpos($url, '?') === false ? '?' : '') . http_build_query($params) ,
        CURLOPT_HEADER => 0,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => 4
    );

    $ch = curl_init();
    curl_setopt_array($ch, ($options + $defaults));
    if (!$result = curl_exec($ch))
    {
        trigger_error(curl_error($ch));
    }
    curl_close($ch);
    return $result;
}
$result = json_decode(callAPI($url, $params));
if (!empty($result))
{
    if ($result->status == 'AVAILABLE')
    {
        $tmp = json_decode(callAPI($create, $paramsCreate));
        if (!empty($tmp))
        {
            if (!empty($tmp->message))
            {
                echo $tmp->message;
            }
            else
            {
                echo $tmp->product[0]->message;
            }
        }
    }
    else
    {
        if (!empty($result->message))
        {
            echo $result->message;
        }
        else
        {
            echo $domain . " " . $result->status;
        }
    }
}
?>

Si vous avez le message suivant :

Not enough money for the operation!

Regardez votre compte. Le minimum est de 50 euros. Le script peut être améliorer mais il convient à mes besoins comme il est présenté ici. Vous pouvez toujours le bidouiller un peu ;) Il n’y a plus qu’ à mettre ce fichier à la racine de votre hébergement et à l’appeler à l’aide d’une crontab. Bon snapping…

Ah oui dernière chose, voici la doc. officielle. Elle ne contient pas d’exemples de code mais elle peut servir.

Top 10 des problèmes rencontrés avec Magento
Les bases de Responsive Web Design

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *