快递鸟电子面单API对接方法?
之前说了一下快递公司、菜鸟和快递鸟的电子面单接口,很多人不知道快递鸟要怎么对接,现在为大家讲解一下。快递鸟是全球物流接口服务商,为电商 ERP、电商平台、仓储、清关公司提供物流跟踪、电子面单、智选物流、物流金融、在线下单等服务,解决电商的物流管理模块和金融模块。现就对快递鸟电子面单API做基本描述,并提供电子面单接口的对接方式。
一.接口介绍
快递鸟电子面单接口支持四通一达、顺丰、EMS、宅急送、德邦、优速等15家国内常用快递的面单打印。通过快递鸟接口在线打印电子运单,即时生成运单号,无需录单,提高发货效率,提升送达时效。打印速度提升 4-6 倍、省去录单环节、取消抽单环节、充当捡货单、提升送达时效。
电子面单VS传统面单:





二.PHP对接方式
(1)电子面单接口是快递鸟提供给独立电商、仓储管理系统、物流供应链等物流系统平台使用的下单接口。
(2)为客户解决在线发货需求,商户通过网络选择快递公司发送请求通知快递公司有快递要发货。
(3) 客户把数据通过此接口转发到快递鸟,由快递鸟为您安排快递员上门取件的服务。
(4)订单编号(OrderCode)不可重复提交,重复提交系统会返回具体错误代码。
(5)接口支持的消息接收方式为HTTP POST,请求方法的编码格式(utf-8):"application/x-www-form-urlencoded;charset=utf-8"。
(6)请求系统级参数说明:
| 参数名称 | 类型 | 说明 | 必须要求 |
|---|---|---|---|
| RequestData | String | 请求内容需进行URL(utf-8)编码。请求内容JSON格式,须和DataType一致。 | R |
| EBusinessID | String | 商户ID,请在我的服务页面查看。 | R |
| RequestType | String | 请求指令类型:1007 | R |
| DataSign | String | 数据内容签名:把(请求内容(未编码)+AppKey)进行MD5加密,然后Base64编码,最后进行URL(utf-8)编码。详细过程请查看Demo。 | R |
| DataType | String | 请求、返回数据类型:只支持JSON格式 | O |
备注:R-必填(Required),O-可选(Optional),C-报文中该参数在一定条件下可选(Conditional)。
(7)接口地址:
API测试地址:http://testapi.kdniao.cc:8081/api/EOrderService
API正式地址:http://api.kdniao.cc/api/EOrderService
(8)请求内容字段定义
| 参数名称 | 类型 | 说明 | 是否必须 | |
|---|---|---|---|---|
| CallBack | String | 用户自定义回调信息 | O | |
| MemberID | String | 会员标识 | O | |
| CustomerName | String | 电子面单客户账号(与快递网点申请) | O | |
| CustomerPwd | String | 电子面单密码 | O | |
| SendSite | String | 收件网点标识 | O | |
| ShipperCode | String | 快递公司编码 | R | |
| LogisticCode | String | 快递单号 | O | |
| OrderCode | String | 订单编号 | R | |
| MonthCode | String | 月结编码 | C | |
| PayType | Int | 邮费支付方式:1-现付,2-到付,3-月结,4-第三方支付 | R | |
| ExpType | String | 快递类型:1-标准快件 | R | |
| IsNotice | Int | 是否通知快递员上门揽件:0-不通知;1-通知;不填则默认为1 | O | |
| Cost | Double | 寄件费(运费) | O | |
| OtherCost | Double | 其他费用 | O | |
| Receiver | Company | String | 收件人公司 | O |
| Name | String | 收件人 | R | |
| Tel | String | 电话与手机,必填一个 | R | |
| Mobile | String | |||
| PostCode | String | 收件人邮编 | O | |
| ProvinceName | String | 收件省(如广东省,不要缺少“省”) | R | |
| CityName | String | 收件市(如深圳市,不要缺少“市”) | R | |
| ExpAreaName | String | 收件区(如福田区,不要缺少“区”或“县”) | O | |
| Address | String | 收件人详细地址 | R | |
| Sender | Company | String | 发件人公司 | O |
| Name | String | 发件人 | R | |
| Tel | String | 电话与手机,必填一个 | R | |
| Mobile | String | |||
| PostCode | String | 发件人邮编 | O | |
| ProvinceName | String | 发件省(如广东省,不要缺少“省”) | R | |
| CityName | String | 发件市(如深圳市,不要缺少“市”) | R | |
| ExpAreaName | String | 发件区(如福田区,不要缺少“区”或“县”) | O | |
| Address | String | 发件人详细地址 | R | |
| StartDate | String | 上门取货时间段:"yyyy-MM-dd HH:mm:ss"格式化,本文中所有时间格式相同 | O | |
| EndDate | String | O | ||
| Weight | Double | 物品总重量kg | O | |
| Quantity | Int | 件数/包裹数 | O | |
| Volume | Double | 物品总体积m3 | O | |
| Remark | String | 备注 | O | |
| AddServices | ||||
| AddService | Name | String | 增值服务名称 | O |
| Value | String | 增值服务值 | O | |
| CustomerID | String | 客户标识(选填) | O | |
| Commoditys | ||||
| Commodity | GoodsName | String | 商品名称 | R |
| GoodsCode | String | 商品编码 | O | |
| Goodsquantity | Int | 商品数量 | O | |
| GoodsPrice | Double | 商品价格 | O | |
| GoodsWeight | Double | 商品重量kg | O | |
| GoodsDesc | String | 商品描述 | O | |
| GoodsVol | Double | 商品体积m3 | O | |
| IsReturnPrintTemplate | String | 返回电子面单模板:0-不需要;1-需要 | O | |
(9)返回参数定义
| 参数名称 | 类型 | 说明 | 必须要求 | |
|---|---|---|---|---|
| EBusinessID | String | 用户ID | R | |
| Order | OrderCode | String | 订单编号 | R |
| ShipperCode | String | 快递公司编码 | R | |
| LogisticCode | String | 快递单号 | R | |
| MarkDestination | String | 大头笔 | O | |
| OriginCode | String | 始发地区域编码 | O | |
| OriginName | String | 始发地/始发网点 | O | |
| DestinatioCode | String | 目的地区域编码 | O | |
| DestinatioName | String | 目的地/到达网点 | O | |
| SortingCode | String | 分拣编码 | O | |
| PackageCode | String | 集包编码 | O | |
| Success | Bool | 成功与否 | R | |
| ResultCode | String | 错误编码 | R | |
| Reason | String | 失败原因 | O | |
| UniquerRequestNumber | String | 唯一标识 | R | |
| PrintTemplate | String | 面单打印模板 | O | |
| EstimatedDeliveryTime | String | 订单预计到货时间yyyy-mm-dd | O | |
| Callback | String | 用户自定义回调信息 | O | |
(10)PHP 代码案例
<?php
/**
*
* ID和Key请到官网申请:http://www.kdniao.com/ServiceApply.aspx
*/
//电商ID
defined('EBusinessID') or define('EBusinessID', '请到快递鸟官网申请http://www.kdniao.com/ServiceApply.aspx');
//电商加密私钥,快递鸟提供,注意保管,不要泄漏
defined('AppKey') or define('AppKey', '请到快递鸟官网申请http://www.kdniao.com/ServiceApply.aspx');
//请求url,接口正式地址:http://api.kdniao.cc/api/Eorderservice
defined('ReqURL') or define('ReqURL', 'http://testapi.kdniao.cc:8081/api/Eorderservice');
//调用获取物流轨迹
//-------------------------------------------------------------
//构造电子面单提交信息
$eorder = [];
$eorder["ShipperCode"] = "SF";
$eorder["OrderCode"] = "PM201604062341";
$eorder["PayType"] = 1;
$eorder["ExpType"] = 1;
$sender = [];
$sender["Name"] = "李先生";
$sender["Mobile"] = "18888888888";
$sender["ProvinceName"] = "李先生";
$sender["CityName"] = "深圳市";
$sender["ExpAreaName"] = "福田区";
$sender["Address"] = "赛格广场5401AB";
$receiver = [];
$receiver["Name"] = "李先生";
$receiver["Mobile"] = "18888888888";
$receiver["ProvinceName"] = "李先生";
$receiver["CityName"] = "深圳市";
$receiver["ExpAreaName"] = "福田区";
$receiver["Address"] = "赛格广场5401AB";
$commodityOne = [];
$commodityOne["GoodsName"] = "其他";
$commodity = [];
$commodity[] = $commodityOne;
$eorder["Sender"] = $sender;
$eorder["Receiver"] = $receiver;
$eorder["Commodity"] = $commodity;
//调用电子面单
$jsonParam = json_encode($eorder, JSON_UNESCAPED_UNICODE);
//$jsonParam = JSON($eorder);//兼容php5.2(含)以下
echo "电子面单接口提交内容:<br/>".$jsonParam;
$jsonResult = submitEOrder($jsonParam);
echo "<br/><br/>电子面单提交结果:<br/>".$jsonResult;
//解析电子面单返回结果
$result = json_decode($jsonResult, true);
echo "<br/><br/>返回码:".$result["ResultCode"];
if($result["ResultCode"] == "100") {
echo "<br/>是否成功:".$result["Success"];
}
else {
echo "<br/>电子面单下单失败";
}
//-------------------------------------------------------------
/**
* Json方式 查询订单物流轨迹
*/
function submitEOrder($requestData){
$datas = array(
'EBusinessID' => EBusinessID,
'RequestType' => '1007',
'RequestData' => urlencode($requestData) ,
'DataType' => '2',
);
$datas['DataSign'] = encrypt($requestData, AppKey);
$result=sendPost(ReqURL, $datas);
//根据公司业务处理返回的信息......
return $result;
}
/**
* post提交数据
* @param string $url 请求Url
* @param array $datas 提交的数据
* @return url响应返回的html
*/
function sendPost($url, $datas) {
$temps = array();
foreach ($datas as $key => $value) {
$temps[] = sprintf('%s=%s', $key, $value);
}
$post_data = implode('&', $temps);
$url_info = parse_url($url);
if($url_info['port']=='')
{
$url_info['port']=80;
}
echo $url_info['port'];
$httpheader = "POST " . $url_info['path'] . " HTTP/1.0\r\n";
$httpheader.= "Host:" . $url_info['host'] . "\r\n";
$httpheader.= "Content-Type:application/x-www-form-urlencoded\r\n";
$httpheader.= "Content-Length:" . strlen($post_data) . "\r\n";
$httpheader.= "Connection:close\r\n\r\n";
$httpheader.= $post_data;
$fd = fsockopen($url_info['host'], $url_info['port']);
fwrite($fd, $httpheader);
$gets = "";
$headerFlag = true;
while (!feof($fd)) {
if (($header = @fgets($fd)) && ($header == "\r\n" || $header == "\n")) {
break;
}
}
while (!feof($fd)) {
$gets.= fread($fd, 128);
}
fclose($fd);
return $gets;
}
/**
* 电商Sign签名生成
* @param data 内容
* @param appkey Appkey
* @return DataSign签名
*/
function encrypt($data, $appkey) {
return urlencode(base64_encode(md5($data.$appkey)));
}
/**************************************************************
*
* 使用特定function对数组中所有元素做处理
* @param string &$array 要处理的字符串
* @param string $function 要执行的函数
* @return boolean $apply_to_keys_also 是否也应用到key上
* @access public
*
*************************************************************/
function arrayRecursive(&$array, $function, $apply_to_keys_also = false)
{
static $recursive_counter = 0;
if (++$recursive_counter > 1000) {
die('possible deep recursion attack');
}
foreach ($array as $key => $value) {
if (is_array($value)) {
arrayRecursive($array[$key], $function, $apply_to_keys_also);
} else {
$array[$key] = $function($value);
}
if ($apply_to_keys_also && is_string($key)) {
$new_key = $function($key);
if ($new_key != $key) {
$array[$new_key] = $array[$key];
unset($array[$key]);
}
}
}
$recursive_counter--;
}
/**************************************************************
*
* 将数组转换为JSON字符串(兼容中文)
* @param array $array 要转换的数组
* @return string 转换得到的json字符串
* @access public
*
*************************************************************/
function JSON($array) {
arrayRecursive($array, 'urlencode', true);
$json = json_encode($array);
return urldecode($json);
}
?>
快递鸟电子面单API对接方法?的更多相关文章
- 电商平台如何接入快递鸟电子面单API?
快递鸟是全球物流接口服务商,为电商 ERP.电商平台.仓储.清关公司提供物流跟踪.电子面单.智选物流.物流金融.在线下单等服务,解决电商的物流管理模块和金融模块.现就对快递鸟电子面单API做基本描述, ...
- 快递鸟电子面单打印功能基于java
之前的后天管理系统的电子面单打印使用的是灵通打单. 使用相对比较麻烦,需要到处Excel之后再导入,麻烦. 快递鸟有电子面单api,后台系统直接对接很是方便,不过也遇到了好些问题. 不难是不难,但是遇 ...
- EMS电子面单接口对接使用-免费版
快递鸟电子面单接口,可一次对接15家快递公司, 无需和每一家快递公司做对接.支持快递有四通一达.顺丰.EMS.宅急送.德邦.优速等15家快递公司,对顺丰有电子面单服务需求的可以选择顺丰自有的电子面单或 ...
- 各种电子面单Api接口免费对接-快宝开放平台
1.什么是电子面单? 快递公司联合向商家提供的一种通过热敏纸打印输出纸质物流面单的物流服务,并且承载分单自动化算法等数据服务,是快递行业赋能的基础产品和服务. 2.电子面单长什么样? 各快递公司有自己 ...
- 快递鸟顺丰物流api接口对接多种方法整理
目前很多自营电商平台.ERP系统.仓储系统.快递柜企业,对物流模块数据需求还是比较旺盛的.之前有介绍过简单的接口对接方法,这次给大家整理介绍两种快递数据的获取方法. 接口秘钥可以向顺丰公司申请,或者一 ...
- 解决在TP5中无法使用快递鸟的即时查询API
快递鸟的接口对接其实很简单,先去官网注册账号,登陆把基本信息填好,然后在产品管理中订购一下“物流查询”,免费,不过其他产品是收费,免费的有对接口调用频率限制,结合自己的应用流量够用就可以. 使用前复制 ...
- 快递鸟顺丰电子面单接口API-JAVA
一.电子面单对接案例 1.接口描述 接口支持的消息接收方式:HTTP POST 请求方法的编码格式(utf-8):"application/x-www-form-urlencoded;cha ...
- 基于PHP的对接电子面单接口平台案例
电子面单接口目前有三种对接方式,快递电子面单接口.菜鸟电子面单接口和快递鸟电子面单接口.这三种接口各有特点. 一.电子面单接口定义 1. 快递电子面单接口:快递公司自己开发的电子面单服务, 商家使用必 ...
- 快递鸟API接口调用代码示例(免费不限量)
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...
随机推荐
- 数据库(class0507)
局部变量_先声明再赋值 声明局部变量 DECLARE @变量名 数据类型 DECLARE @name varchar(20) DECLARE @id int 赋值 SET @变量名 =值 --set用 ...
- 五指cms内容浏览量实现方法
实现功能:文章浏览量的统计显示 实现的详细:对文章的总浏览量.当天浏览量.当周浏览量.当月浏览量进行统计 实现代码位置:coreframe/app/content/stat.php 实现的详细代码: ...
- Binder机制
在Android系统的Binder机制中,由一系统组件组成,分别是Client.Server.Service Manager和Binder驱动程序,其中Client.Server和Service Ma ...
- SQL游标遍历数据表
DECLARE @资产编号 VARCHAR(50) ,@gsid VARCHAR(50) DECLARE test_Cursor CURSOR LOCAL FOR SELECT 资产编号,gsid F ...
- 使用DBCC SHOW_STATISTICS展示索引的统计信息
在开始之前搭建演示环境: USE master GO SET NOCOUNT ON --创建表结构 IF OBJECT_ID(N'ClassA', N'U') IS NOT NULL DROP TAB ...
- CentOS安装XRDP实现远程桌面访问
1.配置环境: yum install gcc pam-devel openssl-devel -y 2.进入指定目录下载并解压xrdp: 先安装 wget; sudo yum -y install ...
- 第二百五十三、四、五天 how can I 坚持
出去玩了几天,好累啊. 周五,坐了半天车.到了西柏坡,下午撕名牌,好疯狂啊,最终还是以有人受伤为代价结束了战斗.晚上吃蛋糕.水饺,还有面条,就是我的奖品没拿到.哎.. 周六,上午滑雪,两年没滑了,都忘 ...
- JavaFx2.0中CSS的应用
http://user.qzone.qq.com/773534839#!app=2&via=QZ.HashRefresh&pos=1326994508 ———————————————— ...
- POJ 1789 Truck History (最小生成树)
Truck History 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/E Description Advanced Carg ...
- thymeleaf中的th:assert用法
th:assert 断言标签 th:assert属性可以指定一个以逗号分隔的表达式对其进行评估并生产适用于每一个评价,如果不抛出异常 <div th:assert="${onevar} ...