OrderUtils.java 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. package com.iamberry.rst.utils;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.iamberry.rst.core.order.EOrderRequestData;
  4. import com.iamberry.wechat.tools.HttpClient431Util;
  5. import com.sun.org.apache.xml.internal.security.utils.Base64;
  6. import java.io.FileOutputStream;
  7. import java.io.OutputStream;
  8. import java.io.UnsupportedEncodingException;
  9. import java.net.URLEncoder;
  10. import java.security.MessageDigest;
  11. import java.util.ArrayList;
  12. import java.util.HashMap;
  13. import java.util.List;
  14. import java.util.Map;
  15. /**
  16. * @author 献
  17. * @company 深圳爱贝源科技有限公司
  18. * @date 2018/5/25 17:50
  19. * @tel 18271840547
  20. * @website www.iamberry.com
  21. */
  22. public class OrderUtils {
  23. //电商ID
  24. private static final String EBusinessID="1343593";
  25. //电商加密私钥,快递鸟提供
  26. private static final String AppKey="3597c368-9dc0-40b5-9cf2-86d9cb90e38a";
  27. // 正式环境地址:http://api.kdniao.cc/api/Eorderservice
  28. // 测试环境地址:http://testapi.kdniao.cc:8081/api/EOrderService
  29. private static final String ReqURL="http://api.kdniao.cc/api/Eorderservice";
  30. public static void main(String[] args) throws Exception {
  31. EOrderRequestData eOrderRequestData = new EOrderRequestData();
  32. eOrderRequestData.setShipperCode("SF");
  33. eOrderRequestData.setOrderCode("28230283280823");
  34. eOrderRequestData.setPayType(1);
  35. eOrderRequestData.setExpType("1");
  36. eOrderRequestData.setCost(3680.00);
  37. eOrderRequestData.setOtherCost(0.0);
  38. // 收件人信息
  39. Map<String, Object> Receiver = new HashMap<String, Object>();
  40. Receiver.put("Name", "何秀刚");
  41. Receiver.put("Tel", "18989890909");
  42. Receiver.put("ProvinceName", "广东省");
  43. Receiver.put("CityName", "深圳市");
  44. Receiver.put("Address", "莲花街道深南大道特区报业大厦12B");
  45. eOrderRequestData.setReceiver(Receiver);
  46. // 发件人信息
  47. Map<String, Object> Sender = new HashMap<String, Object>();
  48. Sender.put("Name", "何秀刚");
  49. Sender.put("Tel", "18778780808");
  50. Sender.put("ProvinceName", "广东省");
  51. Sender.put("CityName", "深圳市");
  52. Sender.put("Address", "莲花街道深南大道特区报业大厦12B");
  53. eOrderRequestData.setSender(Sender);
  54. // 产品信息
  55. List<Map<String, Object>> Commodity = new ArrayList<>();
  56. Map<String, Object> product1 = new HashMap<String, Object>();
  57. product1.put("GoodsName", "美国WaterO净饮水一体机");
  58. Map<String, Object> product2 = new HashMap<String, Object>();
  59. product2.put("GoodsName", "爱贝源智能冲奶机M1");
  60. Commodity.add(product1);
  61. // Commodity.add(product2);
  62. eOrderRequestData.setCommodity(Commodity);
  63. eOrderRequestData.setWeight(11.9);
  64. eOrderRequestData.setQuantity(2);
  65. eOrderRequestData.setIsReturnPrintTemplate(1);
  66. // 执行
  67. String json = orderOnlineByJson(eOrderRequestData);
  68. System.out.println(json);
  69. JSONObject jsonObject = JSONObject.parseObject(json);
  70. Object template = jsonObject.get("PrintTemplate");
  71. // 写入本地磁盘
  72. OutputStream outputStream = new FileOutputStream("C:\\Users\\Administrator\\Desktop\\test.html");
  73. outputStream.write(template.toString().getBytes("UTF-8"));
  74. outputStream.flush();
  75. outputStream.close();
  76. }
  77. /**
  78. * Json方式 电子面单
  79. * @throws Exception
  80. */
  81. public static String orderOnlineByJson(EOrderRequestData orderRequestData) throws Exception {
  82. // 生成电子面单的请求数据
  83. String requestData = JSONObject.toJSONString(orderRequestData);
  84. // 生成系统级请求数据
  85. Map<String, String> params = new HashMap<String, String>();
  86. params.put("RequestData", urlEncoder(requestData, "UTF-8"));
  87. params.put("EBusinessID", EBusinessID);
  88. params.put("RequestType", "1007");
  89. String dataSign=encrypt(requestData, AppKey, "UTF-8");
  90. params.put("DataSign", urlEncoder(dataSign, "UTF-8"));
  91. params.put("DataType", "2");
  92. // 发送请求
  93. return HttpClient431Util.doPost(params, ReqURL);
  94. }
  95. /**
  96. * MD5加密
  97. * @param str 内容
  98. * @param charset 编码方式
  99. * @throws Exception
  100. */
  101. @SuppressWarnings("unused")
  102. private static String MD5(String str, String charset) throws Exception {
  103. MessageDigest md = MessageDigest.getInstance("MD5");
  104. md.update(str.getBytes(charset));
  105. byte[] result = md.digest();
  106. StringBuilder sb = new StringBuilder(32);
  107. for (byte aResult : result) {
  108. int val = aResult & 0xff;
  109. if (val <= 0xf) {
  110. sb.append("0");
  111. }
  112. sb.append(Integer.toHexString(val));
  113. }
  114. return sb.toString().toLowerCase();
  115. }
  116. /**
  117. * base64编码
  118. * @param str 内容
  119. * @param charset 编码方式
  120. * @throws UnsupportedEncodingException
  121. */
  122. private static String base64(String str, String charset) throws UnsupportedEncodingException {
  123. return Base64.encode(str.getBytes(charset));
  124. }
  125. @SuppressWarnings("unused")
  126. private static String urlEncoder(String str, String charset) throws UnsupportedEncodingException{
  127. return URLEncoder.encode(str, charset);
  128. }
  129. /**
  130. * 电商Sign签名生成
  131. * @param content 内容
  132. * @param keyValue Appkey
  133. * @param charset 编码方式
  134. * @throws UnsupportedEncodingException ,Exception
  135. * @return DataSign签名
  136. */
  137. @SuppressWarnings("unused")
  138. private static String encrypt (String content, String keyValue, String charset) throws UnsupportedEncodingException, Exception {
  139. if (keyValue != null)
  140. {
  141. return base64(MD5(content + keyValue, charset), charset);
  142. }
  143. return base64(MD5(content, charset), charset);
  144. }
  145. }