通过API新购、续费、升级云解析实例

本文主要介绍通过API对云解析付费实例进行新购、续费、自动续费、升级等操作。Demo中部分参数值仅为参考,实际调用时,请传入真实数据。如:Domain、InstanceId。

SDK

  • Maven依赖

<dependencies>
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-bssopenapi</artifactId>
        <version>1.6.6</version>
    </dependency>

    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-core</artifactId>
        <version>4.4.6</version>
    </dependency>
</dependencies>

其他语言参考:SDK列表

重要

中国站RegionId固定使用为cn-hangzhou、国际站RegionId固定使用为ap-southeast-1。

1.创建云解析付费实例

描述:通过CreateInstance进行云解析付费实例创建。

调用接口名称:CreateInstance

接口参考文档实例创建服务 - 阿里云交易和账单管理API - 阿里云 (aliyun.com)

接口参数

Demo实例参数

参数可取值范围

取值描述解释

Parameter.1.Code

parameters1.setCode

DNSSecurity

DNS安全。

Parameter.1.Value

parameters1.setValue

no; basic; advanced

不需要;DNS攻击基础防御;DNS攻击全力防御。

Parameter.2.Code

parameters2.setCode

DomainNumbers

域名数量。

Parameter.2.Value

parameters2.setValue

1-100

域名数量的取值范围。

Parameter.3.Code

parameters3.setCode

Version

云解析版本选择。

Parameter.3.Value

parameters3.setValue

version_personal;version_enterprise_basic; version_enterprise_advanced

个人版 ;企业标准版;企业旗舰版。

Parameter.4.Code

parameters4.setCode

Domain

绑定域名名称。

Parameter.4.Value

parameters4.setValue

example.com

请输入实际绑定实例的域名,若多个域名,用英文逗号分隔。

Parameter.5.Code

parameters5.setCode

InstanceType

实例类型。

Parameter.5.Value

parameters5.setValue

HostedPublicZone;

CachedPublicZone

权威托管域名;

权威代理域名。

常见问题

(1)绑定域名信息的参数parameters4.setCode("Domain"),传值时首字母要大写。否则绑定域名失败

(2)绑定的域名存在于购买实例的账号下,若为非万网域名,需要提前在云解析控制台进行域名添加,或者调用接口AddDomain进行添加。具体参考:添加域名 - 云解析 DNS - 阿里云 (aliyun.com)

调用Demo参考

package alidnstest.domainmanager;

import com.alibaba.fastjson.JSON;
import com.aliyuncs.bssopenapi.model.v20171214.CreateInstanceRequest;
import com.aliyuncs.bssopenapi.model.v20171214.CreateInstanceResponse;
import com.aliyuncs.exceptions.ClientException;
import org.testng.annotations.Test;
import org.testng.collections.Lists;
import utils.AlidnsTestBase;

public class InstanceCreateRenewUpgrade extends AlidnsTestBase {

    @Test
    public void createInstanceTest() {
        CreateInstanceRequest request = new CreateInstanceRequest();
        request.setProductCode("dns");
        request.setProductType("alidns_pre");
        request.setSubscriptionType("Subscription");
        request.setPeriod(1);
        CreateInstanceRequest.Parameter parameters1 = new CreateInstanceRequest.Parameter();
        parameters1.setCode("DNSSecurity");
        parameters1.setValue("no");

        CreateInstanceRequest.Parameter parameters2 = new CreateInstanceRequest.Parameter();
        parameters2.setCode("DomainNumbers");
        parameters2.setValue("1");

        CreateInstanceRequest.Parameter parameters3 = new CreateInstanceRequest.Parameter();
        parameters3.setCode("Version");
        parameters3.setValue("version_personal");

        CreateInstanceRequest.Parameter parameters4 = new CreateInstanceRequest.Parameter();
        parameters4.setCode("Domain");
        parameters4.setValue("example.taobao");

        CreateInstanceRequest.Parameter parameters5 = new CreateInstanceRequest.Parameter();
        parameters5.setCode("InstanceType");
        parameters5.setValue("HostedPublicZone");  
      
        request.setParameters(Lists.newArrayList(parameters1,parameters2,parameters3,parameters4,parameters5));
        try {
            CreateInstanceResponse response = client.getAcsResponse(request);
            System.out.println(JSON.toJSON(response));
        } catch (ClientException e) {
            e.printStackTrace();
        }
    }
}

2.云解析付费实例续费

描述:通过RenewInstance进行云解析付费实例续费。

调用接口名称:RenewInstance

接口参考文档实例续费服务 - 阿里云交易和账单管理API - 阿里云 (aliyun.com)

调用Demo参考

package alidnstest.domainmanager;

import com.alibaba.fastjson.JSON;
import com.aliyuncs.bssopenapi.model.v20171214.CreateInstanceRequest;
import com.aliyuncs.bssopenapi.model.v20171214.CreateInstanceResponse;
import com.aliyuncs.bssopenapi.model.v20171214.RenewInstanceRequest;
import com.aliyuncs.bssopenapi.model.v20171214.RenewInstanceResponse;
import com.aliyuncs.exceptions.ClientException;
import org.testng.annotations.Test;
import org.testng.collections.Lists;
import utils.AlidnsTestBase;

public class OrderCreateRenewUpgrade extends AlidnsTestBase {

    /**
     * 云解析实例续费
     */
    @Test
    public void renewInstanceTest() {
        RenewInstanceRequest request = new RenewInstanceRequest();
        // 填入真实创建的实例ID
        request.setInstanceId("dns-cn-oew21y7bh50"); 
        request.setProductCode("dns");
        request.setRenewPeriod(3);
        try {
            RenewInstanceResponse response = client.getAcsResponse(request);
            System.out.println(JSON.toJSON(response));
        } catch (ClientException e) {
            e.printStackTrace();
        }
    }
}

3.云解析实例自动续费

描述:通过SetRenewal设置云解析付费实例续费方式:手动续费、自动续费、不续费。

调用接口名称:SetRenewal

接口参考文档设置实例自动续费服务 - 阿里云交易和账单管理API - 阿里云 (aliyun.com)

自动续费周期参数说明

接口参数

取值范围

描述

RenewalPeriodUnit

取值:M:月。Y:年。

自动续费周期单位。

RenewalPeriod

RenewalPeriodUnit取值为年时,取值范围:1、2。3RenewalPeriodUnit取值为月时,取值范围:1、2、3、6。

自动续费时长。

常见问题

(1)ProductCode为必传参数。

(2)当RenewalStatus= AutoRenewal时,RenewalPeriodUnit、RenewalPeriod为必传。

调用Demo参考

package alidnstest.domainmanager;

import com.alibaba.fastjson.JSON;
import com.aliyuncs.bssopenapi.model.v20171214.*;
import com.aliyuncs.exceptions.ClientException;
import org.testng.annotations.Test;
import org.testng.collections.Lists;
import utils.AlidnsTestBase;

public class OrderCreateRenewUpgrade extends AlidnsTestBase {

    /**
     * 云解析实例自动续费
     */
    @Test
    public void setRenewalTest() {
        SetRenewalRequest request = new SetRenewalRequest();
        // 填入真实创建的实例ID
        request.setInstanceIDs("dns-cn-oew21y7bh50"); 
        request.setRenewalStatus("AutoRenewal");
        request.setProductCode("dns");
        request.setRenewalPeriodUnit("M");
        request.setRenewalPeriod(1);
        try {
            SetRenewalResponse response = client.getAcsResponse(request);
            System.out.println(JSON.toJSON(response));
        } catch (ClientException e){
            e.printStackTrace();
        }
    }
}

4.云解析实例升级

描述:通过ModifyInstance对云解析付费实例进行升级,目前云解析产品不支持付费实例降级。

调用接口名称:ModifyInstance

接口参考文档实例变更服务 - 阿里云交易和账单管理API - 阿里云 (aliyun.com)

说明

Parameter.N.Code、Parameter.N.Value取值说明:

Parameter.N.Code传入Version即可。

Parameter.N.Value(云解析付费实例版本)取值范围:

  • version_personal : 个人版 ;

  • version_enterprise_basic : 企业标准版;

  • version_enterprise_advanced: 企业旗舰版;

常见问题

(1)云解析付费实例目前不支持降级。

(2)InstanceId、ProductType为必传参数。

调用Demo参考:

package alidnstest.domainmanager;

import com.alibaba.fastjson.JSON;
import com.aliyuncs.bssopenapi.model.v20171214.*;
import com.aliyuncs.exceptions.ClientException;
import org.testng.annotations.Test;
import org.testng.collections.Lists;
import utils.AlidnsTestBase;

public class OrderCreateRenewUpgrade extends AlidnsTestBase {

    /**
     * 云解析实例升级
     */
    @Test
    public void modifyInstanceTest() {
        ModifyInstanceRequest request = new ModifyInstanceRequest();
        request.setModifyType("Upgrade");
        ModifyInstanceRequest.Parameter parameters = new ModifyInstanceRequest.Parameter();
        parameters.setCode("Version");
        parameters.setValue("version_enterprise_basic");
        request.setParameters(Lists.newArrayList(parameters));
        request.setProductCode("dns");
        request.setProductType("alidns_pre");
        request.setSubscriptionType("Subscription");
        // 填入真实创建的实例ID
        request.setInstanceId("dns-cn-oew21y7bh50"); 
        try {
            ModifyInstanceResponse response = client.getAcsResponse(request);
            System.out.println(JSON.toJSON(response));
        } catch (ClientException e) {
            e.printStackTrace();
        }
    }
}

5.获取付费版DNS产品实例详情

通过获取付费版DNS产品实例详情根据实例ID获取上述开通云解析收费版本产品实例的详情信息。

调用Demo参考

package alidnstest.domainmanager;

import com.alibaba.fastjson.JSON;
import com.aliyuncs.alidns.model.v20150109.DescribeDnsProductInstanceRequest;
import com.aliyuncs.alidns.model.v20150109.DescribeDnsProductInstanceResponse;
import com.aliyuncs.bssopenapi.model.v20171214.*;
import com.aliyuncs.exceptions.ClientException;
import org.testng.annotations.Test;
import org.testng.collections.Lists;
import utils.AlidnsTestBase;

public class OrderCreateRenewUpgrade extends AlidnsTestBase {

    /**
     * 获取云解析付费版实例详情
     */

    @Test
    public void describeDnsProductInstanceTest() {
        DescribeDnsProductInstanceRequest request = new DescribeDnsProductInstanceRequest();
        // 填入真实创建的实例ID
        request.setInstanceId("dns-cn-oew21y7bh50"); 
        try {
            DescribeDnsProductInstanceResponse response = client.getAcsResponse(request);
            System.out.println(JSON.toJSON(response));
        } catch (ClientException e) {
            e.printStackTrace();
        }
    }
}