免费顺丰快递接口api对接调用demo

更新时间:2023-10-27 15:35:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

免费顺丰快递接口api对接调用demo

接口地址:http://api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx 支持格式:json

请求方式:HTTP POST

接口平台:快递鸟免费查询接口

请求方法的编码格式(utf-8):\。 顺丰快递接口api申请JSON请求/返回示例: 1.请求 {

\ \

\

}

2.返回

没有物流轨迹的 {

\

\

\

\

\

\

\ }

有物流轨迹的 {

\

\

\

\

\

\

\

\

{

\

\正在派件..(派件人:邓裕富,电话:18718866310)[深圳 市]\

\

},

{

\

\快件在 深圳集散中心 ,准备送往下一站 深圳 [深圳市]\

\

},

{

\

\快件在 深圳集散中心 [深圳市]\

\

},

{

\

\已收件[深圳市]\

\

},

{

},

{

},

{

} ] }

\\快件在 深圳 ,准备送往下一站 深圳集散中心 [深圳市]\\\\派件已签收[深圳市]\\\\签收人是:已签收[深圳市]\\ 注:接口及签名说明 1)、支持http传输协议

2)、支持的数据传输格式

Json/Xml(暂不支持这种形式)。 编码格式:UTF-8

交互协议上统一用UTF-8,避免传递中文数据出现乱码。 3)、接入步骤

注册成为用户(注:注册成功选择服务立即使用,无需审批)。注册成功后,登录就可以查看ID和key。

注册方式通过网络平台:

按照接口官网提示进行注册申请,注册成功并且登录,将得到一组电商ID和AppKey。电商ID是调用接口服务的身份证明,不可更改、不可转用,AppKey是应用访问API的签名附加密钥,必须妥善保存。两者关系类似于登录帐号和密码,两者都会在签名和业务参数中使用。

注册成功登录之后认证:即可申请接口 申请后ID和KEY自动激活

(1) 开发服务

开发自身业务的服务,服务需按照后面接口的定义规则。 (2) 查看接口调用的DEMO

物流技术接口提供调用物流接口的DEMO(.Net版本),包括网上在线订单下单、物流轨迹查询等物流行业标准化的下单操作流程与数据查询格式。提交接入处理的相关代码如有不明白的地方可与物流技术接口人协作开发。 DEMO下载地址:http://www.kdniao.com/download 4)、接口数据包结构

图例 - 数据包结构 (系统级{数据})

5)、XML范例/JSON 范例

string userID = \;

string keyValue = \;//加密私钥,由发货通提供

string url = \; //请求地址

string DataType = \; //1-xml;2-json

string charset=\;//字符编码采用UTF-8 string xmlStr =

\650888088\;// XML字符串 string xmlStr =

\; // JSON字符串

string datasign = MD5(xmlStr+keyValue, \);//生成加密签名加密通过对参数xmlStr+ keyValue得到加密后的字符串

string PostStr = \datasign&DataType=DataType\; //请求报文参数

string post = this.DoPost(url, PostStr);// 通讯协议使用Http协议Post请求方式 6)、流程示意图

7)、网关地址

测试接口:http://api.kdniao.cc:8081/Ebusiness/EbusinessOrderHandle.aspx 测试电商ID==1237100,AppKey==518a73d8-1f7f-441a-b644-33e77b49d846 正式接口:http://api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx 注意:正式(自行注册)环境下使用时,需提供请求的IP给接口登记 8)、关于签名

接口和第三方电子商务公司系统进行对接,有一定的安全机制。采用IP认证加签名的方式对接,具体方案如下: (1) 防止数据被篡改

在POST请求中会传递5个参数 4个必须参数:

RequestType=请求指令类型 EBusinessID==电商ID

RequestData==数据内容(URL编码:UTF-8)

DataSign== 签名摘要(URL编码:UTF-8(base64(MD5(数据内容 +AppKey))))

1个可选参数: DataType==返回数据类型(1-xml,2-json;默认为2格式)

注:DataSign生成后,对方接收到数据后,以同样的算法进行签名,生成摘要,对比两者的摘要是否相同,如果不同,说明传递过程中发生数据篡改,对接过程中如有不明白之处可双方技术协作进行 (2) 调用接口的身份认证

注册成为接口用户后,会生成对应的电商ID和AppKey,电商ID相当于用户名,AppKey相当于密码。注:请勿遗漏或传递可能递增大接口调用维护 举例说明:

(a) 假设RequestData (XML)内容为:

SF118954907573,经过URL(UTF-8)编码的内容

SF118954907573, EBusinessID为1109259,AppKey为56da2cf8-c8a2-44b2-b6fa-476cd7d1ba17 (b) 那么DataSign签名的内容为

SF11895490757356da2cf8-c8a2-44b2-b6fa-476cd7d1ba17,经过md5和base64后的内容就为YzBjODA3MjA2NmViM2ZlZGMyNWNjMDA0NDRiMDdmOTE=,在经过URL(UTF-8)编码的内容为YzBjODA3MjA2NmViM2ZlZGMyNWNjMDA0NDRiMDdmOTE=

(c) 最终要发送的数据为RequestType=1002&EBusinessID=1109259&RequestData

=SF118954907573 &DataSign =

YzBjODA3MjA2NmViM2ZlZGMyNWNjMDA0NDRiMDdmOTE=& DataType=2

(d) 接收方收到数据后,获得EBusinessID 和RequestData和DataSign等这几个数据。

(e) 接收方对EBusinessID 得到AppKey,RequestData+AppKey的数据进行md5和base64

后的内容就为YzBjODA3MjA2NmViM2ZlZGMyNWNjMDA0NDRiMDdmOTE=

(f) 接收方判断签名后的数据跟传递过来的DataSign是否一致,如果一致进行业务操作,

如果不一直返回错误。 9)、(C#)DataSign签名加密代码 ///

///电商Sign签名 /// /// /// ///DataSign签名 Public String Encrypt (String content, String keyValue, String charset) { if (keyValue != null) { return base64(MD5(content + keyValue, charset), charset); } return base64(MD5(content, charset), charset); } /// /// 字符串MD5加密 /// /// ///密文 Private string MD5(string Text, string charset) { byte[] buffer = System.Text.Encoding.GetEncoding(charset).GetBytes(Text); try { System.Security.Cryptography.MD5CryptoServiceProvider check; check = new System.Security.Cryptography.MD5CryptoServiceProvider(); byte[] somme = check.ComputeHash(buffer); string ret = \foreach (byte a in somme) { if (a < 16) ret += \else ret += a.ToString(\ } return ret.ToLower(); } catch { throw; } } Private static string base64(String str, String charset) { returnConvert.ToBase64String(System.Text.Encoding.GetEncoding(charset).GetBytes(str)); }

10)、JAVA demo

import java.io.BufferedReader; import java.io.IOException;

import java.io.InputStreamReader; import java.io.OutputStreamWriter;

import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.URL;

import java.net.URLEncoder;

import java.security.MessageDigest; import java.util.HashMap; import java.util.Map;

public class KdniaoTrackQueryAPI { //DEMO public static void main(String[] args) { KdniaoTrackQueryAPI api = new KdniaoTrackQueryAPI(); try { String result = api.getOrderTracesByJson(\ System.out.print(result); } catch (Exception e) { e.printStackTrace(); } }

//电商ID

private String EBusinessID=\请申请http://www.kdniao.com/ServiceApply.aspx\//电商加密私钥,注意保管,不要泄漏

private String AppKey=\请申请http://www.kdniao.com/ServiceApply.aspx\//请求url

private String ReqURL=\/**

* Json方式 查询订单物流轨迹 * @throws Exception */ public String getOrderTracesByJson(String expCode, String expNo) throws Exception{ String requestData= \expNo + \ Map params = new HashMap(); params.put(\ params.put(\ params.put(\ String dataSign=encrypt(requestData, AppKey, \ params.put(\ params.put(\ String result=sendPost(ReqURL, params); //根据公司业务处理返回的信息...... return result; } /** * XML方式 查询订单物流轨迹 * @throws Exception */ public String getOrderTracesByXml() throws Exception{ String requestData= \ \ \ \ \ \ Map params = new HashMap();

params.put(\params.put(\params.put(\

String dataSign=encrypt(requestData, AppKey, \params.put(\params.put(\

String result=sendPost(ReqURL, params);

//根据公司业务处理返回的信息...... return result; } /**

* MD5加密

* @param str 内容 * @param charset 编码方式 * @throws Exception */ @SuppressWarnings(\ private String MD5(String str, String charset) throws Exception { MessageDigest md = MessageDigest.getInstance(\ md.update(str.getBytes(charset)); byte[] result = md.digest(); StringBuffer sb = new StringBuffer(32); for (int i = 0; i < result.length; i++) { int val = result[i] & 0xff; if (val <= 0xf) { sb.append(\ } 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 = base64Encode(str.getBytes(charset));

本文来源:https://www.bwwdw.com/article/35l2.html

Top