范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

如何实现100家快递单轨迹推送?

  做电商的朋友们是不是会遇到以下的一些头疼的问题?
  由于天气、大促爆仓等多种原因造成快递不能及时送达,也未及时通知客户而导致的客户流失及物流成本增加;
  物流状态一直未更新,无法查询物流状态而导致客户投诉、差评、退款;
  单量太大,无法逐一查询每个包裹的状态,无法及时了解包裹状态;
  由于快递的各种原因导致的客户体验降低,流失客户;
  此时物流轨迹追踪就可以随时让您知道每一个包裹的进度,解决以上的问题,留存客户。
  本期分享的就是如何用快递鸟将最新的物流轨迹推送到我们服务器,我们既然要接收它的信息,就需要提供一个服务地址给它,以C#为列,我们新建一个接收页面,我的接收文件: KdniaoHandler.aspx,把他部署到服务器,
  接收地址:http://www.你的域名.com/KdniaoHandler.ashx
  登陆快递鸟官网,通过快递鸟提供的沙箱调试页面进去测试接口
  调试页面地址:关注公众号:快递鸟API,授权申请APIKey:http://www.kdniao.com/reg?utm_source=JRTT&utm_medium=XMT&utm_campaign=KDN&utm_content=apikj&utm_term=A1
  测试的截图:
  一、接口描述/说明
  推送接口(商户实现)
  (1)客户需要按快递鸟要求开发接口,保证信息的正常接收。
  (2)快递鸟主动推送时,物流信息接收接口由客户提供。
  (3)接口支持的消息接收方式为HTTP POST,请求方法的编码格式(utf-8):"application/x-www-form-urlencoded;charset=utf-8"。
  (4)运单物流信息全量推送(每次推送的运单物流信息包括运单当前所有的的物流信息)。
  请求系统级参数说明:
  参数名称
  类型
  说明
  必须要求
  RequestData
  String
  请求内容需进行URL(utf-8)编码。请求内容只支持JSON格式。
  R
  RequestType
  String
  101-轨迹查询结果, 107-货款状态
  R
  DataSign
  String
  数据内容签名(把(请求内容(未编码)+AppKey)进行MD5加密,然后Base64编码)
  R
  备注: R-必填(Required),O-可选(Optional),C-报文中该参数在一定条件下可选(Conditional)
  二、接口参数
  推送接口
  应用级输入参数
  参数名称
  类型
  说明
  必须要求
  EBusinessID
  String
  用户电商ID
  R
  PushTime
  String
  推送时间
  R
  Count
  String
  推送物流单号轨迹个数
  R
  Data
  String
  推送物流单号轨迹集合
  R
  订阅查询结果(RequestType:101)
  通过轨迹查询(订阅查询)接口订阅到快递鸟的数据,快递鸟推送时,会将推送的RequestType的值置为101,同时返回下列数据
  请求内容字段定义:
  参数
  类型
  说明
  必须要求
  Data
  EBusinessID
  String
  商户ID
  O
  ShipperCode
  String
  快递公司编码
  R
  LogisticCode
  String
  快递单号
  R
  Success
  Bool
  成功与否:true,false
  R
  Reason
  String
  失败原因
  O
  State
  String
  物流状态: 0-无轨迹,1-已揽收,2-在途中,3-签收,4-问题件
  R
  CallBack
  String
  订阅接口的Bk值
  O
  Traces
  Traces
  AcceptTime
  String
  时间
  R
  AcceptStation
  String
  描述
  R
  Remark
  String
  备注
  O
  EstimatedDeliveryTime
  String
  预计到达时间yyyy-mm-dd
  O
  货款状态(RequestType:107)
  用户通过电子面单使用快递鸟货到付款等金融服务时,快递鸟会将该订单的金融状态通过接口推送给用户。
  请求内容字段定义:
  参数名称
  类型
  说明
  必须要求
  Data
  EBusinessID
  String
  用户电商ID
  O
  OrderCode
  String
  订单编号
  O
  ShipperCode
  String
  快递公司编码
  R
  LogisticCode
  String
  物流运单号
  R
  Success
  Bool
  成功与否
  R
  Reason
  String
  失败原因
  O
  State
  String
  物流状态:0-无轨迹,1-已揽收, 2-在途中 201-到达派件城市,3-签收,4-问题件
  R
  CallBack
  String
  订阅接口的Bk值
  O
  OrderState
  String
  订单货款状态:1-待出款;2-已出款;3-已收款
  O
  AccountName
  String
  返款银行卡开户人(例:**伟、*佳)
  O
  AccountTel
  String
  返款银行卡手机末四位
  O
  AccountNum
  String
  返款银行卡末四位
  O
  返回参数定义
  参数名称
  类型
  说明
  必须要求
  EBusinessID
  String
  用户ID
  R
  UpdateTime
  String
  时间
  R
  Success
  Bool
  成功与否:true,false
  R
  Reason
  String
  失败原因
  O
  推送接口(商户实现)
  请求示例 JSON (订阅查询结果)
  {
  "EBusinessID": "1109259",
  "Count": "2",
  "PushTime": "2015-3-11 16:21:06",
  "Data": [
  {
  "EBusinessID": "1109259",
  "OrderCode": "",
  "ShipperCode": "EMS",
  "LogisticCode": "5042260908504",
  "Success": true,
  "Reason": "",
  "State": "2",
  "CallBack": "0",
  "Traces": [
  {
  "AcceptTime": "2015-03-06 21:16:58",
  "AcceptStation": "深圳市横岗速递营销部已收件,(揽投员姓名:钟定基;)",
  "Remark": ""
  },
  {
  "AcceptTime": "2015-03-07 14:25:00",
  "AcceptStation": "离开深圳市 发往广州市",
  "Remark": ""
  },
  {
  "AcceptTime": "2015-03-08 00:17:00",
  "AcceptStation": "到达广东速递物流公司广航中心处理中心(经转)",
  "Remark": ""
  },
  {
  "AcceptTime": "2015-03-08 01:15:00",
  "AcceptStation": "离开广州市 发往北京市(经转)",
  "Remark": ""
  },
  {
  "AcceptTime": "2015-03-09 09:01:00",
  "AcceptStation": "到达北京黄村转运站处理中心(经转)",
  "Remark": ""
  },
  {
  "AcceptTime": "2015-03-09 18:39:00",
  "AcceptStation": "离开北京市 发往呼和浩特市(经转)",
  "Remark": ""
  },
  {
  "AcceptTime": "2015-03-10 18:06:00",
  "AcceptStation": "到达 呼和浩特市 处理中心",
  "Remark": ""
  },
  {
  "AcceptTime": "2015-03-11 09:53:48",
  "AcceptStation": "呼和浩特市邮政速递物流分公司金川揽投部安排投递(投递员姓名:安长虹;)",
  "Remark": ""
  }
  ]
  },
  {
  "EBusinessID": "1109259",
  "OrderCode": "",
  "ShipperCode": "EMS",
  "LogisticCode": "5042260943004",
  "Success": true,
  "Reason": "",
  "State": "2",
  "CallBack": "0",
  "Traces": [
  {
  "AcceptTime": "2015-03-07 15:26:09",
  "AcceptStation": "深圳市横岗速递营销部已收件,(揽投员姓名:周宏彪;)",
  "Remark": ""
  },
  {
  "AcceptTime": "2015-03-08 16:32:00",
  "AcceptStation": "离开深圳市 发往广州市",
  "Remark": ""
  },
  {
  "AcceptTime": "2015-03-09 00:58:00",
  "AcceptStation": "到达广东速递物流公司广航中心处理中心(经转)",
  "Remark": ""
  },
  {
  "AcceptTime": "2015-03-09 01:15:00",
  "AcceptStation": "离开广州市 发往北京市(经转)",
  "Remark": ""
  },
  {
  "AcceptTime": "2015-03-10 05:20:00",
  "AcceptStation": "到达北京黄村转运站处理中心(经转)",
  "Remark": ""
  },
  {
  "AcceptTime": "2015-03-10 11:59:00",
  "AcceptStation": "离开北京市 发往廊坊市(经转)",
  "Remark": ""
  },
  {
  "AcceptTime": "2015-03-10 14:23:00",
  "AcceptStation": "到达廊坊市处理中心(经转)",
  "Remark": ""
  },
  {
  "AcceptTime": "2015-03-11 08:55:00",
  "AcceptStation": "离开廊坊市 发往保定市(经转)",
  "Remark": ""
  }
  ]
  }
  ]
  }  请求示例 JSON格式 (货款状态)
  {
  "EBusinessID": "1109259",
  "Count": "2",
  "PushTime": "2015-3-11 16:21:06",
  "Data": [
  {
  "EBusinessID": "1109259",
  "OrderCode": "",
  "ShipperCode": "EMS",
  "LogisticCode": "5042260908504",
  "Success": true,
  "Reason": "",
  "State": "2",
  "CallBack": "0",
  "OrderState":"1",
  "AccountName":"张三",
  "AccountTel":"xxxxxxx",
  "AccountNum":"0321"
  },
  {
  "EBusinessID": "1109259",
  "OrderCode": "",
  "ShipperCode": "EMS",
  "LogisticCode": "5042260908522",
  "Success": true,
  "Reason": "",
  "State": "2",
  "CallBack": "0",
  "OrderState":"1",
  "AccountName":"张三",
  "AccountTel":"xxxxxxxxxx",
  "AccountNum":"0321"
  }
  ]
  }  返回示例 JSON
  {
  "EBusinessID": "1151847",
  "UpdateTime": "2016-08-09 16:42:38",
  "Success": true,
  "Reason": ""
  }
  KdniaoHandler.ashx  回调页面:
  <%@ WebHandler Language="C#" Class="KdniaoHandler" %>
  using System;
  using System.Collections.Generic;
  using System.IO;
  using System.Linq;
  using System.Text;
  using System.Web;
  using System.Web.UI;
  using System.Web.UI.WebControls;
  using Newtonsoft.Json;
  using Newtonsoft.Json.Converters;
  ///
  /// 作者:yanghanwen
  /// 联系QQ:xxxxx
  ///
  public class KdniaoHandler : IHttpHandler {
  ///
  订阅接口的处理机制:用户将快递单号订阅给快递鸟,快递鸟内部接收信息并按每家物流公司轨迹的生成规律实时动态调用物流公司给快递鸟提供的专用接口, 查询有新轨迹就按客户要求推送。如没有最新轨迹,两个小时后会再次触发接口调用,如有更新就将全量数据推送给用户,如果没有更新,最晚每2小时轮询,直到运单签收。
  /// 
  /// 
  public void ProcessRequest (HttpContext context) {
  context.Response.ContentType = "text/plain";
  //接收请求 获取到快递鸟推送过来的请求报文
  var requestData = context.Request.Form["RequestData"];
  var requestType = context.Request.Form["RequestType"];
  var dataSign = context.Request.Form["DataSign"];
  //调试阶段存储日志 方便追踪问题
  WriteTextLog("RequestData:", requestData);
  WriteTextLog("RequestType:", requestType);
  WriteTextLog("DataSign:", dataSign);
  这里提供给快递鸟的接口一定不要做登录权限验证,否则快递鸟无法推送信息。 推送接口要在5S内对快递鸟请求做出响应,返回快递鸟所需的参数。成功获取到报文以后,储存并迅速返回响应, 内部逻辑业务可异步处理。每个客户处理的业务逻辑复杂程度不一样,如果客户对数据进行处理,再做出响应,会造成网络超时,传输效率低下。 在没有返回信息或者返回超时, 以及返回不符合规定的内容,快递鸟会判断为客户接收失败。 接收失败后会重试推送2次,首次间隔15分钟,二次间隔30分钟,重试2次都未成功,不再推送,直到下次有新轨迹时再次推送。我们一定要严格按照技术文档进行返回。
  PushResponse response = new PushResponse();
  response.EBusinessID = "1151847";
  response.UpdateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  response.Success = true;
  response.Reason = "成功";
  string result = ToJson(response);
  //联调的时候可以返回固定的接收成功的报文
  // result = "{"EBusinessID": "1151847", "UpdateTime": ""+DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")+"", "Success": true, "Reason": "成功" }";
  context.Response.Write(result);
  }
  public bool IsReusable {
  get {
  return false;
  }
  }
  ///
  /// 写入日志到文本文件
  ///
  /// 动作
  /// 日志内容
  public static void WriteTextLog(string action, string strMessage)
  {
  try
  {
  DateTime time = DateTime.Now;
  string path = AppDomain.CurrentDomain.BaseDirectory + @"LogInfo";
  if (!Directory.Exists(path))
  Directory.CreateDirectory(path);
  string fileFullPath = path + time.ToString("yyyy-MM-dd") + ".System.txt";
  StringBuilder str = new StringBuilder();
  str.Append("Time: " + time.ToString() + "r ");
  str.Append("Action: " + action + "r ");
  str.Append("Message: " + strMessage + "r ");
  str.Append("-----------------------------------------------------------r r ");
  StreamWriter sw;
  if (!File.Exists(fileFullPath))
  {
  sw = File.CreateText(fileFullPath);
  }
  else
  {
  sw = File.AppendText(fileFullPath);
  }
  sw.WriteLine(str.ToString());
  sw.Close();
  sw.Dispose();
  }
  catch (Exception e)
  {
  }
  }
  public class PushResponse
  {
  ///
  /// 订阅用户ID
  ///
  public string EBusinessID
  {
  get;
  set;
  }
  ///
  /// 时间
  ///
  public string UpdateTime
  {
  get;
  set;
  }
  ///
  /// 成功与否:true,false
  ///
  public bool Success
  {
  get;
  set;
  }
  ///
  /// 失败原因
  ///
  public string Reason
  {
  get;
  set;
  }
  }
  ///
  /// 序列化JSON数据
  ///
  /// 
  ///
  public static string ToJson(object o)
  {
  IsoDateTimeConverter timeFormat = new IsoDateTimeConverter();
  timeFormat.DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
  return JsonConvert.SerializeObject(o, Newtonsoft.Json.Formatting.None, timeFormat);
  }
  ///
  /// 反序列化JSON数据
  ///
  ///
  /// 
  ///
  public static T ToObject(string json)
  {
  return JsonConvert.DeserializeObject(json);
  }
  }
  调用第三方物流接口,替换自己的key就能直接使用,主要实现了物流在线轨迹查询,订单订阅,轨迹推送,支持500多家的快递查询接口,包括主流的四通一达,支持上门取件服务,其他接口调用,修改调用指令和参数就能实现。
  这里给大家提供源码下载:关住公众号(快递鸟API),后台回复"源码下载"
  更多快递接口api技术干货、接口实操教程、物流行业知识,关住我们的公众号【快递鸟API】(kuaidiniaoapi)、抖音【快递鸟】。如果你觉得以上内容对你有用,欢迎点赞、评论、转发。你的认可是我持续分享的动力!
  有不清楚的问题,欢迎大家留言一起探讨。

原神其实派蒙才是真正的天理,3。1版本又添新证据各位旅行者大家好呐,我是你们的好朋友,小白君呐。也不知道大家的3。1版本主线以及最新的魔神任务究竟有没有过完,当然没有过完的也没关系,下面就听小白讲解吧。本期文章的证据,来自赤王陵为什么不建议选512G内存手机?内行人给出了4个忠告,望周知在手机市场中,以前32GB内存的手机产品都可以足够使用,现在随着时间的发展,64GB内存都逐渐不够用了,甚至可以说128GB才勉强足够用户进行使用。只因为现在的手机应用逐渐变大了许谷歌新款手机发布搭载自研SOC,性能略强于骁龙888,售价6000文小伊评科技在北京时间今日凌晨召开的Google制造发布会上,谷歌发布了全新一代产品谷歌Pixel7和Pixel7Pro,其中后者在TW地区的起步价格分别为26990元新台币,约合中年过后,真正有格局的夫妻,大都学会了禁欲文叶飞飞yff图源于网络我是叶飞飞yff,一个非著名情感导师,写走心的情感文字,希望用有温度的文字,给你带来一些心灵上的慰藉。有人说减少低级的欲望,才会有更高级的追求。的确,一个人广东宏远篮球俱乐部新格局,成功转型易建联,打造商业体育新帝国广东宏远篮球俱乐部高层人事变动,原董事长陈海涛卸任,陈家大公子跟易建联年龄相当的陈浩峰接任广东宏远篮球俱乐部董事长职位,全面掌管广东宏远篮球俱乐部发展管理事务。中国男篮一哥易建联以只进不出?小米这6。82亿美元怕是要打水漂多年在外经营,小米的全球市场份额水涨船高,除了高端市场难有大进展之外,整体倒也呈现良好的态势。只可惜,在外打拼哪有在家门口工作舒适,小米在海外时不时就会因为水土不服而遭遇一揽子事。雷军成功创业的36则信条雷军全国工商联副主席,小米科技创始人世界会默默奖励勤奋厚道的人。18岁时,考入武汉大学的雷军偶然读到硅谷之火,他被IT英雄乔布斯的故事深深打动。计算机改变世界的梦想,点燃了他胸中的SQLNoSQL和NewSQLDataBaseXSQL发展数据库和操作系统是计算机基础理论的核心产品,纵观整个IT行业,无论是传统的系统软件还是通用的应用系统离不开这2款系统软件。随着业务系统的多样性,OS和DB也在不断的演进分享拯救灰指甲方法,让你拥有粉嫩嫩的指甲我去年也是灰指甲其中的一员,为了摆脱灰指甲也是用了敲多种方法好在现在我的指甲已经是粉嫩嫩的健康指甲了这篇文章下面的内容包含了我在拯救灰指甲的过程中用到的所有有效的方法给姐妹们做参考扫地出门!曼联当红边锋将离队,切尔西报价1亿,C罗首发扫清障碍本赛季,曼联和切尔西两大传统英超豪门的日子都不好过,特别是红魔这边,联赛7轮打完,已经输掉3场,掉出积分榜前6的位置,这个赛季球队提前与争冠无缘,冲击下赛季的欧冠资格是比较务实的目佳作赏析烟火人生梁超图文烟火人生梁超文图不知不觉间,时光已经到了晚秋时节。西安城的冷意也渐渐变得浓烈起来,加之一连几天的秋雨绵绵,立马将气温拉到了个位数。今年情况的确特殊,往年还是秋高气爽,热情和暖的时段
拳王里迪克鲍一个曾经拥有一切的赛场巨无霸当回顾拳王里迪克鲍的职业生涯时,你会有什么样的感触?如今一脸沧桑的他,在30年前的1992年夺得世界重量级冠军。当时,正值巅峰期的里迪克鲍,犹如魔君下凡间,被认为可以长期统治所属领河北队本轮惜败津门虎,球迷揪出场上最大水货,直言他葬送好局河北队在本轮中超迎来了实力不俗的津门虎队,这场比赛球队踢得非常顽强。河北队在部分落后的情况下,靠着顽强毅力和不服输的精神头,将比分追成了3比3。对于,全华班出战的河北队,能在多名外82岁蒋兴权正式退休!辽篮致敬居功至伟,辽宁篮球历史第一人8月12日,辽篮在官方宣布蒋兴权不在俱乐部任职的消息,这位1940年出生的82岁篮球传奇正式退休,此前他在辽篮担任技术顾问两年,我们经常可以在场边看到白发的蒋兴权,陪在杨鸣的身边。郑钦文战胜美网冠军,晋级多伦多赛八强!之前只有李娜做到过澎湃新闻记者蒲垚磊郑钦文继续创造历史。这个赛季屡次表现惊艳的郑钦文,又一次迎来了突破。8月12日,WTA1000多伦多站女单第三轮,郑钦文鏖战三盘击败前美网冠军前赛会冠军安德莱斯库美媒列出湖人无法拒绝交易勒布朗詹姆斯的三笔交易进入休赛季的湖人也是陷入了挣扎,因为他们的三大球星都陷入了交易谣言,呼声最大的莫过于威少。因为威少糟糕的表现,不少人认为他是球队202122赛季无缘季后赛的关键,其次是伤病不断的安胡歌靠胸肌登上热搜,但比起身材,他的新剧更有看点就在不久前,由胡歌张新成吴越共同主演,还汇聚了刘涛黄磊李光洁王骁刘昊然等一众或时公认的实力派或是正当红的演员们,还是今年正午阳光的重点项目之一的电视剧县委大院终于宣布杀青。而且,根4位替身明星有人成就经典,有人成为一级演员,有人被毒哑嗓子2018年,名导张艺谋凭借着他导演的武侠动作片影,一举夺得了第55届金马奖最佳导演,最佳视效,最佳美术设计,最佳造型设计,四项重磅大奖。影所讲述的,是一个关于替身的故事。自古以来,不要小瞧这些卡片,它拥有游戏魅力,很容易激发孩子的学习热情父母都希望孩子能主动多学点,可现实是,他能主动把作业做完就不错了。可是你知道吗?教育孩子有时候真的是要多摸索新方法的。放假之前,老师曾建议家长,暑期可以适当教孩子认字,暑期愉快地开太适合夏天穿了,如此不挑人的连衣裙,穿起来时髦减龄又显瘦今年夏天特别流行法式复古穿搭风格,各种风格类型的连衣裙穿起来时髦减龄又容易显瘦,实在是太适合夏天穿了,如此不挑人的连衣裙,大家一定要多备几件。这款白色衬衫连衣裙最让我心动的,是它不5年前27岁脑瘫女不顾劝阻冒险生娃,被丈夫宠成公主后来怎样孩子有没有问题。没问题,孩子健康得很。还好没有给孩子拖后腿。这是一名孕妇在生产时和医生的对话,孕妇为什么要在出生的时候,问孩子有没有问题呢?原来这么孕妇是一名脑瘫患者,不顾家人劝阻衬衫裙依旧是经典!这几种百搭的款式一定要入手,穿搭更有时尚感连衣裙不仅是夏天专属的服装款式,更是秋天很适合穿的单品,尤其是搭配风衣,绝对是秋天穿搭的标配,而连衣裙的款式,也有不同的选择,衬衫裙就是连衣裙中很有特点的一种单品。把衬衫和连衣裙的