饿百零售接口

最近公司项目需要对接饿百零售(*****注意不是饿了么平台),小编吃过亏,以为是饿了么平台,虽然饿百零售和饿了么是一家,但是还是要小心,看了一下网上饿百零售的很少,所以自己来分享一下

1 . 对接api

------ 下面是封装的工具类


    //公共参数
    private static final String app_id = "12345678";
    private static final String app_key = "abcdefg";



    //	发送请求
    public static String sendel(String cmd, Map<String, Object> body) {
        try{
//			因为饿了么限制请求频率,进行请求先睡眠1秒
            Thread.sleep(1000);
        }catch(Exception e){
            System.exit(0);//退出程序
        }
        Map<String, Object> params = new HashMap<>();

        params.put("cmd", cmd);
        params.put("encrypt", "");//如果encrypt没有,直接用"",不要用null表示
        params.put("secret",app_key);
        params.put("source",app_id);

//        随机36位ticket
        String tik=generateRandomString(36);
        params.put("ticket", tik);
        params.put("body", body);
        params.put("version", "3");
        Long newTime = System.currentTimeMillis();
        String time = newTime.toString().substring(0, 10);
        params.put("timestamp", time);//当前时间戳

        String sign = getSign(params);
        params.put("sign", sign);
        params.remove("secret");
        //params.put("body", JSON.toJSON(params.get("body")));

        params.put("body",JSON.toJSON(params.get("body")));
        params.put("body", URLEncoder.encode(params.get("body").toString()));

        StringBuilder requestparams = new StringBuilder();
        for (Map.Entry<String, Object> map : params.entrySet()) {
            requestparams.append(map.getKey()+"="+map.getValue() + "&");
        }

        return HttpRequestUtil.sendPost("https://api-be.ele.me/",requestparams.substring(0, requestparams.length() - 1).toString());
    }



    //	字符串池
    private static String[] STR_ARR = new String[] {"A", "B", "C", "D", "E",
            "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R",
            "S", "T", "U", "V", "W", "X", "Y", "Z", "1", "2", "3", "4", "5",
            "6", "7", "8", "9", "0" };
    //	随机数生成
    public static String generateRandomString(int length) {
        StringBuilder sb = new StringBuilder();
        Random rand = new Random();
        for (int i = 0; i < length; i++) {
            if(i==8||i==13||i==18||i==23) {
                sb.append("-");
            }else {
                sb.append(STR_ARR[rand.nextInt(STR_ARR.length)]);
            }
        }
        return sb.toString();
    }

    //	签名生成
    public static String getSign(Map<String, Object> data) {
        TreeMap<String, Object> arr = new TreeMap<String, Object>();
        arr.put("body", JSON.toJSON(data.get("body")));
        arr.put("cmd", data.get("cmd"));
        arr.put("encrypt", "");
        arr.put("secret", data.get("secret"));
        arr.put("source", data.get("source"));
        arr.put("ticket", data.get("ticket"));
        arr.put("timestamp", data.get("timestamp"));
        arr.put("version", data.get("version"));
        StringBuilder strSignTmp = new StringBuilder("");
        Iterator it = arr.keySet().iterator();
        while (it.hasNext()) {
            String key = it.next().toString();
            strSignTmp.append(key + "=" + arr.get(key) + "&");
        }
        String strSign = strSignTmp.toString().substring(0, strSignTmp.length() - 1);
        String sign = getMD5(strSign.toString());
        return sign;
    }

    /**
     * 获取MD5
     * @return String
     */
    public static String getMD5(String input) {
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            byte[] messageDigest = md.digest(input.getBytes());
            BigInteger number = new BigInteger(1, messageDigest);
            String hashtext = number.toString(16);
            while (hashtext.length() < 32) {
                hashtext = "0" + hashtext;
            }
            return hashtext.toUpperCase();
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e);
        }
    }

    //下行推送成功返回
    public static Map<String, Object> param(String cmd){
        Map<String, Object> body = new HashMap<>();
        body.put("errno", "0");
        body.put("error", "success");
        Map<String, Object> params = new HashMap<>();

        params.put("cmd", cmd);
        params.put("encrypt", "");//如果encrypt没有,直接用"",不要用null表示
        params.put("secret", app_key);
        params.put("source", app_id);
//        随机36位ticket
        String tik = ElemeUtils.generateRandomString(36);
        params.put("ticket", tik);
        params.put("body", body);
        params.put("version", "3");
        Long newTime = System.currentTimeMillis();
        String time = newTime.toString().substring(0, 10);
        params.put("timestamp", time);//当前时间戳


        String sign = ElemeUtils.getSign(params);
        params.put("sign", sign);
        params.remove("secret");
        params.put("body", body);
        return params;
    }
------------------------------------------------------------------------
//http post请求
public class HttpRequestUtil {

    public static String sendPost(String url,String param) {
    	System.out.println("param="+param);
        PrintWriter out = null;
        BufferedReader in = null;
        String result = "";
        try {
            URL realUrl = new URL(url);
            URLConnection conn = realUrl.openConnection();
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
            conn.setRequestProperty("user-agent",
                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            conn.setDoOutput(true);
            conn.setDoInput(true);
            out = new PrintWriter(conn.getOutputStream());
            out.print(param);
            out.flush();
            in = new BufferedReader(
                    new InputStreamReader(conn.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            System.out.println("·¢ËÍ POST ÇëÇó³öÏÖÒì³££¡"+e);
            e.printStackTrace();
        }
        finally{
            try{
                if(out!=null){
                    out.close();
                }
                if(in!=null){
                    in.close();
                }
            }
            catch(IOException ex){
                ex.printStackTrace();
            }
        }
        return result;
    }
}    

---- 下面我们来写个main测试一下

/**
 * 饿了么商品删除实体类
 */
public class SkuDelete {
    //商户id
    private String shop_id;
    //商品ID,多个id以逗号连接,最多同时支持100个商品id,与custom_sku_id upc互斥
    private String sku_id;
    //	商品自定义ID,与sku_id upc参数互斥,多个upc以逗号连接,批量操作时最多同时支持100个,逗号分割;单个操作时传入一
    private String custom_sku_id;

    public String getShop_id() {
        return shop_id;
    }

    public void setShop_id(String shop_id) {
        this.shop_id = shop_id;
    }

    public String getSku_id() {
        return sku_id;
    }

    public void setSku_id(String sku_id) {
        this.sku_id = sku_id;
    }

    public String getCustom_sku_id() {
        return custom_sku_id;
    }

    public void setCustom_sku_id(String custom_sku_id) {
        this.custom_sku_id = custom_sku_id;
    }

    @Override
    public String toString() {
        return "SkuDelete{" +
                "shop_id='" + shop_id + '\'' +
                ", sku_id='" + sku_id + '\'' +
                ", custom_sku_id='" + custom_sku_id + '\'' +
                '}';
    }
}

---------------------------------------------------------------------------
 /**
     * 删除商品 或者 批量删除
     * @param skuDelete 传参
     * @return
     */
    public static String skuDelete(SkuDelete skuDelete){
        Map<String, Object> body = new HashMap<>();
        body.put("shop_id",skuDelete.getShop_id());
        if (StringUtils.isNotEmpty(skuDelete.getSku_id()) && StringUtils.isEmpty(skuDelete.getCustom_sku_id())){
            body.put("sku_id",skuDelete.getSku_id());
        }
        if (StringUtils.isNotEmpty(skuDelete.getCustom_sku_id()) && StringUtils.isEmpty(skuDelete.getSku_id())){
            body.put("custom_sku_id",skuDelete.getCustom_sku_id());
        }
        String cmd = "sku.delete";
        return ElemeUtils.sendel(cmd,body);
    }
------------------------------------------------------------------------
 //	商品删除调用demo
    public static void main(String[] args) throws IOException {


        SkuDelete skuDelete = new SkuDelete();
        skuDelete.setSku_id("1612448206221189");
        skuDelete.setShop_id("32267754249");
        System.out.println(ElemeGoodUtils.skuDelete(skuDelete));
       // 
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值