圆通电子面单价格单

圆通电子面单对接
[问题点数:80分,无满意结帖,结帖人baozonglong]
本版专家分:0
CSDN今日推荐
本版专家分:877
本版专家分:359
匿名用户不能发表回复!|
CSDN今日推荐记住登录一个月发表随想还能输入:200字该用户最新代码编程随想&by by by by by by [java]代码库import java.io.BufferedR
import java.io.IOE
import java.io.InputStreamR
import java.io.OutputStreamW
import java.io.UnsupportedEncodingE
import java.net.HttpURLC
import java.net.URL;
import java.net.URLE
import java.util.HashM
import java.util.M
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
import java.security.MessageD
public class KdGoldAPIDemo {
private String EBusinessID="请到快递鸟官网申请http://www.kdniao.com/ServiceApply.aspx";
//电商加密私钥,快递鸟提供,注意保管,不要泄漏
private String AppKey="请到快递鸟官网申请http://www.kdniao.com/ServiceApply.aspx";
//请求url, 正式环境地址:http://api.kdniao.cc/api/Eorderservice
private String ReqURL="http://testapi.kdniao.cc:8081/api/Eorderservice";
* Json方式 电子面单
* @throws Exception
public String orderOnlineByJson() throws Exception{
String requestData= "{'OrderCode': ''," +
"'ShipperCode':'YTO'," +
"'PayType':1," +
"'ExpType':1," +
"'Cost':1.0," +
"'OtherCost':1.0," +
"'Sender':" +
"'Company':'LV','Name':'Taylor','Mobile':'','ProvinceName':'上海','CityName':'上海','ExpAreaName':'青浦区','Address':'明珠路73号'}," +
"'Receiver':" +
"'Company':'GCCUI','Name':'Yann','Mobile':'','ProvinceName':'北京','CityName':'北京','ExpAreaName':'朝阳区','Address':'三里屯街道雅秀大厦'}," +
"'Commodity':" +
"'GoodsName':'鞋子','Goodsquantity':1,'GoodsWeight':1.0}]," +
"'Weight':1.0," +
"'Quantity':1," +
"'Volume':0.0," +
"'Remark':'小心轻放'," +
"'IsReturnPrintTemplate':1}";
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");
String result=sendPost(ReqURL, params);
//根据公司业务处理返回的信息......
* @param str 内容
* @param charset 编码方式
* @throws Exception
@SuppressWarnings("unused")
private String MD5(String str, String charset) throws Exception {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(str.getBytes(charset));
byte[] result = md.digest();
StringBuffer sb = new StringBuffer(32);
for (int i = 0; i & result. i++) {
int val = result[i] & 0
if (val &= 0xf) {
sb.append("0");
sb.append(Integer.toHexString(val));
return sb.toString().toLowerCase();
* base64编码
* @param str 内容
* @param charset 编码方式
* @throws UnsupportedEncodingException
private String base64(String str, String charset) throws UnsupportedEncodingException{
String encoded = Base64.encode(str.getBytes(charset));
@SuppressWarnings("unused")
private String urlEncoder(String str, String charset) throws UnsupportedEncodingException{
String result = URLEncoder.encode(str, charset);
* 电商Sign签名生成
* @param content 内容
* @param keyValue Appkey
* @param charset 编码方式
* @throws UnsupportedEncodingException ,Exception
* @return DataSign签名
@SuppressWarnings("unused")
private 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);
* 向指定 URL 发送POST方法的请求
* @param url 发送请求的 URL
* @param params 请求的参数集合
* @return 远程资源的响应结果
@SuppressWarnings("unused")
private String sendPost(String url, Map&String, String& params) {
OutputStreamWriter out =
BufferedReader in =
StringBuilder result = new StringBuilder();
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 ( 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"));
while ((line = in.readLine()) != null) {
result.append(line);
} catch (Exception e) {
e.printStackTrace();
//使用finally块来关闭输出流、输入流
if(out!=null){
out.close();
if(in!=null){
in.close();
catch(IOException ex){
ex.printStackTrace();
return result.toString();
分享到:更多共1 条评论
发表评论:评论须知:1、评论每次加2分,每天上限为30;2、请文明用语,共同创建干净的技术交流环境;3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。拒绝访问 | www.ggdoc.com | 百度云加速
请打开cookies.
此网站 (www.ggdoc.com) 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(42ea2126bfd6438e-ua98).
重新安装浏览器,或使用别的浏览器圆通快递电子面单接口开发坑
用了3天左右对接落实圆通快递电子面单,这过程遇到觉得坑的就是签名,用了将近一个下午。
接口地址:http://open.yto.net.cn/OpenPlatform/doc
电子面单创建标准接口:
签名流程:
1.1.3 数据处理
在POST时用“logistics_interface”字段表示要发送的XML报文内容。
在POST时用“data_digest”字段进行签名验证。
假设xml内容为: &order&&/order&, partnerId(商家密钥)为123456。 则要签名的内容为&order&&/order&123456,然后对&order&&/order&123456先进行MD5加密,然后转换为base64字符串。 即经过md5(16位)和base64后的内容就为 LghTkEmsD2tbQ3fsIBRcBg==。
同样需要对签名的字符串进行URL编码,LghTkEmsD2tbQ3fsIBRcBg==的内容为:LghTkEmsD2tbQ3fsIBRcBg%3D%3D。
最终要发送的数据为logistics_interface=%3Corder%3E%3C%2Forder%3E &data_digest= LghTkEmsD2tbQ3fsIBRcBg%3D%3D &type=offline&clientId=K
主要是每次自己签名跟上面的老是对上不,他又不给md5 16位的结果出来,郁闷。。。
假设xml内容为: &order&&/order&, partnerId(商家密钥)为123456。 则要签名的内容为&order&&/order&123456,然后对&order&&/order&123456先进行MD5加密,然后转换为base64字符串。 即经过md5(16位)和base64后的内容就为 LghTkEmsD2tbQ3fsIBRcBg==。
这个是重点,每次都是不一样的结果base64 md5换了几种方式都一样
下午快疯的时候,还是得吹下冷风
最后还是逆着来将
LghTkEmsD2tbQ3fsIBRcBg== base64网上解密是乱码,程序解也是,只能分析下解密后的byte数组,发现存在着负数的,而我们一般md5转出来的string,是默认加上256的,然后 然后就可以了
原来是 md5
16位byte数组 再base64,怎么就不写清楚点呢
另注意下 编码的问题
import java.security.MessageD
import com.sun.org.apache.xml.internal.security.utils.Base64;/*** 签名
* 参数xml+partnerId
md5加密 为16位byte* 再base64位* @param sourceStr * @param key* @return*/private String MD5(String sourceStr, String key) {
String result = "";
MessageDigest md5 = MessageDigest.getInstance("MD5");
byte[] bytes = md5.digest((sourceStr + key).getBytes(Charset.forName("utf-8")));
result = Base64.encode(bytes);
} catch (NoSuchAlgorithmException e) {
System.out.println(e);
LOG.info("圆通生成签名出错:{}", e.getMessage());
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!想使用圆通电子面单服务,怎么操作?_百度知道
想使用圆通电子面单服务,怎么操作?
我有更好的答案
开通电子面单的服务必须对接支持的API接口,然后圆通公司可能需要到当地快递网点申请电子面单的账户才可以对接成功然后使用,关于API接口可以使用快递鸟的对接服务.具体操作的话需要设置什么接口参数的
如有淘宝店铺,可直接在后台申请开通圆通电子面单,然后找快递审核通过并充值单号。之后需通过第三方打印软件(如快递助手等)操作打印电子面单。以下是快递助手使用电子面单的具体步骤:
为您推荐:
其他类似问题
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 圆通电子面单几种 的文章

 

随机推荐