阿里云用户购买产品或者开通阿里云业务后,在阿里云平台会生成订单。您可以通过使用Alibaba Cloud SDK for Java调用相关接口查询用户订单列表及详细信息和取消未支付订单。

使用场景

阿里云用户在购买或开通产品后会在阿里云生成订单记录, 订单是瞬时行为,也就是一次业务行为就会产生一笔订单。如下图所示,构成订单的主要因素包括订单基本信息、产品信息、支付信息和业务动作这四部分。

您可以通过阿里云开放的费用中心接口,实现以下需求:

  • 通过查询订单了解自己下单/开通某产品和时间信息。
  • 通过查询订单了解自己下单/开通某产品费用及支付信息。
  • 通过查询订单详情了解自己下单/开通某产品对应详细信息,例如:产品配置信息,数量和实例ID。
  • 通过订单的operator参数查看/审计订单开通RAM账号及对应信息。
  • 如果存在已下单但尚未支付的订单,可以通过取消订单接口释放订单。

产品架构

一个自然人或组织在阿里云可以申请多个阿里云账号,每个阿里云账号可以根据需要创建多个订单,但每一个订单都会对应到一个具体的云产品,具体架构如下图所示:

相关API

您可以通过使用Alibaba Cloud SDK for Java分别调用以下API,完成订单管理操作。
API名称 说明
QueryProductList 查询阿里云产品:包含产品名称以及对应信息。
QueryOrders 查询用户所有订单的列表:包含订单号、产品和创建时间等。
GetOrderDetail 查询用户某个订单详情信息:包含订单号、产品类型和创建时间等。
CancelOrder 取消用户未支付订单。

前提条件

在使用阿里云交易和账单管理API前,请确保已完成以下操作:

  • 使用Alibaba Cloud SDK for Java,您需要一个阿里云账号和访问密钥(AccessKey)。 请在阿里云控制台中的AccessKey管理页面上创建和查看您的AccessKey。
  • 确保您已经安装了Alibaba Cloud SDK for Java,准确的SDK版本号,请参见阿里云开发工具包(SDK)
    <dependencies>
         <!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-core -->
         <dependency>
             <groupId>com.aliyun</groupId>
             <artifactId>aliyun-java-sdk-core</artifactId>
             <version>4.5.0</version>
         </dependency>
         <!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-bssopenapi -->
         <dependency>
             <groupId>com.aliyun</groupId>
             <artifactId>aliyun-java-sdk-bssopenapi</artifactId>
             <version>1.5.5</version>
         </dependency>
    </dependencies>

典型案例

  • 查询用户订单列表:

    以下示例代码展示了通过调用QueryOrders接口查询订单,获取产品下单/开通的时间信息。

    import com.aliyuncs.DefaultAcsClient;
    import com.aliyuncs.IAcsClient;
    import com.aliyuncs.exceptions.ClientException;
    import com.aliyuncs.exceptions.ServerException;
    import com.aliyuncs.profile.DefaultProfile;
    import com.google.gson.Gson;
    import com.aliyuncs.bssopenapi.model.v20171214.*;
    
    public class BssOpenApiDemo {
    
         public static void main(String[] args) {
            try {
              // 给BssOpenApi产品添加默认region路由信息
              DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", "BssOpenApi", "business.aliyuncs.com");
              // 中国站产品的调用,统一调用cn-hangzhou地域
              DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "", "");
              IAcsClient client = new DefaultAcsClient(profile);
              QueryOrdersRequest request = new QueryOrdersRequest();
              QueryOrdersResponse response = client.getAcsResponse(request);
              System.out.println(new Gson().toJson(response));
            } catch (ServerException e) {
                 e.printStackTrace();
            } catch (ClientException e) {
                 System.out.println("ErrCode:" + e.getErrCode());
                 System.out.println("ErrMsg:" + e.getErrMsg());
                 System.out.println("RequestId:" + e.getRequestId());
            }
       }
    }
  • 查询用户某个订单详情信息:

    以下示例代码展示了通过调用GetOrderDetail接口查询订单,获取某产品下单/开通的费用及支付信息。也可以通过查询订单详情,获取已下单/开通某产品对应的详细信息,例如:产品配置信息,数量和实例ID。

    import com.aliyuncs.DefaultAcsClient;
    import com.aliyuncs.IAcsClient;
    import com.aliyuncs.exceptions.ClientException;
    import com.aliyuncs.exceptions.ServerException;
    import com.aliyuncs.profile.DefaultProfile;
    import com.google.gson.Gson;
    import com.aliyuncs.bssopenapi.model.v20171214.*;
    
    public class BssOpenApiDemo {
    
        public static void main(String[] args) {
           try {
               // 给BssOpenApi产品添加默认region路由信息
               DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", "BssOpenApi", "business.aliyuncs.com");
               // 中国站产品的调用,统一调用cn-hangzhou地域
               DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "", "");
               IAcsClient client = new DefaultAcsClient(profile);
               GetOrderDetailRequest request = new GetOrderDetailRequest();
               GetOrderDetailResponse response = client.getAcsResponse(request);
               System.out.println(new Gson().toJson(response));
               }catch (ServerException e){
                   e.printStackTrace();
               }catch (ClientException e) {
                   System.out.println("ErrCode:" + e.getErrCode());
                   System.out.println("ErrMsg:" + e.getErrMsg());
                   System.out.println("RequestId:" + e.getRequestId());
               }
        }
    }                    
  • 取消未支付订单:

    以下示例代码展示了通过调用CancelOrder接口释放未支付订单。

    import com.aliyuncs.DefaultAcsClient;
    import com.aliyuncs.IAcsClient;
    import com.aliyuncs.exceptions.ClientException;
    import com.aliyuncs.exceptions.ServerException;
    import com.aliyuncs.profile.DefaultProfile;
    import com.google.gson.Gson;
    import com.aliyuncs.bssopenapi.model.v20171214.*;
    
    public class BssOpenApiDemo {
    
        public static void main(String[] args) {
    
            try {
                // 给BssOpenApi产品添加默认region路由信息
                DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", "BssOpenApi", "business.aliyuncs.com");
                // 中国站产品的调用,统一调用cn-hangzhou地域
                DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "", "");
                IAcsClient client = new DefaultAcsClient(profile);
                CancelOrderRequest request = new CancelOrderRequest();
                CancelOrderResponse response = client.getAcsResponse(request);
                System.out.println(new Gson().toJson(response));
                }catch (ServerException e){
                    e.printStackTrace();
                }catch (ClientException e){
                    System.out.println("ErrCode:" + e.getErrCode());
                    System.out.println("ErrMsg:" + e.getErrMsg());
                    System.out.println("RequestId:" + e.getRequestId());
                }
        }
    }