WHMCS域名接口开发教程

WHMCS域名接口存放于modules/registrars目录下,以开发西数域名接口为例,新建一个west263文件夹,对应文件名便是west263.php,文件内的函数名前缀必须为west263_,也就是文件夹、文件、函数名前缀必须一致。

一个域名接口的代码看上去如下:

<?php
/**
* 配置项
* WHMCS管理员可以在域名注册接口页面设置这些信息
*/
function west263_getConfigArray() {
	$configarray = array(
		"Username" => array(
			"Type" => "text", // 文本框
			"Size" => "20",
			"Description" => "Enter your username here",
		),
		"Password" => array(
			"Type" => "password", // 密码框
			"Size" => "20",
			"Description" => "Enter your password here",
		),
		"Usessl" => array (
			"FriendlyName" => "Enable SSL",
			"Type" => "yesno", // 复选框
			"Description" => "Tick to use secure connections",
		),
		"Package" => array (
			"FriendlyName" => "Package Name",
			"Type" => "dropdown", // 下拉框
			"Options" => "Starter,Advanced,Ultimate",
			"Description" => "Sample Dropdown",
			"Default" => "Advanced",
		),
		"Disk" => array (
			"FriendlyName" => "Disk Space",
			"Type" => "radio", // 单选框
			"Options" => "100MB,200MB,300MB",
			"Description" => "Radio Options Demo",
			"Default" => "200MB",
		),
		"Comments" => array (
			"FriendlyName" => "Notes",
			"Type" => "textarea", // 多行文本输入框
			"Rows" => "3",
			"Cols" => "50",
			"Description" => "Description goes here",
			"Default" => "Enter notes here",
		),
	);
	return $configarray;
}
// 获取西数DNS
function west263_GetNameservers($params) {
	// 输入你的代码
	$values["ns1"] = $nameserver1;
	$values["ns2"] = $nameserver2;
    $values["ns3"] = $nameserver3;
    $values["ns4"] = $nameserver4;
	$values["error"] = $error;
	// 返回DNS,如果获取西数DNS失败,就返回错误信息
	return $values;
}
/**
* 保存DNS修改
* 用户在WHMCS修改DNS后接口需要更新西数那边的设置
*/
function west263_SaveNameservers($params) {
	$nameserver1 = $params['ns1'];
	$nameserver2 = $params['ns2'];
    $nameserver3 = $params['ns3'];
	$nameserver4 = $params['ns4'];
	$nameserver5 = $params['ns5'];
	// 输入你的代码
	$values["error"] = $error;
	return $values;
}
/**
* 获取域名锁定状态
* 获取西数域名锁定状态,以更新WHMCS中的域名状态
*/
function west263_GetRegistrarLock($params) {
	// 输入你的代码
	if ($lock=="1") {
		$lockstatus="locked";
	} else {
		$lockstatus="unlocked";
	}
	return $lockstatus;
}
/**
* 保存域名锁定状态
* 将WHMCS这边的域名状态修改保存至西数
*/
function west263_SaveRegistrarLock($params) {
	if ($params["lockenabled"]) {
		$lockstatus="locked";
	} else {
		$lockstatus="unlocked";
	}
	// 输入你的代码
	$values["error"] = $error;
	return $values;
}
// 获取邮件转发
function west263_GetEmailForwarding($params) {
	// 输入你的代码
	foreach ($result AS $value) {
		$values[$counter]["prefix"] = $value["prefix"];
		$values[$counter]["forwardto"] = $value["forwardto"];
	}
	return $values;
}
// 保存邮件转发
function west263_SaveEmailForwarding($params) {
	foreach ($params["prefix"] AS $key=>$value) {
		$forwardarray[$key]["prefix"] =  $params["prefix"][$key];
		$forwardarray[$key]["forwardto"] =  $params["forwardto"][$key]
	}
	// 输入你的代码
}
// 获取西数DNS解析记录
function west263_GetDNS($params) {
    // 输入你的代码
    $hostrecords = array();
    $hostrecords[] = array( "hostname" => "ns1", "type" => "A", "address" => "192.168.0.1", );
    $hostrecords[] = array( "hostname" => "ns2", "type" => "A", "address" => "192.168.0.2", );
	return $hostrecords;
}
// 保存DNS解析记录修改
function west263_SaveDNS($params) {
	foreach ($params["dnsrecords"] AS $key=>$values) {
		$hostname = $values["hostname"]; // 主机名
		$type = $values["type"]; // 记录类型
		$address = $values["address"]; // 解析值
		// 输入你的代码
	}
	$values["error"] = $error;
	return $values;
}
// 注册域名
function west263_RegisterDomain($params) {
	// 输入你的代码
	$values["error"] = $error;
	return $values;
}
// 域名转入
function west263_TransferDomain($params) {
	// 输入你的代码
	$values["error"] = $error;
	return $values;
}
// 域名续费
function west263_RenewDomain($params) {
	// 输入你的代码
	$values["error"] = $error;
	return $values;
}
// 获取联系人信息
function west263_GetContactDetails($params) {
	// 输入你的代码
	return $values;
}
// 保存联系人信息
function west263_SaveContactDetails($params) {
	// 输入你的代码
	$values["error"] = $error;
	return $values;
}
// 获取转出密码
function west263_GetEPPCode($params) {
    // 输入你的代码
    $values["eppcode"] = $eppcode;
    $values["error"] = $error;
    return $values;
}
// 注册域名服务器
function west263_RegisterNameserver($params) {
    // 输入你的代码
    $values["error"] = $error;
    return $values;
}
// 修改域名服务器
function west263_ModifyNameserver($params) {
    // 输入你的代码
    $values["error"] = $error;
    return $values;
}
// 删除域名服务器
function west263_DeleteNameserver($params) {
    // 输入你的代码
    $values["error"] = $error;
    return $values;
}
?>

看上去函数比较多,但实际上需要用到的没几个,比较重要的几个函数是:

  • west263_getConfigArray:接口配置项,主要用于设置西数API用户名、安全邮箱、API密码,需要的类型仅text和password两种,在以上代码中例举了所有支持的类型。
  • west263_RegisterDomain:注册域名功能
  • west263_RenewDomain:域名续费
  • west263_GetNameservers:获取西数DNS
  • west263_SaveNameservers:保存DNS设置到西数
  • west263_GetDNS:获取西数解析记录
  • west263_SaveDNS:保存解析记录到西数

注意每个函数的$params参数,可提供许多有用的信息:

获取在west263_getConfigArray中定义的变量,为了避免与系统默认变量名冲突,我首字母大写了。

$username = $params["Username"];
$password = $params["Password"];

域名名称与后缀:

$sld = $params['sld']; //域名名称
$tld = $params['tld']; //域名后缀,注意不带前面的点

完整的域名为:

$domain = $params['sld'] . '.' . $params['tld'];

或:

$domain = $params['domain'];

注册人信息:

$RegistrantFirstName = $params["firstname"]; // 名字
$RegistrantLastName = $params["lastname"]; // 姓
$RegistrantAddress1 = $params["address1"]; // 地址1
$RegistrantAddress2 = $params["address2"]; // 地址2
$RegistrantCity = $params["city"]; // 城市
$RegistrantStateProvince = $params["state"]; // 省
$RegistrantPostalCode = $params["postcode"]; //邮编
$RegistrantCountry = $params["country"]; //国家
$RegistrantEmailAddress = $params["email"]; // 邮箱
$RegistrantPhone = $params["phonenumber"]; // 电话号码

最后,我们考虑到一些域名注册商提供独立控制面板,并且可以通过API登录,这样就可以在WHMCS这边少写很多代码,直接让用户一键登录面板管理域名。

//客户区显示的内容
function west263_ClientArea($params) {
	$code = '你要在客户区输出的代码';
	return $code;
}
阿里云