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;
}