upmind/20i-php-sdk

Upmind对官方20i PHP SDK的重新分发/分支

1.1.0 2024-06-25 14:23 UTC

This package is auto-updated.

Last update: 2024-09-25 14:54:13 UTC


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