导入商品库

云价签产品提供开发使用的SDK库,用户通过标准阿里云 POP 调用就可方便的使用该SDK库操作云价签。

使用SDK库前,用户需要确定调用SDK库的AK密钥对,请参见系统搭建步骤4。以下以JAVA SDK为例,展示通过SDK导入商品库的过程。

建议通过阿里云提供的Credentials工具,实现以非AK硬编码的方式访问阿里云OpenAPI,具体使用方式可以参照Credentials工具身份验证,此方案仅为建议方案,需要用户安装阿里云Credentials工具才能支持,用户也可以选择自由优化的安全方案来使用AK。

POM依赖

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

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-cloudesl</artifactId>
    <version>2.0.8</version>
</dependency>

代码示例

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.cloudesl.model.v20200201.BatchInsertItemsRequest;
import com.aliyuncs.cloudesl.model.v20200201.BatchInsertItemsResponse;
import com.aliyuncs.cloudesl.model.v20200201.DescribeItemsRequest;
import com.aliyuncs.cloudesl.model.v20200201.DescribeItemsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import java.util.ArrayList;
import java.util.List;

public class EslPopTest {
    /**
     * POP客户端
     */
    private DefaultAcsClient client;
    /**
     * 门店ID
     */
    private String storeId = "";
    /**
     * 初始化POP客户端
     */
    public void init(){
        String regionId = "cn-hangzhou";
      	/**
         * accessKey请在阿里云官网生成
         * 使用默认凭证初始化Credentials Client。
         */
        com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client();
        String accessKeyId = credentialClient.getAccessKeyId();
        String accessKeySecret = credentialClient.getAccessKeySecret();

        /**
         * 封装需要的参数
         */
        DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
      	/**  
      	 * 手动设置Endpoint
         */
        DefaultProfile.addEndpoint(regionId,"cloudesl","cloudesl.cn-hangzhou.aliyuncs.com");
        /**
      	 * 创建pop客户端
         */
        client = new DefaultAcsClient(profile);
    }


    /**
     * 新增商品
     */
    public void insertItem() {
        /**
         * 调用前先初始化POP客户端
         */
        init();

      	/**
         * 准备参数
         */
        List<BatchInsertItemsRequest.ItemInfo> itemInfos = new ArrayList<BatchInsertItemsRequest.ItemInfo>();
        /**
      	 * 商品对象
         */
        BatchInsertItemsRequest.ItemInfo itemInfo = new BatchInsertItemsRequest.ItemInfo();
        //商品条形码
      	itemInfo.setItemBarCode("");
        //商品Id 只支持数字
        itemInfo.setItemId("");
      	//商品标题
        itemInfo.setItemTitle("");
        //计价单位
        itemInfo.setPriceUnit("");
      	//销售价格
        itemInfo.setActionPrice();
      	//商品规格
        itemInfo.setSaleSpec("");

      	/**
         * 上面6个为必填参数,其他是选填参数,不再一一列举,可以根据情况自行选择填写
         */
        //产地
        itemInfo.setProductionPlace("");
        //是否促销
        itemInfo.setBePromotion();
        //促销开始时间,请使用UTC时间
        itemInfo.setPromotionStart("2020-02-01T08:00:00Z");
        //促销结束时间,请使用UTC时间
        itemInfo.setPromotionEnd("2020-02-02T08:00:00Z");
        // 是否会员
        itemInfo.setBeMember(false);
        // 是否溯源
        itemInfo.setBeSourceCode(false); 
        // 库存状态  缺货-OUT_OF_STOCK 正常-NORMAL
        itemInfo.setInventoryStatus("NORMAL");
        // 自定义模板
        itemInfo.setTemplateSceneId("");

      	/**
         * 商品对象1
         */
        BatchInsertItemsRequest.ItemInfo itemInfo1 = new BatchInsertItemsRequest.ItemInfo();
        itemInfo1.setItemBarCode("");
        itemInfo1.setItemId("");
        itemInfo1.setItemTitle("");
        itemInfo1.setPriceUnit("");
        itemInfo1.setActionPrice();
        itemInfo1.setSaleSpec("");

      	/**
         * 放入集合中,批量插入每次最多100条
         */
        itemInfos.add(itemInfo);
        itemInfos.add(itemInfo1);

      	/**
         * 创建请求对象,为属性赋值
         */
        BatchInsertItemsRequest request = new BatchInsertItemsRequest();
        /**
      	 * 批量插入强制使用POST请求
         */
        request.setSysMethod(MethodType.POST);
        request.setStoreId(storeId);
        request.setItemInfos(itemInfos);
      	/**
         * 请求时加上以下两个参数,可以获取中文错误码
         */
        request.putQueryParameter("AcceptLanguage","zh-CN");
        request.putQueryParameter("Code","apiDynamicErrorCode");

        try {
            /**
             * 发送请求
             */
            BatchInsertItemsResponse acsResponse = client.getAcsResponse(request);

          	/**
             * 处理响应结果
             */
            if (acsResponse.getSuccess()) {
                List<BatchInsertItemsResponse.BatchResult> batchResults = acsResponse.getBatchResults();
                if (null != batchResults && batchResults.size() > 0) {
                    batchResults.forEach(System.out::println);
                }
            }
        } catch (ClientException e) {
            //打印错误信息
            System.out.println("POP调用失败,ErrorMessage:" + e.getErrorDescription());
        }
    }

    /**
     * 查询商品
     */
    public void describeItems() {
        //调用前先初始化POP客户端
        init();

        //准备参数
        DescribeItemsRequest request = new DescribeItemsRequest();
        //门店Id
        request.setStoreId(storeId);
        //页码
        request.setPageNumber(1);
        //每页多少条
        request.setPageSize(10);

        //请求时加上以下两个参数,可以获取中文错误码
        request.putQueryParameter("AcceptLanguage","zh-CN");
        request.putQueryParameter("Code","apiDynamicErrorCode");

        try {
            //发送请求
            DescribeItemsResponse acsResponse = client.getAcsResponse(request);
            //处理响应结果
            if (acsResponse.getSuccess()) {
                List<DescribeItemsResponse.ItemInfo> items = acsResponse.getItems();
                if (null != items) {
                    System.out.println(acsResponse.getRequestId());
                    items.forEach(System.out::println);
                }
            }
        } catch (ClientException e) {
            //打印错误信息
            System.out.println("POP调用失败,ErrorMessage:" + e.getErrorDescription());
        }
    }
}
重要
  • 在request 里和itemInfo 里加上 storeId。

  • request 要设置为 POST 方法调用。