Example #1
0
function domainbox_RegisterDomain($params)
{
    $tld = $params['tld'];
    $authParameters = getAuthParameters($params);
    $apiEndpoint = $params["TestMode"] ? "https://sandbox.domainbox.net/?WSDL" : "https://live.domainbox.net/?WSDL";
    $registerDomainParameters = new RegisterDomainParameters();
    $registerDomainParameters->DomainName = $params["sld"] . '.' . $params["tld"];
    $registerDomainParameters->Period = $params["regperiod"];
    $registerDomainParameters->ApplyLock = !$params['tld'] == '.co.uk';
    $registerDomainParameters->ApplyPrivacy = false;
    $registerDomainParameters->AutoRenew = false;
    $registerDomainParameters->LaunchPhase = "GA";
    $nameServerParameters = new Nameservers();
    $nameServerParameters->NS1 = $params['ns1'];
    $nameServerParameters->NS2 = $params['ns2'];
    $nameServerParameters->NS3 = $params['ns3'];
    $nameServerParameters->NS4 = $params['ns4'];
    $nameServerParameters->NS5 = $params['ns5'];
    $needsZone = false;
    foreach ($nameServerParameters as $key => $value) {
        $needsZone = stripos($value, 'dnsfarm.org') > 0;
        if ($needsZone) {
            break;
        }
    }
    $registrant = new Contact();
    $registrant->City = $params['city'];
    $registrant->CountryCode = $params['country'];
    $registrant->Email = $params['email'];
    $registrant->Name = $params['firstname'] . ' ' . $params['lastname'];
    $registrant->Organization = $params['companyname'];
    $registrant->Street1 = $params['address1'];
    $registrant->Street2 = $params['address2'];
    $registrant->State = $params['state'];
    $registrant->Postcode = $params['postcode'];
    $localTelephone = str_replace(' ', '', $params['adminphonenumber']);
    if (substr($localTelephone, 0, 1) == "0") {
        $localTelephone = substr($localTelephone, 1);
    }
    $registrant->Telephone = $localTelephone;
    // Work out what additional parameters we need
    switch ($tld) {
        case 'co.uk':
        case 'org.uk':
        case 'me.uk':
        case 'uk':
            $registrant->AdditionalData = new AdditionalDataParameter();
            $ukData = new UKAdditionalDataParameter();
            $ukData->CompanyNumber = $params['additionalfields']['Company ID Number'];
            $ukData->mapTypeToDomainbox($params['additionalfields']['Legal Type'], $registrant->CountryCode);
            $registrant->Name = $params['additionalfields']['Registrant Name'];
            // This will override the contact details
            $ukData->TradingName = "";
            //TODO: Allow customer to enter on WHMCS.
            $registerDomainParameters->ApplyPrivacy = $params['additionalfields']['WHOIS Opt-out'];
            $registrant->AdditionalData->UKAdditionalData = $ukData;
            break;
        case 'pro':
            $proData = new ProProfessionDataParameter();
            $proData->Profession = $params['additionalfields']['Profession'];
            $registerDomainParameters->Extension = new ExtensionParameter();
            $registerDomainParameters->Extension->ProProfessionData = $proData;
            break;
        case 'us':
            $usData = new USAdditionalDataParameter();
            $usData->Category = $params['additionalfields']['Nexus Category'];
            $usData->mapTypeToDomainbox($params['additionalfields']['Application Purpose']);
            $registerDomainParameters->ApplyPrivacy = false;
            $registrant->AdditionalData->USAdditionalData = $usData;
            break;
        case 'es':
            $esData = new ESAdditionalDataParameter();
            $esData->ContactType = '';
            //TODO: Needs drop down on WHMCS (could make best guess in code..)
            $esData->IdentificationType = $params['additionalfields']['ID Form Type'];
            $esData->IdentificationNumber = $params['additionalfields']['ID Form Number'];
            $registrant->AdditionalData->ESAdditionalData = $esData;
            break;
        case 'it':
            $itData = new ITAdditionalDataParameter();
            $itData->EntityType = $params['additionalfields']['Legal Type'];
            $itData->Nationality = $registrant->CountryCode;
            $itData->RegCode = $params['additionalfields']['Tax ID'];
            $registrant->AdditionalData->ITAdditionalData = $itData;
            break;
        case 'fr':
        case 'yt':
        case 'tf':
        case 'pm':
        case 're':
        case 'wf':
            //TODO: Support Afnic domains.
            $afnicData = new AfnicAdditionalDataParameter();
            $afnicData->BirthCc = '';
            $afnicData->BirthCity = '';
            $afnicData->BirthDate = '';
            $afnicData->BirthPc = '';
            $registrant->AdditionalData->AfnicAdditionalData = $afnicData;
            break;
        case 'nl':
            //TODO: Support SIDN domains.
            $nlData = new NLAdditionalDataParameter();
            $nlData->LegalType = '';
            $nlData->LegalTypeRegistrationNumber = '';
            $registrant->AdditionalData->NLAdditionalData = $nlData;
            break;
    }
    $admin = new Contact();
    $admin->City = $params["admincity"];
    $admin->CountryCode = $params['admincountry'];
    $admin->Email = $params['adminemail'];
    $admin->Name = $params['adminfirstname'] . ' ' . $params['adminlastname'];
    $admin->Organization = $params['admincompanyname'];
    $admin->Street1 = $params['adminaddress1'];
    $admin->Street2 = $params['adminaddress2'];
    $admin->State = $params['adminstate'];
    $admin->Postcode = $params['adminpostcode'];
    $localTelephone = str_replace(' ', '', $params['adminphonenumber']);
    if (substr($localTelephone, 0, 1) == "0") {
        $localTelephone = substr($localTelephone, 1);
    }
    $admin->Telephone = $localTelephone;
    $billing = new Contact();
    $billing->City = $params["admincity"];
    $billing->CountryCode = $params['admincountry'];
    $billing->Email = $params['adminemail'];
    $billing->Name = $params['adminfirstname'] . ' ' . $params['adminlastname'];
    $billing->Street1 = $params['adminaddress1'];
    $billing->Street2 = $params['adminaddress2'];
    $billing->State = $params['adminstate'];
    $billing->Postcode = $params['adminpostcode'];
    $localTelephone = str_replace(' ', '', $params['adminphonenumber']);
    if (substr($localTelephone, 0, 1) == "0") {
        $localTelephone = substr($localTelephone, 1);
    }
    $billing->Telephone = $localTelephone;
    $tech = new Contact();
    $tech->City = $params["admincity"];
    $tech->CountryCode = $params['admincountry'];
    $tech->Email = $params['adminemail'];
    $tech->Name = $params['adminfirstname'] . ' ' . $params['adminlastname'];
    $tech->Street1 = $params['adminaddress1'];
    $tech->Street2 = $params['adminaddress2'];
    $tech->State = $params['adminstate'];
    $tech->Postcode = $params['adminpostcode'];
    $localTelephone = str_replace(' ', '', $params['adminphonenumber']);
    if (substr($localTelephone, 0, 1) == "0") {
        $localTelephone = substr($localTelephone, 1);
    }
    $tech->Telephone = $localTelephone;
    $contacts = new Contacts();
    $contacts->Registrant = $registrant;
    $contacts->Admin = $admin;
    $contacts->Billing = $billing;
    $contacts->Tech = $tech;
    $registerDomainParameters->Nameservers = $nameServerParameters;
    $registerDomainParameters->Contacts = $contacts;
    try {
        $parameters = array('AuthenticationParameters' => $authParameters, 'CommandParameters' => $registerDomainParameters);
        $client = new SoapClient($apiEndpoint, array('soap_version' => SOAP_1_2));
        $result = $client->RegisterDomain($parameters);
        $result = $result->RegisterDomainResult;
        if ($result->ResultCode == 100) {
            if ($needsZone) {
                $createDnsZoneParameters = new CreateDnsZoneParameters();
                $createDnsZoneParameters->Zone = $registerDomainParameters->DomainName;
                $parameters = array('AuthenticationParameters' => $authParameters, 'CommandParameters' => $createDnsZoneParameters);
                $client = new SoapClient($apiEndpoint, array('soap_version' => SOAP_1_2));
                $client->CreateDnsZone($parameters);
            }
            $table = "mod_domainbox";
            $values = array("whmcsDomainID" => $params['domainid'], "domainboxDomainID" => $result->DomainId);
            insert_query($table, $values);
        } else {
            $error = $result->ResultMsg;
        }
    } catch (Exception $e) {
        $error = "There was an error communicating with Domainbox";
    }
    # If error, return the error message in the value below
    $values["error"] = $error;
    return $values;
}