123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- package com.iamberry.rst.utils;
- import com.alibaba.fastjson.JSONObject;
- import com.iamberry.rst.core.order.EOrderRequestData;
- import com.iamberry.wechat.tools.HttpClient431Util;
- import com.sun.org.apache.xml.internal.security.utils.Base64;
- import java.io.FileOutputStream;
- import java.io.OutputStream;
- import java.io.UnsupportedEncodingException;
- import java.net.URLEncoder;
- import java.security.MessageDigest;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- /**
- * @author 献
- * @company 深圳爱贝源科技有限公司
- * @date 2018/5/25 17:50
- * @tel 18271840547
- * @website www.iamberry.com
- */
- public class OrderUtils {
- //电商ID
- private static final String EBusinessID="1343593";
- //电商加密私钥,快递鸟提供
- private static final String AppKey="3597c368-9dc0-40b5-9cf2-86d9cb90e38a";
- // 正式环境地址:http://api.kdniao.cc/api/Eorderservice
- // 测试环境地址:http://testapi.kdniao.cc:8081/api/EOrderService
- private static final String ReqURL="http://api.kdniao.cc/api/Eorderservice";
- public static void main(String[] args) throws Exception {
- EOrderRequestData eOrderRequestData = new EOrderRequestData();
- eOrderRequestData.setShipperCode("SF");
- eOrderRequestData.setOrderCode("28230283280823");
- eOrderRequestData.setPayType(1);
- eOrderRequestData.setExpType("1");
- eOrderRequestData.setCost(3680.00);
- eOrderRequestData.setOtherCost(0.0);
- // 收件人信息
- Map<String, Object> Receiver = new HashMap<String, Object>();
- Receiver.put("Name", "何秀刚");
- Receiver.put("Tel", "18989890909");
- Receiver.put("ProvinceName", "广东省");
- Receiver.put("CityName", "深圳市");
- Receiver.put("Address", "莲花街道深南大道特区报业大厦12B");
- eOrderRequestData.setReceiver(Receiver);
- // 发件人信息
- Map<String, Object> Sender = new HashMap<String, Object>();
- Sender.put("Name", "何秀刚");
- Sender.put("Tel", "18778780808");
- Sender.put("ProvinceName", "广东省");
- Sender.put("CityName", "深圳市");
- Sender.put("Address", "莲花街道深南大道特区报业大厦12B");
- eOrderRequestData.setSender(Sender);
- // 产品信息
- List<Map<String, Object>> Commodity = new ArrayList<>();
- Map<String, Object> product1 = new HashMap<String, Object>();
- product1.put("GoodsName", "美国WaterO净饮水一体机");
- Map<String, Object> product2 = new HashMap<String, Object>();
- product2.put("GoodsName", "爱贝源智能冲奶机M1");
- Commodity.add(product1);
- // Commodity.add(product2);
- eOrderRequestData.setCommodity(Commodity);
- eOrderRequestData.setWeight(11.9);
- eOrderRequestData.setQuantity(2);
- eOrderRequestData.setIsReturnPrintTemplate(1);
- // 执行
- String json = orderOnlineByJson(eOrderRequestData);
- System.out.println(json);
- JSONObject jsonObject = JSONObject.parseObject(json);
- Object template = jsonObject.get("PrintTemplate");
- // 写入本地磁盘
- OutputStream outputStream = new FileOutputStream("C:\\Users\\Administrator\\Desktop\\test.html");
- outputStream.write(template.toString().getBytes("UTF-8"));
- outputStream.flush();
- outputStream.close();
- }
- /**
- * Json方式 电子面单
- * @throws Exception
- */
- public static String orderOnlineByJson(EOrderRequestData orderRequestData) throws Exception {
- // 生成电子面单的请求数据
- String requestData = JSONObject.toJSONString(orderRequestData);
- // 生成系统级请求数据
- Map<String, String> params = new HashMap<String, String>();
- params.put("RequestData", urlEncoder(requestData, "UTF-8"));
- params.put("EBusinessID", EBusinessID);
- params.put("RequestType", "1007");
- String dataSign=encrypt(requestData, AppKey, "UTF-8");
- params.put("DataSign", urlEncoder(dataSign, "UTF-8"));
- params.put("DataType", "2");
- // 发送请求
- return HttpClient431Util.doPost(params, ReqURL);
- }
- /**
- * MD5加密
- * @param str 内容
- * @param charset 编码方式
- * @throws Exception
- */
- @SuppressWarnings("unused")
- private static String MD5(String str, String charset) throws Exception {
- MessageDigest md = MessageDigest.getInstance("MD5");
- md.update(str.getBytes(charset));
- byte[] result = md.digest();
- StringBuilder sb = new StringBuilder(32);
- for (byte aResult : result) {
- int val = aResult & 0xff;
- if (val <= 0xf) {
- sb.append("0");
- }
- sb.append(Integer.toHexString(val));
- }
- return sb.toString().toLowerCase();
- }
- /**
- * base64编码
- * @param str 内容
- * @param charset 编码方式
- * @throws UnsupportedEncodingException
- */
- private static String base64(String str, String charset) throws UnsupportedEncodingException {
- return Base64.encode(str.getBytes(charset));
- }
- @SuppressWarnings("unused")
- private static String urlEncoder(String str, String charset) throws UnsupportedEncodingException{
- return URLEncoder.encode(str, charset);
- }
- /**
- * 电商Sign签名生成
- * @param content 内容
- * @param keyValue Appkey
- * @param charset 编码方式
- * @throws UnsupportedEncodingException ,Exception
- * @return DataSign签名
- */
- @SuppressWarnings("unused")
- private static String encrypt (String content, String keyValue, String charset) throws UnsupportedEncodingException, Exception {
- if (keyValue != null)
- {
- return base64(MD5(content + keyValue, charset), charset);
- }
- return base64(MD5(content, charset), charset);
- }
- }
|