圆通开放平台电子面单下单接口,适用于第三方系统对接

圆通开放平台电子面单下单接口

语言JAVA
作者:不停留的风
1、查询需要下单的圆通订单数据
2、把需要进行电子面单下单的数据转成XML格式
3、传输数据
4、获取服务端的反馈信息
5、把反馈的信息 进行存储
完整代码,不清楚的请私信或者留言:

package servlet;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.security.MessageDigest;
import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.tomcat.util.codec.binary.Base64;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

import com.sun.xml.internal.txw2.Document;

import unit.FYOrder;
import unit.SFAPI;
import dao.Fy_OrderDao;
//访问地址 http://localhost/YTO/YTOxiadan
@WebServlet("/YTOxiadan")
public class YTOApi extends HttpServlet{
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	
		Fy_OrderDao fod=new Fy_OrderDao();
		List<FYOrder> list=fod.findAll();
		for(int aa=0;list.size()>aa;aa++){
			
		response.setContentType("application/json ;charset=UTF-8");
		request.setCharacterEncoding("utf-8");
		String apiUrl = "http://openapi.yto.net.cn/service/e_order_create/v1/R9Wao5";
		String clientId = "K21000119";
		String customerId = "K21000119";
		String parternId = "u2Z1F7Fh";
		//String mailNo = "5555555358";//申请但没有使用过的电子面单号
		String id=list.get(aa).getid(); //物流订单号
		

		
		try{
			//打开连接
			URL url = new URL(apiUrl);
			HttpURLConnection connection = (HttpURLConnection) url.openConnection();
			connection.setDoOutput(true);
			connection.setRequestMethod("POST");
			OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");
			//数据
			StringBuilder xmlBuilder = new StringBuilder();
			xmlBuilder.append("<RequestOrder>");
			xmlBuilder.append("    <clientID>"+clientId+"</clientID>");
			xmlBuilder.append("    <logisticProviderID>YTO</logisticProviderID>");
			xmlBuilder.append("    <customerId>"+customerId+"</customerId>");
			xmlBuilder.append("    <txLogisticID>"+id+"</txLogisticID>");
			xmlBuilder.append("    <tradeNo>"+clientId+"</tradeNo>");
			xmlBuilder.append("    <totalServiceFee>1</totalServiceFee>"); //保值金额
			xmlBuilder.append("    <codSplitFee>1</codSplitFee>");//物流公司分润

	
			String sss="货到付款";
			String spare7=list.get(aa).getspare7();
			String total_price=list.get(aa).gettotal_price();
			  if(spare7.equals(sss)){ 
			xmlBuilder.append("    <orderType>4</orderType>");  //订单类型(0-COD,1-普通订单,2-便携式订单,3-退货单,4-到付)  
			xmlBuilder.append("    <agencyFund>"+total_price+"</agencyFund>"); //代收金额
			  }else{
				  xmlBuilder.append("    <orderType>1</orderType>");  //订单类型(0-COD,1-普通订单,2-便携式订单,3-退货单,4-到付)  
				  xmlBuilder.append("    <agencyFund>0</agencyFund>"); //在线支付
			  }
			xmlBuilder.append("    <serviceType>0</serviceType>"); //服务类型(1-上门揽收, 0-自己联系)。默认为0
			xmlBuilder.append("    <flag>0</flag>");
			
			xmlBuilder.append("    <goodsValue>"+total_price+"</goodsValue>"); //商品金额
			xmlBuilder.append("    <itemsValue>1</itemsValue>");//货物价值
			xmlBuilder.append("    <insuranceValue>1</insuranceValue>"); //保值金额
			xmlBuilder.append("    <special>1</special>"); //商品类型
			xmlBuilder.append("    <remark>请拿轻放,优先配送!</remark>");//备注
	   //     xmlBuilder.append("    <type>1</type>");
		//	xmlBuilder.append("    <totalValue>1</totalValue>");
		//	xmlBuilder.append("    <itemsWeight>1</itemsWeight>");
		//	xmlBuilder.append("    <packageOrNot>1</packageOrNot>");
		//	xmlBuilder.append("    <orderSource>1</orderSource>");
			xmlBuilder.append("    <sender>"); //发件人
			xmlBuilder.append("        <name>宋老师</name>");
			xmlBuilder.append("        <postCode>315400</postCode>");
			xmlBuilder.append("        <phone>057462966578</phone>");
			xmlBuilder.append("        <mobile>13306640130</mobile>");
			xmlBuilder.append("        <prov>浙江省</prov>");
			xmlBuilder.append("        <city>宁波市,余姚区</city>");
			xmlBuilder.append("        <address>宁波市余姚河姆渡镇罗江寺慈线新世纪塑复铜管有限公司</address>");
			xmlBuilder.append("    </sender>");
			xmlBuilder.append("    <receiver>");  //收件人
			String user_name=list.get(aa).getuser_name();
			xmlBuilder.append("        <name>"+user_name+"</name>");
			
			xmlBuilder.append("        <postCode>000000</postCode>");
			xmlBuilder.append("        <phone></phone>");
			String user_phone=list.get(aa).getuser_phone();
			xmlBuilder.append("        <mobile>"+user_phone+"</mobile>");
			String user_province=list.get(aa).getuser_province();
			xmlBuilder.append("        <prov>"+user_province+"</prov>");
			String user_city=list.get(aa).getuser_city();
			String user_area=list.get(aa).getuser_area();
			xmlBuilder.append("        <city>"+user_city+","+user_area+"</city>");
			String user_address=list.get(aa).getuser_address();
			xmlBuilder.append("        <address>"+user_address+"</address>");
			xmlBuilder.append("    </receiver>");
			xmlBuilder.append("    <items>");
			xmlBuilder.append("        <item>");
			String package_info=list.get(aa).getpackage_info();
			xmlBuilder.append("            <itemName>"+package_info+"</itemName>"); //商品名称
			String quantity=list.get(aa).getquantity();
			xmlBuilder.append("            <number>"+quantity+"</number>");
			
			xmlBuilder.append("            <itemValue>"+total_price+"</itemValue>"); //商品价格
			xmlBuilder.append("        </item>");
			xmlBuilder.append("    </items>");
			xmlBuilder.append("</RequestOrder>");
	//      System.out.print("---xmlBuilder:"+xmlBuilder);
			//加密
			MessageDigest messagedigest = MessageDigest.getInstance("MD5");
			messagedigest.update((xmlBuilder.toString() + parternId).getBytes("UTF-8"));
			byte[] abyte0 = messagedigest.digest();
			String data_digest = new String(Base64.encodeBase64(abyte0));
			
			//开始时间
			long a = System.currentTimeMillis();
			
			//查询
			String queryString = "logistics_interface=" + URLEncoder.encode(xmlBuilder.toString(), "UTF-8")
					+ "&data_digest="+ URLEncoder.encode(data_digest,"UTF-8")
					+ "&clientId=" + URLEncoder.encode(clientId, "UTF-8");
			out.write(queryString);
			out.flush();
			out.close();
			//获取服务端的反馈
			String responseString = "";
			String strLine = "";
			InputStream in = connection.getInputStream();
			BufferedReader reader = new BufferedReader(new InputStreamReader(in));
			while ((strLine = reader.readLine()) != null) {
				responseString += strLine + "\n";
			}
			in.close();
			
			//结束时间
			long b = System.currentTimeMillis();
			
			//响应时间
			long c = b - a;
			System.err.print("响应时间:"+c + "ms\n");
			
			System.err.print("请求的返回信息:"+responseString);
		    //测试
			org.dom4j.Document doc = null;
            try {
            	doc = DocumentHelper.parseText(responseString);
            	 Element rootElt = doc.getRootElement(); 
            	  //物流公司ID
            	 String logisticProviderID = rootElt.elementTextTrim("logisticProviderID"); 
                 //运单号
            	 String mailNo = rootElt.elementTextTrim("mailNo"); 
            	 //twoDimensionCode
            	 String qrCode = rootElt.elementTextTrim("qrCode"); 
            	 //orderid
            	  String txLogisticID = rootElt.elementTextTrim("txLogisticID"); 
            	  SFAPI sfapi=new SFAPI();
            	  sfapi.setWaybillNo(mailNo);
            	  sfapi.settwoDimensionCode(qrCode);
            	  sfapi.setorderId(txLogisticID);
            	  Fy_OrderDao fydao=new Fy_OrderDao();
                  fydao.insert2(sfapi);
            	  
                  try {
          			
          			Thread.sleep(3 * 1000);
          		} catch (InterruptedException e) {
          			// TODO Auto-generated catch block
          			e.printStackTrace();
          		} //设置暂停的时间 3秒
            	  // Iterator iterss = rootElt.elementIterator("distributeInfo");
            	 
             //    Element recordEless = (Element) iterss.next();
            //	 String result = recordEless.elementTextTrim("shortAddress"); 
            	// System.out.println("result:" + result);
			
            } catch (Exception e) {
				// TODO: handle exception
			}
			
			
		}catch(Exception e){
			e.printStackTrace();
		}
		}
	}
	

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
}

  • 28
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不停留的风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值