upmind / 20i-php-sdk
Upmind对官方20i PHP SDK的重新分发/分支
1.1.0
2024-06-25 14:23 UTC
Requires (Dev)
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^9.0 || ^10.0 || ^11.0
Replaces
README
Upmind对官方20i PHP SDK的重新分发/分支:20i/api-modules
版权(c)2018,20i有限公司
20i REST模块
简介
这是20i服务的REST模块。它提供了必要的包装,以便在不编写自己的REST客户端的情况下访问20i服务。
要求
- Composer
- PHP5或更高版本。请注意,未来的版本可能需要PHP7。
服务示例
在下面的示例中,服务的API密钥将给出为"API KEY"。您应该将其替换为API页面https://my.20i.com/reseller/api上的实际值。
添加新的托管服务
<?php
$general_api_key = "API KEY";
$services_api = new \TwentyI\API\Services($general_api_key);
$type = "5678";
$domain_name = "example.org";
$other_domain_names = ["example.net"];
$response = $services_api->postWithFields(
"/reseller/*/addWeb",
[
"type" => $type,
"domain_name" => $domain_name,
"extra_domain_names" => $other_domain_names,
]
);
设置域名的名称服务器
<?php
$general_api_key = "API KEY";
$services_api = new \TwentyI\API\Services($general_api_key);
$domains = $services_api->getWithFields("/domain");
foreach ($domains as $domain) {
if ($domain->name == "example.org") {
$id = $domain->id;
$old_nameservers = $services_api->getWithFields(
"/domain/{$id}/nameservers"
)->result;
$services_api->postWithFields(
"/domain/{$id}/nameservers",
[
"ns" => ["ns1.example.org", "ns2.example.org"],
"old-ns" => $old_nameservers,
]
);
}
}
查找域名
<?php
$general_api_key = "API KEY";
$services_api = new \TwentyI\API\Services($general_api_key);
$domains = $services_api->getWithFields("/domain-search/mybusinessname");
print_r($domains);
身份验证示例
这些仅适用于您尝试编写自己的Stack控制面板版本的情况。
在下面的示例中,身份验证API客户端密钥将给出为"CLIENT KEY"。您应该将其替换为API页面https://my.20i.com/reseller/api上的实际值。
使用用户名/密码验证用户
<?php
$oauth_client_key = "CLIENT KEY";
$username = "mycoolusername";
$password = "thatpasswordilike";
$auth_api = new \TwentyI\API\Authentication($oauth_client_key);
$response = $auth_api->postWithFields("/login/authenticate", [
"grant_type" => "password",
"username" => $username,
"password" => $password,
]);
$new_access_token = $response->access_token;
作为您拥有的用户进行验证
<?php
$oauth_client_key = "CLIENT KEY";
$subuser_reference = "stack-user:97";
$auth_api = new \TwentyI\API\Authentication($oauth_client_key);
$response = $auth_api->postWithFields("/login/authenticate", [
"grant_type" => "client_credentials",
"scope" => $subuser_reference,
]);
$new_access_token = $response->access_token;
其他示例
单点登录
$oauth_client_key = "CLIENT KEY";
$general_api_key = "API KEY";
$services_api = new \TwentyI\API\Services($general_api_key);
$auth_api = new \TwentyI\API\Authentication($oauth_client_key);
$all_packages = $services_api->getWithFields("/package");
$package_id = $all_packages[0]->id; // This is just your first package
$stack_users = $services_api->getWithFields("/package/{$package_id}/stackUserList");
$token_info = $auth_api->controlPanelTokenForUser(
$stack_users[0]->identity
);
$url = $services_api->singleSignOn($token_info->access_token, $package_info->name);
注意
尽可能直接从EPP格式映射域名服务。这意味着当像Nominet这样的注册机构在其标签名称中使用连字符(例如opt-out
)时,它们最终也会在结果对象中成为连字符。您仍然可以使用它们,只是需要稍微修改一下代码。例如,$company_number = $contact->extension->{'co-no'};