顺丰--Java丰桥接口整体封装(下单、查询、打印)

1、丰桥接口调用返回的都是xml格式内容,要去封装一个对象映射返回结果。下面类就是映射对象:

import java.io.Serializable;
import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlValue;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "Response")
public class SfExpressResponse implements Serializable{
	
	private static final long serialVersionUID = 1L;
	
	 //响应状态
    @XmlElement(name = "Head")
    private String Head;
    //响应失败原因
    @XmlElement(name = "ERROR")
    private ERROR ERROR;
    //响应结果
    @XmlElement(name = "Body")
    private Body Body;
 
 
    @XmlAccessorType(XmlAccessType.NONE)
    public static class ERROR implements Serializable{
          
		private static final long serialVersionUID = 1L;
		
		@XmlAttribute(name = "code")
        private String code;
        @XmlValue
        private String text;
 
        public String getCode() {
            return code;
        }
 
        public void setCode(String code) {
            this.code = code;
        }
 
        public String getText() {
            return text;
        }
 
        public void setText(String text) {
            this.text = text;
        }

		@Override
		public String toString() {
			return "ERROR [code=" + code + ", text=" + text + "]";
		}
    }
 
    @XmlAccessorType(XmlAccessType.NONE)
    public static class Body implements Serializable{
    	
		private static final long serialVersionUID = 1L;

		@XmlElement(name = "OrderResponse")
        private OrderResponse OrderResponse;
 
        @XmlElement(name = "RouteResponse")
        private RouteResponse RouteResponse;

		public SfExpressResponse.OrderResponse getOrderResponse() {
            return OrderResponse;
        }
 
        public void setOrderResponse(SfExpressResponse.OrderResponse orderResponse) {
            OrderResponse = orderResponse;
        }
 
        public SfExpressResponse.RouteResponse getRouteResponse() {
            return RouteResponse;
        }
 
        public void setRouteResponse(SfExpressResponse.RouteResponse routeResponse) {
            RouteResponse = routeResponse;
        }

		@Override
		public String toString() {
			return "Body [OrderResponse=" + OrderResponse + ", RouteResponse="
					+ RouteResponse + "]";
		}
    }
    @XmlRootElement(name="rls_info")
    @XmlAccessorType(XmlAccessType.NONE)
    public static class Rls_info implements Serializable{
		    
		private static final long serialVersionUID = 1L;

		@XmlAttribute(name = "invoke_result")
        private String invoke_result;
    	 
		@XmlElement(name = "rls_detail")
		private Rls_detail rls_detail;

		public String getInvoke_result() {
			return invoke_result;
		}

		public void setInvoke_result(String invoke_result) {
			this.invoke_result = invoke_result;
		}

		public Rls_detail getRls_detail() {
			return rls_detail;
		}

		public void setRls_detail(Rls_detail rls_detail) {
			this.rls_detail = rls_detail;
		}
    }
    @XmlRootElement(name="rls_detail") 
    @XmlAccessorType(XmlAccessType.NONE)
    public static class Rls_detail implements Serializable{
    	
		private static final long serialVersionUID = 1L;

		@XmlAttribute(name = "sourceTransferCode")
         private String sourceTransferCode;
    	 
    	 @XmlAttribute(name = "sourceCityCode")
         private String sourceCityCode;
    	 
    	 @XmlAttribute(name = "sourceDeptCode")
         private String sourceDeptCode;
    	 
    	 @XmlAttribute(name = "sourceTeamCode")
         private String sourceTeamCode;
    	 
    	 @XmlAttribute(name = "destCityCode")
         private String destCityCode;
    	 
    	 @XmlAttribute(name = "destDeptCode")
         private String destDeptCode;
    
    	 @XmlAttribute(name = "destDeptCodeMapping")
    	 private String destDeptCodeMapping;
    	 
    	 @XmlAttribute(name = "destTeamCode")
    	 private String destTeamCode;
    	 
    	 @XmlAttribute(name = "destTransferCode")
    	 private String destTransferCode;
    	 
    	 @XmlAttribute(name = "destRouteLabel")
         private String destRouteLabel;
    	 
    	 @XmlAttribute(name = "cargoTypeCode")
         private String cargoTypeCode;
    	 
    	 @XmlAttribute(name = "limitTypeCode")
         private String limitTypeCode;
    	 
    	 @XmlAttribute(name = "expressTypeCode")
         private String expressTypeCode;
    	 
    	 @XmlAttribute(name = "twoDimensionCode")
         private String twoDimensionCode;
    	 
    	 @XmlAttribute(name = "proCode")
         private String proCode;
    	 
    	 @XmlAttribute(name = "printIcon")
    	 private String printIcon;
     	 @XmlAttribute(name = "codingMapping")
    	 private String codingMapping;
    	 
     	 
		public String getCodingMapping() {
			return codingMapping;
		}

		public void setCodingMapping(String codingMapping) {
			this.codingMapping = codingMapping;
		}

		public String getPrintIcon() {
			return printIcon;
		}

		public void setPrintIcon(String printIcon) {
			this.printIcon = printIcon;
		}


		public String getDestDeptCodeMapping() {
			return destDeptCodeMapping;
		}

		
		public void setDestDeptCodeMapping(String destDeptCodeMapping) {
			this.destDeptCodeMapping = destDeptCodeMapping;
		}

		public String getDestTeamCode() {
			return destTeamCode;
		}

		public void setDestTeamCode(String destTeamCode) {
			this.destTeamCode = destTeamCode;
		}

		public String getDestTransferCode() {
			return destTransferCode;
		}

		public void setDestTransferCode(String destTransferCode) {
			this.destTransferCode = destTransferCode;
		}

		public String getSourceTransferCode() {
			return sourceTransferCode;
		}

		public void setSourceTransferCode(String sourceTransferCode) {
			this.sourceTransferCode = sourceTransferCode;
		}

		public String getSourceCityCode() {
			return sourceCityCode;
		}

		public void setSourceCityCode(String sourceCityCode) {
			this.sourceCityCode = sourceCityCode;
		}

		public String getSourceDeptCode() {
			return sourceDeptCode;
		}

		public void setSourceDeptCode(String sourceDeptCode) {
			this.sourceDeptCode = sourceDeptCode;
		}

		public String getSourceTeamCode() {
			return sourceTeamCode;
		}

		public void setSourceTeamCode(String sourceTeamCode) {
			this.sourceTeamCode = sourceTeamCode;
		}

		public String getDestCityCode() {
			return destCityCode;
		}

		public void setDestCityCode(String destCityCode) {
			this.destCityCode = destCityCode;
		}

		public String getDestDeptCode() {
			return destDeptCode;
		}

		public void setDestDeptCode(String destDeptCode) {
			this.destDeptCode = destDeptCode;
		}

		public String getDestRouteLabel() {
			return destRouteLabel;
		}

		public void setDestRouteLabel(String destRouteLabel) {
			this.destRouteLabel = destRouteLabel;
		}

		public String getCargoTypeCode() {
			return cargoTypeCode;
		}

		public void setCargoTypeCode(String cargoTypeCode) {
			this.cargoTypeCode = cargoTypeCode;
		}

		public String getLimitTypeCode() {
			return limitTypeCode;
		}

		public void setLimitTypeCode(String limitTypeCode) {
			this.limitTypeCode = limitTypeCode;
		}

		public String getExpressTypeCode() {
			return expressTypeCode;
		}

		public void setExpressTypeCode(String expressTypeCode) {
			this.expressTypeCode = expressTypeCode;
		}

		public String getTwoDimensionCode() {
			return twoDimensionCode;
		}

		public void setTwoDimensionCode(String twoDimensionCode) {
			this.twoDimensionCode = twoDimensionCode;
		}

		public String getProCode() {
			return proCode;
		}

		public void setProCode(String proCode) {
			this.proCode = proCode;
		}
    }

    
    @XmlRootElement(name="OrderResponse")
    @XmlAccessorType(XmlAccessType.NONE)
    public static class OrderResponse implements Serializable{
		    
		private static final long serialVersionUID = 1L;
		//订单号
        @XmlAttribute(name = "orderid")
        private String orderId;
        //运单号
        @XmlAttribute(name = "mailno")
        private String mailNo;
        //原寄地区域代码(可用于顺丰电子运单标签打印)
        @XmlAttribute(name = "origincode")
        private String originCode;
        //目的地区域代码(可用于顺丰电子运单标签打印)
        @XmlAttribute(name = "destcode")
        private String destCode;
        //筛单结果:1:人工确认 2:可收派 3:不可以收派
        @XmlAttribute(name = "filter_result")
        private String filterResult;
        
        @XmlElement(name = "rls_info")
        private Rls_info rls_info;
        

		public Rls_info getRls_info() {
			return rls_info;
		}

		public void setRls_info(Rls_info rls_info) {
			this.rls_info = rls_info;
		}

		public String getOrderId() {
            return orderId;
        }
 
        public void setOrderId(String orderId) {
            this.orderId = orderId;
        }
 
        public String getMailNo() {
            return mailNo;
        }
 
        public void setMailNo(String mailNo) {
            this.mailNo = mailNo;
        }
 
        public String getOriginCode() {
            return originCode;
        }
 
        public void setOriginCode(String originCode) {
            this.originCode = originCode;
        }
 
        public String getDestCode() {
            return destCode;
        }
 
        public void setDestCode(String destCode) {
            this.destCode = destCode;
        }
 
        public String getFilterResult() {
            return filterResult;
        }
 
        public void setFilterResult(String filterResult) {
            this.filterResult = filterResult;
        }

		@Override
		public String toString() {
			return "OrderResponse [orderId=" + orderId + ", mailNo=" + mailNo
					+ ", originCode=" + originCode + ", destCode=" + destCode
					+ ", filterResult=" + filterResult + "]";
		}
    }
 
    @XmlRootElement(name="RouteResponse")
    @XmlAccessorType(XmlAccessType.NONE)
    public static class RouteResponse implements Serializable{
		    
		private static final long serialVersionUID = 1L;
		//运单号
        @XmlAttribute(name = "mailno")
        private String mailNo;
        //路由
        @XmlElement(name = "Route")
        private List<Route> Route ;
 
        public String getMailNo() {
            return mailNo;
        }
 
        public void setMailNo(String mailNo) {
            this.mailNo = mailNo;
        }
 
        public List<SfExpressResponse.Route> getRoute() {
            return Route;
        }
 
        public void setRoute(List<SfExpressResponse.Route> route) {
            Route = route;
        }

		@Override
		public String toString() {
			return "RouteResponse [mailNo=" + mailNo + ", Route=" + Route + "]";
		}
    }
 
    @XmlRootElement(name="Route")
    @XmlAccessorType(XmlAccessType.NONE)
    public static class Route implements Serializable{
    	
		private static final long serialVersionUID = 1L;

		//路由节点发生的时间
        @XmlAttribute(name = "accept_time")
        private String acceptTime;
 
        //路由节点具体描述
        @XmlAttribute(name = "remark")
        private String remark;
 
        //路由节点操作码
        @XmlAttribute(name = "opcode")
        private String opcode;
 
        public String getAcceptTime() {
            return acceptTime;
        }
 
        public void setAcceptTime(String acceptTime) {
            this.acceptTime = acceptTime;
        }
 
        public String getRemark() {
            return remark;
        }
 
        public void setRemark(String remark) {
            this.remark = remark;
        }
 
        public String getOpcode() {
            return opcode;
        }
 
        public void setOpcode(String opcode) {
            this.opcode = opcode;
        }
    }
 
    public String getHead() {
        return Head;
    }
 
    public void setHead(String head) {
        Head = head;
    }
 
    public SfExpressResponse.ERROR getERROR() {
        return ERROR;
    }
 
    public void setERROR(SfExpressResponse.ERROR ERROR) {
        this.ERROR = ERROR;
    }
 
    public SfExpressResponse.Body getBody() {
        return Body;
    }
 
    public void setBody(SfExpressResponse.Body body) {
        Body = body;
    }

	@Override
	public String toString() {
		return "SfExpressResponse [Head=" + Head + ", ERROR=" + ERROR
				+ ", Body=" + Body + "]";
	}
}

有了上面的类还需要一个xml解析的工具类,为了清楚那个类是哪个包下面的,直接连import一起复制出来:


import java.io.FileNotFoundException;  
import java.io.FileReader;  
import java.io.FileWriter;  
import java.io.IOException;  
import java.io.StringReader;  
import java.io.StringWriter;  
  
import javax.xml.bind.JAXBContext;  
import javax.xml.bind.JAXBException;  
import javax.xml.bind.Marshaller;  
import javax.xml.bind.Unmarshaller;


public class XmlUtils {
	 /** 
     * 将对象直接转换成String类型的 XML输出 
     *  
     * @param obj 
     * @return 
     */  
    public static String convertToXml(Object obj) {  
        // 创建输出流  
        StringWriter sw = new StringWriter();  
        try {  
            // 利用jdk中自带的转换类实现  
            JAXBContext context = JAXBContext.newInstance(obj.getClass());  
  
            Marshaller marshaller = context.createMarshaller();  
            // 格式化xml输出的格式  
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,  
                    Boolean.TRUE);  
            // 将对象转换成输出流形式的xml  
            marshaller.marshal(obj, sw);  
        } catch (JAXBException e) {  
            e.printStackTrace();  
        }  
        return sw.toString();  
    }  
  
    /** 
     * 将对象根据路径转换成xml文件 
     *  
     * @param obj 
     * @param path 
     * @return 
     */  
    public static void convertToXml(Object obj, String path) {  
        try {  
            // 利用jdk中自带的转换类实现  
            JAXBContext context = JAXBContext.newInstance(obj.getClass());  
  
            Marshaller marshaller = context.createMarshaller();  
            // 格式化xml输出的格式  
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,  
                    Boolean.TRUE);  
            // 将对象转换成输出流形式的xml  
            // 创建输出流  
            FileWriter fw = null;  
            try {  
                fw = new FileWriter(path);  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
            marshaller.marshal(obj, fw);  
        } catch (JAXBException e) {  
            e.printStackTrace();  
        }  
    }  
  
    @SuppressWarnings("unchecked")  
    /** 
     * 将String类型的xml转换成对象 
     */  
    public static Object convertXmlStrToObject(Class clazz, String xmlStr) {  
        Object xmlObject = null;  
        try {  
            JAXBContext context = JAXBContext.newInstance(clazz);  
            // 进行将Xml转成对象的核心接口  
            Unmarshaller unmarshaller = context.createUnmarshaller();  
            StringReader sr = new StringReader(xmlStr);  
            xmlObject = unmarshaller.unmarshal(sr);  
        } catch (JAXBException e) {  
            e.printStackTrace();  
        }  
        return xmlObject;  
    }  
  
    @SuppressWarnings("unchecked")  
    /** 
     * 将file类型的xml转换成对象 
     */  
    public static Object convertXmlFileToObject(Class clazz, String xmlPath) {  
        Object xmlObject = null;  
        try {  
            JAXBContext context = JAXBContext.newInstance(clazz);  
            Unmarshaller unmarshaller = context.createUnmarshaller();  
            FileReader fr = null;  
            try {  
                fr = new FileReader(xmlPath);  
            } catch (FileNotFoundException e) {  
                e.printStackTrace();  
            }  
            xmlObject = unmarshaller.unmarshal(fr);  
        } catch (JAXBException e) {  
            e.printStackTrace();  
        }  
        return xmlObject;  
    }  
}

再加一个顺丰接口实体类就完事了:

public class SfParam implements Serializable{

		private static final long serialVersionUID = 1L;

		
		private String orderNo;      // 客户运单号 (不能重复)
		private String mailNo;		 // 顺丰运单号
		
		private String jiContact;    // 寄件人
		private String jiCompany;	 // 寄件人公司
		private String jiTel;		 // 寄件人电话
		private String jiAdress;	 // 寄件人地址
		private String jiProvince;	 // 寄件人省份
		private String jiCity;		 // 寄件人城市
		private String jiCounty;     // 寄件人区域
		
		private String shouContact;  // 收件人
		private String shouCompany;  // 收件人公司
		private String shouTel;		 // 收件人电话
		private String shouAdress;   // 收件人地址
		private String shouProvince; // 收件人省份
		private String shouCity;	 // 收件人城市
		private String shouCounty;   // 收件人区域
		
		private String orderSn;		 // 合同号
		private Double invoiceMoney; // 开票金额
		private String cargo;        // 货物
		private String cargoNum;     // 货物 (数量/重量)
		
		private String originCode;	 // 原寄地区域代码,可用于顺丰电子面单标签打印。
		private String destCode;	 // 目的地区域代码,可用于顺丰电子面单标签打印。
		
		private String destRouteLabel;
		private String qRCode;
		private Integer source;		// 打印机所在地址
		
		public Integer getSource() {
			return source;
		}
		public void setSource(Integer source) {
			this.source = source;
		}
		public String getOrderSn() {
			return orderSn;
		}
		public void setOrderSn(String orderSn) {
			this.orderSn = orderSn;
		}
		public Double getInvoiceMoney() {
			return invoiceMoney;
		}
		public void setInvoiceMoney(Double invoiceMoney) {
			this.invoiceMoney = invoiceMoney;
		}
		public String getqRCode() {
			return qRCode;
		}
		public void setqRCode(String qRCode) {
			this.qRCode = qRCode;
		}
		public String getDestRouteLabel() {
			return destRouteLabel;
		}
		public void setDestRouteLabel(String destRouteLabel) {
			this.destRouteLabel = destRouteLabel;
		}
		public Long getMemberId() {
			return memberId;
		}
		public void setMemberId(Long memberId) {
			this.memberId = memberId;
		}
		public String getOriginCode() {
			return originCode;
		}
		public void setOriginCode(String originCode) {
			this.originCode = originCode;
		}
		public String getDestCode() {
			return destCode;
		}
		public void setDestCode(String destCode) {
			this.destCode = destCode;
		}
		public String getMailNo() {
			return mailNo;
		}
		public void setMailNo(String mailNo) {
			this.mailNo = mailNo;
		}
		public String getOrderNo() {
			return orderNo;
		}
		public void setOrderNo(String orderNo) {
			this.orderNo = orderNo;
		}
		public String getJiContact() {
			return jiContact;
		}
		public void setJiContact(String jiContact) {
			this.jiContact = jiContact;
		}
		public String getJiCompany() {
			return jiCompany;
		}
		public void setJiCompany(String jiCompany) {
			this.jiCompany = jiCompany;
		}
		public String getJiTel() {
			return jiTel;
		}
		public void setJiTel(String jiTel) {
			this.jiTel = jiTel;
		}
		public String getJiAdress() {
			return jiAdress;
		}
		public void setJiAdress(String jiAdress) {
			this.jiAdress = jiAdress;
		}
		public String getJiProvince() {
			return jiProvince;
		}
		public void setJiProvince(String jiProvince) {
			this.jiProvince = jiProvince;
		}
		public String getJiCity() {
			return jiCity;
		}
		public void setJiCity(String jiCity) {
			this.jiCity = jiCity;
		}
		public String getJiCounty() {
			return jiCounty;
		}
		public void setJiCounty(String jiCounty) {
			this.jiCounty = jiCounty;
		}
		public String getShouContact() {
			return shouContact;
		}
		public void setShouContact(String shouContact) {
			this.shouContact = shouContact;
		}
		public String getShouCompany() {
			return shouCompany;
		}
		public void setShouCompany(String shouCompany) {
			this.shouCompany = shouCompany;
		}
		public String getShouTel() {
			return shouTel;
		}
		public void setShouTel(String shouTel) {
			this.shouTel = shouTel;
		}
		public String getShouAdress() {
			return shouAdress;
		}
		public void setShouAdress(String shouAdress) {
			this.shouAdress = shouAdress;
		}
		public String getShouProvince() {
			return shouProvince;
		}
		public void setShouProvince(String shouProvince) {
			this.shouProvince = shouProvince;
		}
		public String getShouCity() {
			return shouCity;
		}
		public void setShouCity(String shouCity) {
			this.shouCity = shouCity;
		}
		public String getShouCounty() {
			return shouCounty;
		}
		public void setShouCounty(String shouCounty) {
			this.shouCounty = shouCounty;
		}
		public String getCargo() {
			return cargo;
		}
		public void setCargo(String cargo) {
			this.cargo = cargo;
		}
		public String getCargoNum() {
			return cargoNum;
		}
		public void setCargoNum(String cargoNum) {
			this.cargoNum = cargoNum;
		}
}

就这两个比较重要,有了上面两个工具类,顺丰接口就方便多了,看一下自己公司所用到的:


	
	String path;
	
	private static final Logger logger = Logger.getLogger(SFServiceIml.class);	
	
    private final String reqURL="https://bsp-oisp.sf-express.com/bsp-oisp/sfexpressService";
    private final String clientCode="******";//此处替换为您在丰桥平台获取的顾客编码
    private final String checkword="******";//此处替换为您在丰桥平台获取的校验码
  
    private final String url ="******"; // 打印机地址
    
    
	@Override
	public SfExpressResponse sfExpressMethod(SfParam params,int type) {
		// 请求文
		String requestXml = "";
		// 请求方法
	    String methodName = "";
	    
	    if (type < 1) {
	    	 logger.warn("调用接口类型传错");
	         return null;
		}
		// 1 下单  2 查询...
		if (type == 1) {
			requestXml = getOrderServiceRequestXml(params);
			methodName = "orderSerivce";
		}
		if (type == 2) {
			requestXml = getOrderSearchServiceRequestXml(params);
			methodName = "OrderSearchService";
		}
	        
	    String respXml= CallExpressServiceTools.callSfExpressServiceByCSIM(reqURL, requestXml, clientCode, checkword);
		
	    logger.info("顺丰接口请求:" + "方法:" + methodName + " 返回报文 :" + respXml);
	    
	    SfExpressResponse response = (SfExpressResponse)XmlUtils.convertXmlStrToObject(SfExpressResponse.class, respXml);
		
	    return response;
	}
	
	/**
	 * 1 顺丰下单 xml报文
	 */
	private  String getOrderServiceRequestXml(SfParam params){
		
	    //订单号
	    String orderNo = params.getOrderNo();
	    
	    /*****************寄件方******************/
	    // 公司名称
	    String j_company = params.getJiCompany() == null ? "" : params.getJiCompany();
	    // 联系人
	    String j_contact = params.getJiContact();
	    // 手机号
	    String j_tel = params.getJiTel();
	    // 省份
	    String j_province = params.getJiProvince() == null ? "" : params.getJiProvince();
	    String j_city = params.getJiCity() == null ? "" : params.getJiCity();
	    String j_county = params.getJiCounty() == null ? "" : params.getJiCounty();
	    String j_address = params.getJiAdress();
	    /****************寄件方*******************/
	    
	    /****************收件人*******************/
	    String d_contact = params.getShouContact();
	    //收件人公司
	    String d_company  = params.getShouCompany() == null ? "" : params.getShouCompany();
	    //收件人电话
	    String d_tel = params.getShouTel();
	    //收件人详细地址
	    String d_province = params.getShouProvince() == null ? "" : params.getShouProvince();
	    String d_city = params.getShouCity() == null ? "" : params.getShouCity();
	    String d_county = params.getShouCounty() == null ? "" : params.getShouCounty();
	    String d_address = params.getShouAdress();
	    /****************收件人*******************/
	    
	    //商品名称
	    String cargo = params.getCargo();
	    //商品数量
	    String cargoNum = params.getCargoNum();
	 
	    StringBuilder strBuilder = new StringBuilder();
	    strBuilder.append("<Request service='OrderService' lang='zh-CN'>");
	    strBuilder.append("<Head>" + clientCode + "</Head>");
	    strBuilder.append("<Body>");
	    strBuilder.append("<Order").append(" ");
	    strBuilder.append("orderid='" + orderNo.toString().trim() + "" + "'").append(" ");
	    //返回顺丰运单号
	    strBuilder.append("is_gen_bill_no='1'").append(" ");
	    //寄件方信息
	    strBuilder.append("j_company='" + j_company + "'").append(" ");
	    strBuilder.append("j_contact='" + j_contact + "'").append(" ");
	    strBuilder.append("j_tel='" + j_tel + "'").append(" ");
	    strBuilder.append("j_address='" + j_province+j_city+j_county+j_address + "'").append(" ");
	    //收件方信息
	    strBuilder.append("d_company='" + d_company + "'").append(" ");
	    strBuilder.append("d_contact='" + d_contact.toString().trim() + "'").append(" ");
	    strBuilder.append("d_tel='" + d_tel.toString().trim() + "'").append(" ");
	    strBuilder.append("d_address='" + d_province+d_city+d_county+d_address.toString().trim() + "'").append(" ");
	    strBuilder.append("pay_method='1'").append(" ");
	    strBuilder.append("routelabelService = '1' ");
	    strBuilder.append(" > ");
	    //货物信息
	    strBuilder.append("<Cargo").append(" ");
	    strBuilder.append("name='" + cargo + "'").append(" ");
	    strBuilder.append("count='" + cargoNum.toString() + "'").append(" ");
	    strBuilder.append(">");
	    strBuilder.append("</Cargo>");
	 
	    strBuilder.append("</Order>");
	    strBuilder.append("</Body>");
	    strBuilder.append("</Request>");
	 
	    return strBuilder.toString();
	}
	
	/**
	 *  2 顺丰查询报文
	 */
	private String getOrderSearchServiceRequestXml(SfParam params){
		
		String orderNo =params.getOrderNo();
	    StringBuilder strBuilder = new StringBuilder();
	    strBuilder.append("<Request service='OrderSearchService' lang='zh-CN'>");
	    strBuilder.append("<Head>" + clientCode + "</Head>");
	    strBuilder.append("<Body>");
	    strBuilder.append("<OrderSearch").append(" ");
	    strBuilder.append("orderid='" + orderNo.toString().trim() + "" + "'").append(" > ");
	    strBuilder.append("</OrderSearch>");
	    strBuilder.append("</Body>");
	    strBuilder.append("</Request>");
	    return strBuilder.toString();
	}

	

需要用到丰桥接口的小伙伴直接可以拿去使用。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Java接入丰桥并实现下单查询功能可以通过以下步骤完成: 首先,需要引入丰桥SDK依赖,可以通过在项目的pom.xml文件中添加以下代码引入丰桥SDK: ```xml <dependency> <groupId>com.sf</groupId> <artifactId>sf-express-api-sdk</artifactId> <version>1.0.0</version> </dependency> ``` 然后,在代码中调用丰桥SDK提供的接口来实现下单查询功能。下单功能可以通过调用`com.sf.api.client.SfExpressServiceClient`类的`createOrder`方法来创建订,传入相应的参数,如发货人信息、收货人信息、包裹详情等。示例代码如下: ```java SfExpressServiceClient client = new SfExpressServiceClient(); CreateOrderRequest request = new CreateOrderRequest(); request.setShipperName("发货人姓名"); request.setShipperMobile("发货人手机号码"); // 更多发货人信息设置 request.setConsigneeName("收货人姓名"); request.setConsigneeMobile("收货人手机号码"); // 更多收货人信息设置 CreateOrderResponse response = client.createOrder(request); ``` 查询功能可以通过调用`com.sf.api.client.SfExpressServiceClient`类的`queryOrder`方法来查询状态,传入相应的参数,如订号、客户订号等。示例代码如下: ```java SfExpressServiceClient client = new SfExpressServiceClient(); QueryOrderRequest request = new QueryOrderRequest(); request.setOrderId("订号"); // 更多查询参数设置 QueryOrderResponse response = client.queryOrder(request); ``` 以上就是使用Java接入丰桥并实现下单查询功能的简要步骤。需要注意的是,具体的参数设置和接口调用方式可能会有所不同,可以参考丰桥提供的官方文档进行具体实现。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值