放心购接口、贝贝接口

小店 OpenApi 文档(old):http://openapidoc.jinritemai.com/

抖点开放平台(new):https://op.jinritemai.com/

 

工具类

	/* 使用MD5进行加密得到sign */
	public static String stringToMD5(String secret, TreeMap<String, String> params) {
		String plainText = secret;
		for (String key : params.keySet()) {
			plainText += key + params.get(key);
		}
		plainText += secret;
		// org.springframework.util.DigestUtils;
		// plainText = DigestUtils.md5DigestAsHex(plainText.getBytes());// 或直接使用这个即可
		byte[] secretBytes = null;
		try {
			secretBytes = MessageDigest.getInstance("md5").digest(plainText.getBytes());
		} catch (NoSuchAlgorithmException e) {
			throw new RuntimeException("没有这个md5算法!");
		}
		StringBuilder md5code = new StringBuilder(new BigInteger(1, secretBytes).toString(16));
		while (md5code.length() < 32) {
			md5code.insert(0, "0");
		}
		return md5code.toString();
	}

	/* 拼接请求参数 */
	public static String splicing(String baseUrl, final Map<?, ?> values) {
		StringBuilder stringBUilder = new StringBuilder();
		stringBUilder.append(baseUrl);
		if (!values.isEmpty()) {
			for (Entry<?, ?> entry : values.entrySet()) {
				String name = entry.getKey().toString();
				String value = entry.getValue().toString();
				stringBUilder.append(name).append("=").append(value).append("&");
			}
		}
		return stringBUilder.deleteCharAt(stringBUilder.length() - 1).toString();
	}

1.API接口>物流发货API> /order/logisticsCompanyList

	String app_key = "app_key";
	String app_secret = "app_secret";
	String access_token = "access_token";
	String method = "order.logisticsCompanyList";
	String param_json = "{}";

	TreeMap<String, String> params = new TreeMap();
	params.put("method", method);
	params.put("param_json", param_json);

	/***********************************************************/
	/* 下面这些参数是公共的 */
	String baseUrl = "https://openapi-fxg.jinritemai.com/" + params.get("method").toString().replace(".", "/") + "?";
	params.put("app_key", app_key);
	params.put("timestamp", "2011-06-16 13:23:30");
	// params.put("v", "1");没有access_token使用
	params.put("v", "2");// 有access_token使用
	String sign = stringToMD5(app_secret, params);
	params.put("sign", sign);
	params.put("access_token", access_token);// 有access_token使用
	String url = splicing(baseUrl, params);
	System.out.println(url);

2.API接口>订单管理API> /order/list

	String app_key = "app_key";
	String app_secret = "app_secret";
	String access_token = "access_token";
	String method = "order.list";

	TreeMap<String, String> paramJson = new TreeMap();
	paramJson.put("end_time", "2019/05/27 23:59:59");
	paramJson.put("is_desc", "1");
	paramJson.put("order_by", "create_time");
	paramJson.put("page", "0");
	paramJson.put("size", "100");
	paramJson.put("start_time", "2019/05/26 10:00:01");

	TreeMap<String, String> params = new TreeMap();
	params.put("method", method);
	params.put("param_json", JSON.toJSONString(paramJson));

放心购快递公司列表.json

 

贝贝集团开放平台:http://open.beibei.com/

官方提供的签名算法

	public static String getSign(TreeMap<String, String> params) {
		String sign = secret;
		for (String key : params.keySet()) {
			sign += key + params.get(key);
		}
		sign += secret;
		return getMD5(sign);
	}

	public static String getMD5(String message) {
		String md5str = "";
		try {
			// 1 创建一个提供信息摘要算法的对象,初始化为md5算法对象
			MessageDigest md = MessageDigest.getInstance("MD5");
			// 2 将消息变成byte数组
			byte[] input = message.getBytes();
			// 3 计算后获得字节数组,这就是那128位了
			byte[] buff = md.digest(input);
			// 4 把数组每一字节(一个字节占八位)换成16进制连成md5字符串
			md5str = bytesToHex(buff);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return md5str;
	}

	/**
	 * 二进制转十六进制
	 * 
	 * @param bytes
	 * @return
	 */
	public static String bytesToHex(byte[] bytes) {
		StringBuffer md5str = new StringBuffer();
		// 把数组每一字节换成16进制连成md5字符串
		int digital;
		for (int i = 0; i < bytes.length; i++) {
			digital = bytes[i];
			if (digital < 0) {
				digital += 256;
			}
			if (digital < 16) {
				md5str.append("0");
			}
			md5str.append(Integer.toHexString(digital));
		}
		return md5str.toString().toUpperCase();
	}

使用下面的签名方式

	/* 使用MD5进行加密得到大写的sign */
	public static String getSign(String secret, TreeMap<String, String> params) {
		String sign = secret;
		for (String key : params.keySet()) {
			sign += key + params.get(key);
		}
		sign += secret;
		// org.springframework.util.DigestUtils;
		sign = DigestUtils.md5DigestAsHex(sign.getBytes()).toUpperCase();
		return sign;
	}

1.API > 开发文档  > API说明文档  > 物流API > 支持物流公司信息 beibei.outer.logistics.company.get

	String app_id = "";
	String secret = "";
	String session = "";
	String method = "beibei.outer.logistics.company.get";
	TreeMap<String, String> params = new TreeMap();
	params.put("method", method);

	/***********************************************************/
	String url = "http://api.open.beibei.com/outer_api/out_gateway/route.html";
	params.put("app_id", app_id);
	params.put("session", session);
	params.put("format", "json");
	params.put("timestamp", String.valueOf(System.currentTimeMillis()).toString().substring(0, 10));
	String sign = getSign(secret, params);
	params.put("sign", sign);
	String type = "POST";
	String strJson = new com.github.kevinsawicki.http.HttpRequest(url, type).form(params).body();
	System.out.println(strJson);

2.API > 开发文档  > API说明文档  > 订单API > 商家订单列表 beibei.outer.trade.order.get

	String app_id = "";
	String secret = "";
	String session = "";
	String method = "beibei.outer.trade.order.get";
	TreeMap<String, String> params = new TreeMap();
	params.put("method", method);
	params.put("start_time", "2022-09-25 01:11:31");
	params.put("end_time", "2022-09-26 01:11:31");
	params.put("page_no", "1");
	params.put("page_size", "100");

贝贝支持的物流公司信息.json

 

说明:放心购可以改为以下方式,放心购在上面是GET方式请求,不知道为什么用下面的方式只能用POST方式。

	/***********************************************************/
	/* 下面这些参数是公共的 */
	String baseUrl = "https://openapi-fxg.jinritemai.com/" + params.get("method").toString().replace(".", "/");
	params.put("app_key", app_key);
	params.put("timestamp", "2011-06-16 13:23:30");
	// params.put("v", "1");没有access_token使用
	params.put("v", "2");// 有access_token使用
	String sign = stringToMD5(app_secret, params);
	params.put("sign", sign);
	params.put("access_token", access_token);// 有access_token使用,不参与签名
	// String url = splicing(baseUrl, params);
	String type = "POST";
	String strJson = new com.github.kevinsawicki.http.HttpRequest(baseUrl, type).form(params).body();
	System.out.println(strJson);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值