圆通电子面单下单接口

官方文档:http://open.yto.net.cn/openplatform/doc
接口均采用Http传输协议。 Get请求用于测试是否可以连通圆通接口服务器,在浏览器访问以下相关接口地址,如果返回success则证明接口访问正常。 数据传输必须用post请求参数列表
logistics_interface里有很多字段,官方文档里有详细描述

源码
public class YTODemo {

private String ReqURL="请求地址";
private String partnerId = "你的商家秘钥";


public String YTO(String logistics_interface) throws Exception{
    Map<String, String> params = new HashMap<String, String>();
    params.put("logistics_interface",logistics_interface);
    params.put("data_digest", encrypt(logistics_interface, partnerId,"UTF-8"));
    params.put("clientId", "K21000119");
    params.put("type", "offline");

    String result=sendPost(ReqURL, params);
    return result;
}

/**
 * MD5加密
 */
private byte[] MD5(String str) throws Exception {
    MessageDigest md5 = java.security.MessageDigest.getInstance("MD5");
    byte[] bytes = md5.digest(str.getBytes());
    return bytes;
}


/**
 * base64编码
 */
private String base64(byte[] str) throws UnsupportedEncodingException{
    String encoded = Base64.encode(str);
    return encoded;
}


/*
    编码转换
 */
private String urlEncoder(String str, String charset) throws UnsupportedEncodingException{
    String result = URLEncoder.encode(str, charset);
    return result;
}

/**
 * 签名生成
 */
private String encrypt (String logistics_interface, String partnerId, String charset) throws UnsupportedEncodingException, Exception
{
    if (partnerId != null)
    {
        return urlEncoder(base64(MD5(logistics_interface + partnerId)),charset);
    }
    return urlEncoder(base64(MD5(logistics_interface + partnerId)),charset);
}


/**
 * 发送POST请求
 */
private String sendPost(String url, Map<String, String> params) {
    OutputStreamWriter out = null;
    BufferedReader in = null;
    StringBuilder result = new StringBuilder();
    try {
        URL realUrl = new URL(url);
        HttpURLConnection conn =(HttpURLConnection) realUrl.openConnection();
        // 发送POST请求必须设置如下两行
        conn.setDoOutput(true);
        conn.setDoInput(true);
        // POST方法
        conn.setRequestMethod("POST");
        // 设置通用的请求属性
        conn.setRequestProperty("accept", "*/*");
        conn.setRequestProperty("connection", "Keep-Alive");
        conn.setRequestProperty("user-agent",
                "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
        conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        conn.connect();
        // 获取URLConnection对象对应的输出流
        out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
        // 发送请求参数
        if (params != null) {
            StringBuilder param = new StringBuilder();
            for (Map.Entry<String, String> entry : params.entrySet()) {
                if(param.length()>0){
                    param.append("&");
                }
                param.append(entry.getKey());
                param.append("=");
                param.append(entry.getValue());
                System.out.println(entry.getKey()+":"+entry.getValue());
            }
            System.out.println("param:"+param.toString());
            out.write(param.toString());
        }
        // flush输出流的缓冲
        out.flush();
        // 定义BufferedReader输入流来读取URL的响应
        in = new BufferedReader(
                new InputStreamReader(conn.getInputStream(), "UTF-8"));
        String line;
        while ((line = in.readLine()) != null) {
            result.append(line);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    //使用finally块来关闭输出流、输入流
    finally{
        try{
            if(out!=null){
                out.close();
            }
            if(in!=null){
                in.close();
            }
        }
        catch(IOException ex){
            ex.printStackTrace();
        }
    }
    return result.toString();
}

}

报文拼接(需要其他字段自行添加):
JSONObject YTO = new JSONObject();
String txLogisticID = ;
YTO.put(“clientID”, );//商家代码
YTO.put(“logisticProviderID”, );//物流公司ID
YTO.put(“customerId”, );//商家代码
YTO.put(“txLogisticID”, );//物流单号
YTO.put(“orderType”, “”);
YTO.put(“serviceType”, “”);
JSONObject Sender = new JSONObject();
Sender.put(“name”, );//
Sender.put(“phone”, “”);
Sender.put(“prov”, );
Sender.put(“city”,);
Sender.put(“address”,);
JSONObject receiver = new JSONObject();
receiver.put(“name”,);
receiver.put(“phone”, );
receiver.put(“prov”, );
receiver.put(“city”,);
receiver.put(“address”, );
JSONObject items = new JSONObject();
JSONArray itemsw = new JSONArray();
for (商品) {
JSONObject item = new JSONObject();
item.put(“itemName”, decl_po_dtl.getgName());
item.put(“number”, decl_po_dtl.getQty());
itemsw.add(item);
}
items.put(“item”, itemsw);
YTO.put(“sender”, Sender);
YTO.put(“receiver”, receiver);
YTO.put(“items”, items);
JSONObject logistics_interface = new JSONObject();
logistics_interface.put(“RequestOrder”, YTO);
然后把logistics_interface,json转xml就OK了

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值