快递鸟快递查询接口API代码
2019快递鸟接口支持快递公司编码
阿尔及利亚邮政 阿富汗邮政 安哥拉邮政 埃及邮政 阿鲁巴邮政 阿联酋邮政 阿塞拜疆邮政 博茨瓦纳邮政 波多黎各邮政 冰岛邮政 白俄罗斯邮政 波黑邮政 保加利亚邮政 巴基斯坦邮政 黎巴嫩邮政 波兰邮政 宝通达 贝邮宝 出口易 德国邮政 危地马拉邮政 乌干达邮政 乌克兰EMS 乌克兰邮政 乌拉圭邮政 林克快递 文莱邮政 新喀里多尼亚邮政 爱尔兰邮政 夏浦物流 印度邮政 夏浦世纪 厄瓜多尔邮政 俄罗斯邮政 飞特物流 瓜德罗普岛邮政 哥斯达黎加邮政 韩国邮政 华翰物流 互联易
U UEX
QQYZ POSTEIBE
PAPA STONG STO_INTL JYSD TAILAND138 USPS UPU VCTRANS XKGJ XD XGYZ XLKD XSRD XYGJ XYGJSD XYJ YAMA YODEL YHXGJSD YUEDANYOUZ YMSY YYSD YJD YBG YJ
天马转运 滕牛快递 太平洋快递 唐三藏转运 TWC转运世界 润东国际快线 同心快递 天翼快递 德国海淘之家 德运网 文达国际DCS 同舟快递 UCS合众快递 星辰快递 先锋快递 云骑快递 优晟速递 运淘美国 至诚速递 增速海淘 中驰物流 中欧快运 准实快运 中外速运 郑州建华
ZY_TM ZY_TN ZY_TPY ZY_TSZ ZY_TWC ZY_RDGJ ZY_TX ZY_TY ZY_DGHT ZY_DYW ZY_WDCS ZY_TZH ZY_UCS ZY_XC ZY_XF ZY_YQ ZY_YSSD ZY_YTUSA ZY_ZCSD ZYZOOM
ZH ZO ZSKY ZWSY ZZJH
口支持快递公司编码表
轨迹查询
支持 支持 支持 支持 支持 支持 支持 支持 支持 支持 支持 支持 支持 支持 支持 支持 支持 支持 支持 支持 支持 支持 支持 支持 支持 支持 支持 支持
快递单号查询快递鸟API接口-EMS
快递单号查询快递鸟API接⼝-EMS EMS快递查询调⽤快递鸟提供的快递查询API标准接⼝,快速对接100多家快递公司的物流轨迹查询,本篇⽂章实现<EMS>的快递单号查询。
⾸先我们准备好需要⽤到的资源,这⾥推荐⼤家去爱奇艺查看视频教程:测试商户ID:test1617571测试API key:554343b2-7252-439b-b4eb-1af42c8f2175(此Key仅限测试环境使⽤)API测试地址:接下来,我们讲解⼀下请求参数⼀、接⼝描述/说明请求系统级参数说明:参数名称类型说明必须要求RequestData String请求内容需进⾏URL(utf-8)编码。
请求内容JSON格式,须和DataType⼀致。
REBusinessID String商户ID,请在我的服务页⾯查看。
RRequestType String请求指令类型:1002RDataSign String 数据内容签名:把(请求内容(未编码)+AppKey)进⾏MD5加密,然后Base64编码,最后进⾏URL(utf-8)编码。
详细过程请查看Demo。
RDataType String请求、返回数据类型:2-json;O备注:R-必填(Required),O-可选(Optional),C-报⽂中该参数在⼀定条件下可选(Conditional)这⾥提到了系统级参数,也相当于是公⽤参数,这些参数是调⽤每个接⼝都是必须要传参的。
⼆、接⼝参数请求内容字段定义:参数名称类型说明必须要求OrderCode String订单编号OShipperCode String快递公司编码RLogisticCode String物流单号RCustomerName String寄件⼈或收件⼈的⼿机号后四位数字R接⼝参数,也叫业务参数,请求的业务接⼝不同,参数的字段,内容也不同,是跟着业务变化的,这⾥我们实现的是即时查询接⼝,请求指令类型:1002,快递鸟官⽹要求必须传递快递公司编码和物流单号,EMS快递的编码是EMS如要查看其他快递公司的编码,点击此链接:我们⽤真实单号(1160001630231)来完成轨迹接⼝调⽤,请求 JSON{'OrderCode':'','ShipperCode':'EMS','LogisticCode':' 1160001630231'}请求的完整报⽂(URL编码以后):RequestData=%7b%27OrderCode%27%3a%27%27%2c%27ShipperCode%27%3a%27EMS%27%2c%27LogisticCode%27%3a%271160001630231%27%7d%0d%0a++++++++&EBusinessID=1264未编码的请求报⽂:RequestData={'OrderCode':'','ShipperCode':'EMS','LogisticCode':'1160001630231'}&EBusinessID=1264783&RequestType=1002&DataSign=NDlmMDAzZTYwYmYyY2FmZjRjOTNhZDAwYjVkNDVjODM=&DataType=2返回参数定义:参数名称类型说明必须要求EBusinessID String⽤户ID ROrderCode String订单编号OShipperCode String快递公司编码RLogisticCode String物流运单号OSuccess Bool成功与否RReason String失败原因OState String物流状态:2-在途中,3-签收,4-问题件RTracesAcceptTime String时间RAcceptTime String返回报⽂信息{"LogisticCode": "1160001630231","ShipperCode": "EMS","Traces": [{"AcceptStation": "[莆⽥市]【莆⽥电商营业部】已收件,揽投员:郑美停,电话:152********","AcceptTime": "2020-02-06 20:12:56"}, {"AcceptStation": "[莆⽥市]离开【莆⽥电商营业部】,下⼀站【莆⽥市邮区中⼼】","AcceptTime": "2020-02-06 20:15:50"}, {"AcceptStation": "[莆⽥市]到达【莆⽥市邮区中⼼】","AcceptTime": "2020-02-06 20:17:26"}, {"AcceptStation": "[莆⽥市]离开【莆⽥市邮区中⼼】,下⼀站【福州旗⼭处理中⼼】","AcceptTime": "2020-02-06 23:59:31"}, {"AcceptStation": "[福州市]到达【福州旗⼭处理中⼼】(经转)","AcceptTime": "2020-02-07 17:40:37"}, {"AcceptStation": "[福州市]离开【福州旗⼭处理中⼼】,下⼀站【长沙邮件处理中⼼】(经转)","AcceptTime": "2020-02-08 04:56:41"}, {"AcceptStation": "[长沙市]到达【长沙邮件处理中⼼】(经转)","AcceptTime": "2020-02-08 16:05:58"}, {"AcceptStation": "[长沙市]离开【长沙邮件处理中⼼】,下⼀站【益阳邮件处理中⼼】(经转)","AcceptTime": "2020-02-08 20:28:47"}, {"AcceptStation": "[益阳市]到达【益阳邮件处理中⼼】","AcceptTime": "2020-02-09 00:25:22"}, {"AcceptStation": "[益阳市]离开【益阳邮件处理中⼼】,下⼀站【益阳市资阳揽投部】","AcceptTime": "2020-02-09 06:22:33"}, {"AcceptStation": "[益阳市]到达【益阳市资阳揽投部】","AcceptTime": "2020-02-09 08:56:06"}, {"AcceptStation": "[益阳市]【益阳市资阳揽投部】安排投递,投递员:龙飞跃,电话:158********,揽投部电话:177********", "AcceptTime": "2020-02-09 09:26:09"}, {"AcceptStation": "[益阳市]已签收,收发室,投递员:龙飞跃,电话:158********","AcceptTime": "2020-02-09 15:03:48"}],"State": "3","EBusinessID": "1264783","Success": true}这⾥根据我们的实际业务需求来选择免费套餐或者收费套餐。
免费快递查询api-PHP源码demo
免费快递查询api-PHP源码demo使用:适用于多个快递免费查询接口类型:快递鸟物流查询接口接口说明:接口支持的消息接收方式为HTTP POST请求方法的编码格式(utf-8):"application/x-www-form-urlencoded;charset=utf-8"。
申请地址:/regPHP案例<?php//电商IDdefined('EBusinessID') or define('EBusinessID', 1237100);//电商加密私钥,注意保管,不要泄漏defined('AppKey') or define('AppKey', '518a73d8-1f7f-441a-b644-33e77b49d846');//请求urldefined('ReqURL') or define('ReqURL', '/Ebusiness/EbusinessOrderHandle.aspx');/*** Json方式查询订单物流轨迹*/function getOrderTracesByJson(){$requestData= "{'OrderCode':'','ShipperCode':'SF','LogisticCode':'589707398027'}";$datas = array('EBusinessID' => EBusinessID,'RequestType' => '1002','RequestData' => urlencode($requestData) ,'DataType' => '2',);$datas['DataSign'] = encrypt($requestData, AppKey);$result=sendPost(ReqURL, $datas);//根据公司业务处理返回的信息......return $result;}/*** XML方式查询订单物流轨迹*/function getOrderTracesByXml(){$requestData= "<?xml version=\"1.0\" encoding=\"utf-8\" ?>"."<Content>"."<OrderCode></OrderCode>"."<ShipperCode>SF</ShipperCode>"."<LogisticCode>589707398027</LogisticCode>"."</Content>";$datas = array('EBusinessID' => EBusinessID,'RequestType' => '1002','RequestData' => urlencode($requestData) ,'DataType' => '1',);$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)));}?>。
免费顺丰快递接口api对接调用demo
(1)开发服务
开发自身业务的服务,服务需按照后面接口的定义规则。
(2)查看接口调用的DEMO
物流技术接口提供调用物流接口的DEMO(.Net版本),包括网上在线订单下单、物流轨迹查询等物流行业标准化的下单操作流程与数据查询格式。提交接入处理的相关代码如有不明白的地方可与物流技术接口人协作开发。
(f)接收方判断签名后的数据跟传递过来的DataSign是否一致,如果一致进行业务操作,如果不一直返回错误。
9
///<summary>
///电商Sign签名
///</summary>
///<param name="content">内容</param>
///<param name="keyValue">Appkey</param>
"LogisticCode": "118461988807",
"Success": true,
"State": 3,
"Reason": null,
"Traces": [
{
"AcceptTime": "2014/06/25 08:05:37",
"AcceptStation": "正在派件..(派件人:邓裕富,电话:18718866310)[深圳市]",
在POST请求中会传递5个参数
4个必须参数:
RequestType=请求指令类型
EBusinessID==电商ID
快递鸟API接口支持快递公司编码表2019
快递鸟API接口支持快递公司编码表2019(最新)快递鸟单号查询接口和电子面单等接口都是免费的,快递鸟是一个独立的第三方国际物流接口服务商,快递鸟API接口的优点主要是:全、多、稳定、及时,免费。
目前快递鸟已经集成了全球418家物流快递公司接口,高实时、高稳定、高并发,也可以对接自动识别快递公司接口,支持申通、顺丰、圆通、宅急送、韵达、中通、百世、天天、四通一达、京东、EMS等国内/国际快递查询。
为电商平台、电商系统商(ERP)、仓储(WMS)等有系统的用户提供智选物流、电子面单、物流查询、物流提醒等全流程的物流接口解决方案。
快递鸟物流查询API接口好用,使用的用户很多(有十几个千人技术QQ群),大的ERP基本都用的是快递鸟的数据,非淘系的电商平台也都是用快递鸟提供的接口服务。
整个对接挺简单的,到快递鸟网站注册一下,申请到自己的KEY 和ID,对接后就可以使用了,在快递鸟网站上下载调用的demo,修改下参数就可以了。
顺丰速运快递查询接口API和电子面单接口可以通过快递鸟对接,通过顺丰单号和手机号后四位查询轨迹信息,如果是通过快递鸟下单获得的顺丰单号,可通过单号直接查询,具体下载快递鸟接口技术文档查看接口说明。
ShipperCode为SF,且快递单号非快递鸟渠道返回时,必填,对应收件人/寄件人手机号后四位;ShipperCode 为SF,且快递单号为快递鸟渠道返回时,不填。
对接快递鸟API接口需要各家快递公司编码表,下面附快递鸟API接口支持快递公司编码表供大家使用:快递鸟接口支持快递公司编码表快递公司编码轨迹查询是否支持常用顺丰速运SF 支持百世快递HTKY 支持中通快递ZTO 支持申通快递STO 支持圆通速递YTO 支持韵达速递YD 支持邮政快递包裹YZPY 支持EMS EMS 支持天天快递HHTT 支持京东快递JD 支持优速快递UC 支持德邦快递DBL 支持宅急送ZJS 支持TNT快递TNT 支持UPS UPS 支持DHL DHL 支持FEDEX联邦(国内件)FEDEX 支持FEDEX联邦(国际件)FEDEX_GJ 支持国内A安捷快递AJ 支持阿里跨境电商物流ALKJWL 支持安迅物流AX 支持安邮美国AYUS 支持亚马逊物流AMAZON 支持澳门邮政AOMENYZ 支持澳多多ADD 支持澳邮专线AYCA 支持安鲜达AXD 支持安能快运ANEKYB八达通BDT 支持百腾物流BETWL 支持北极星快运BJXKY 支持奔腾物流BNTWL 支持百福东方BFDF 支持贝海国际BHGJ 支持八方安运BFAY 支持百世快运BTWL 支持C春风物流CFWL 支持诚通物流CHTWL 支持城市100 CITY100 支持城际快递CJKD 支持CNPEX中邮快递CNPEX 支持COE东方快递COE 支持长沙创一CSCY 支持成都善途速运CDSTKY 支持联合运通CTG 支持疯狂快递CRAZY 支持CBO钏博物流CBO 支持承诺达CND 支持D D速物流DSWL 支持到了港DLG 支持大田物流DTWL 支持东骏快捷物流DJKJWL 支持德坤DEKUN 支持德邦快运DBLKY 支持大马鹿DML 支持E E特快ETK 支持EWE EWE 支持F快服务KFW 支持飞康达FKD 支持富腾达FTD 支持凡宇货的FYKD 支持速派快递FASTGO 支持丰通快运FT 支持G冠达GD 支持广东邮政GDEMS 支持共速达GSD 支持广通GTONG 支持迦递快递GAI 支持港快速递GKSD 支持高铁速递GTSD 支持H汇丰物流HFWL 支持黑狗冷链HGLL 支持恒路物流HLWL 支持天地华宇HOAU 支持鸿桥供应链HOTSCM 支持海派通物流公司HPTEX 支持华强物流hq568 支持环球速运HQSY 支持华夏龙物流HXLWL 支持豪翔物流HXWL 支持合肥汇文HFHW 支持辉隆物流HLONGWL 支持华企快递HQKD 支持韩润物流HRWL 支持青岛恒通快递HTKD 支持货运皇物流HYH 支持好来运快递HYLSD 支持皇家物流HJWL 支持J捷安达JAD 支持京广速递JGSD 支持九曳供应链JIUYE 支持急先达JXD 支持晋越快递JYKD 支持加运美JYM 支持景光物流JGWL 支持佳怡物流JYWL 支持京东快运JDKY佳吉快运CNEX 支持K跨越速运KYSY 支持快速递物流KSDWL 支持快8速运KBSY 支持L龙邦快递LB 支持立即送LJSKD 支持联昊通速递LHT 支持M民邦快递MB 支持民航快递MHKD 支持美快MK 支持门对门快递MDM 支持迈隆递运MRDY 支持明亮物流MLWL 支持N南方传媒物流NFCM 支持能达速递NEDA 支持P平安达腾飞快递PADTF 支持泛捷快递PANEX 支持品骏快递PJ 支持PCA Express PCA 支持Q全晨快递QCKD 支持全日通快递QRT 支持快客快递QUICK 支持全信通QXT 支持荣庆物流RQ 支持七曜中邮QYZY 支持R如风达RFD 支持日日顺物流RRS 支持瑞丰速递RFEX 支持S赛澳递SAD 支持苏宁物流SNWL 支持圣安物流SAWL 支持晟邦物流SBWL 支持上大物流SDWL 支持盛丰物流SFWL 支持速通物流ST 支持速腾快递STWL 支持速必达物流SUBIDA 支持速递e站SDEZ 支持速呈宅配SCZPDS 支持速尔快递SURE 支持闪送SS 支持盛通快递STKD 支持顺心捷达SX 支持T台湾邮政TAIWANYZ 支持唐山申通TSSTO 支持通用物流TYWL 支持腾林物流TLWLU全一快递UAPEX 支持优联吉运ULUCKEX 支持UEQ Express UEQ 支持W万家康WJK 支持万家物流WJWL 支持武汉同舟行WHTZX 支持维普恩WPE 支持万象物流WXWL 支持微特派WTP 支持温通物流WTWLX迅驰物流XCWL 支持信丰物流XFEX 支持新杰物流XJ 支持Y源安达快递YADEX 支持远成物流YCWL 支持远成快运YCSY 支持义达国际物流YDH 支持易达通YDT 支持原飞航物流YFHEX 支持亚风快递YFSD 支持运通快递YTKD 支持亿翔快递YXKD 支持运东西网YUNDX 支持壹米滴答YMDD 支持邮政国内标快YZBK 支持一站通速运YZTSY 支持驭丰速运YFSUYUN 支持余氏东风YSDF 支持耀飞快递YF 支持韵达快运YDKY 支持云路YL 支持一智通YZT 支持Z增益快递ZENY 支持汇强快递ZHQKD 支持众通快递ZTE 支持郑州速捷SJ 支持中通快运ZTOKY 支持中邮快递ZYKD 支持中粮我买网WM 支持芝麻开门ZMKM 支持中骅物流ZHWL 支持中铁物流ZTWL 支持国外A AAE全球专递AAE 支持ACS雅仕快递ACS 支持ADP Express Tracking ADP 支持安圭拉邮政ANGUILAYOU 支持APAC APAC 支持Aramex ARAMEX 支持奥地利邮政AT 支持Australia Post Tracking AUSTRALIA 支持B比利时邮政BEL 支持BHT快递BHT 支持秘鲁邮政BILUYOUZHE 支持巴西邮政BR 支持不丹邮政BUDANYOUZH 支持C CDEK CDEK 支持程光物流CG 支持加拿大邮政CA 支持D递必易国际物流DBYWL 支持大道物流DDWL 支持德国云快递DGYKD 支持到乐国际DLGJ 支持DHL德国DHL_DE 支持DHL(英文版) DHL_EN 支持DHL全球DHL_GLB 支持DHL Global Mail DHLGM 支持丹麦邮政DK 支持DPD DPD 支持DPEX DPEX 支持递四方速递D4PX 支持E EMS国际EMSGJ 支持易客满EKM 支持EPS (联众国际快运) EPS 支持EShipper ESHIPPER 支持F丰程物流FCWL 支持法翔速运FX 支持FQ FQ 支持芬兰邮政FLYZ 支持方舟国际速递FZGJ 支持G国际e邮宝GJEYB 支持国际邮政包裹GJYZ 支持GE2D GE2D 支持冠泰GT 支持GLS GLS 支持欧洲专线(邮政) IOZYZ 支持澳大利亚邮政IADLYYZ 支持阿尔巴尼亚邮政IAEBNYYZ 支持阿尔及利亚邮政IAEJLYYZ 支持阿富汗邮政IAFHYZ 支持安哥拉邮政IAGLYZ 支持埃及邮政IAJYZ 支持阿鲁巴邮政IALBYZ 支持阿联酋邮政IALYYZ 支持阿塞拜疆邮政IASBJYZ 支持博茨瓦纳邮政IBCWNYZ 支持波多黎各邮政IBDLGYZ 支持冰岛邮政IBDYZ 支持白俄罗斯邮政IBELSYZ 支持波黑邮政IBHYZ 支持保加利亚邮政IBJLYYZ 支持巴基斯坦邮政IBJSTYZ 支持黎巴嫩邮政IBLNYZ 支持波兰邮政IBOLYZ 支持宝通达IBTD 支持贝邮宝IBYB 支持出口易ICKY 支持德国邮政IDGYZ 支持危地马拉邮政IWDMLYZ 支持乌干达邮政IWGDYZ 支持乌克兰EMS IWKLEMS 支持乌克兰邮政IWKLYZ 支持乌拉圭邮政IWLGYZ 支持林克快递ILKKD 支持文莱邮政IWLYZ 支持新喀里多尼亚邮政IXGLDNYYZ 支持爱尔兰邮政IE 支持夏浦物流IXPWL 支持印度邮政IYDYZ 支持夏浦世纪IXPSJ 支持厄瓜多尔邮政IEGDEYZ 支持俄罗斯邮政IELSYZ 支持飞特物流IFTWL 支持瓜德罗普岛邮政IGDLPDYZ 支持哥斯达黎加邮政IGSDLJYZ 支持韩国邮政IHGYZ 支持华翰物流IHHWL 支持互联易IHLY 支持哈萨克斯坦邮政IHSKSTYZ 支持黑山邮政IHSYZ 支持津巴布韦邮政IJBBWYZ 支持吉尔吉斯斯坦邮政IJEJSSTYZ 支持加纳邮政IJNYZ 支持柬埔寨邮政IJPZYZ 支持克罗地亚邮政IKNDYYZ 支持肯尼亚邮政IKNYYZ 支持科特迪瓦EMS IKTDWEMS 支持罗马尼亚邮政ILMNYYZ 支持摩尔多瓦邮政IMEDWYZ 支持马耳他邮政IMETYZ 支持尼日利亚邮政INRLYYZ 支持塞尔维亚邮政ISEWYYZ 支持塞浦路斯邮政ISPLSYZ 支持乌兹别克斯坦邮政IWZBKSTYZ 支持西班牙邮政IXBYYZ 支持新加坡EMS IXJPEMS 支持新西兰邮政IXXLYZ 支持意大利邮政IYDLYZ 支持英国邮政IYGYZ 支持亚美尼亚邮政IYMNYYZ 支持也门邮政IYMYZ 支持智利邮政IZLYZ 支持J日本邮政JP 支持今枫国际JFGJ 支持极光转运JGZY 支持吉祥邮转运JXYKD 支持嘉里国际JLDT 支持绝配国际速递JPKD 支持佳惠尔SYJHE 支持L联运通LYT 支持联合快递LHKDS 支持林道国际SHLDHY 支持N荷兰邮政NL 支持新顺丰NSF 支持O ONTRAC ONTRAC 支持OCS OCS 支持全球邮政QQYZ 支持P POSTEIBE POSTEIBE 支持啪啪供应链PAPA 支持Q秦远海运QYHY 支持启辰国际VENUCIA 支持R瑞典邮政RDSE 支持S SKYPOST SKYPOST 支持瑞士邮政SWCH 支持首达速运SDSY 支持穗空物流SK 支持首通快运STONG 支持申通快递国际单STO_INTL 支持上海久易国际JYSD 支持T泰国138 TAILAND138 支持U USPS美国邮政USPS 支持万国邮政UPU 支持V中越国际物流VCTRANS 支持X星空国际XKGJ 支持迅达国际XD 支持香港邮政XGYZ 支持喜来快递XLKD 支持鑫世锐达XSRD 支持新元国际XYGJ 支持ADLER雄鹰国际速递XYGJSD 支持西邮寄XYJ 支持Y日本大和运输(Yamato) YAMA 支持YODEL YODEL 支持一号线YHXGJSD 支持约旦邮政YUEDANYOUZ 支持玥玛速运YMSY 支持鹰运YYSD 支持易境达YJD 支持洋包裹YBG 支持友家速递YJ 支持转运A AOL(澳通)AOL 支持B BCWELT BCWELT 支持笨鸟国际BN 支持U优邦国际速运UBONEX 支持UEX UEX 支持Y韵达国际YDGJ 支持(注:仅支持通过快递鸟电子面单接口下单返回的韵达国际单号查询)Z爱购转运ZY_AG 支持爱欧洲ZY_AOZ 支持澳世速递ZY_AUSE 支持AXO ZY_AXO 支持贝海速递ZY_BH 支持蜜蜂速递ZY_BEE 支持百利快递ZY_BL 支持斑马物流ZY_BM 支持百通物流ZY_BT 支持策马转运ZY_CM 支持EFS POST ZY_EFS 支持宜送转运ZY_ESONG 支持飞碟快递ZY_FD 支持飞鸽快递ZY_FG 支持风行快递ZY_FX 支持风行速递ZY_FXSD 支持飞洋快递ZY_FY 支持皓晨快递ZY_HC 支持海悦速递ZY_HYSD 支持君安快递ZY_JA 支持时代转运ZY_JD 支持骏达快递ZY_JDKD 支持骏达转运ZY_JDZY 支持久禾快递ZY_JH 支持金海淘ZY_JHT 支持联邦转运FedRoad ZY_LBZY 支持龙象快递ZY_LX 支持美国转运ZY_MGZY 支持美速通ZY_MST 支持美西转运ZY_MXZY 支持QQ-EX ZY_QQEX 支持瑞天快递ZY_RT 支持瑞天速递ZY_RTSD 支持速达快递ZY_SDKD 支持四方转运ZY_SFZY 支持上腾快递ZY_ST 支持天际快递ZY_TJ 支持天马转运ZY_TM 支持滕牛快递ZY_TN 支持太平洋快递ZY_TPY 支持唐三藏转运ZY_TSZ 支持TWC转运世界ZY_TWC 支持润东国际快线ZY_RDGJ 支持同心快递ZY_TX 支持天翼快递ZY_TY 支持德国海淘之家ZY_DGHT 支持德运网ZY_DYW 支持文达国际DCS ZY_WDCS 支持同舟快递ZY_TZH 支持UCS合众快递ZY_UCS 支持星辰快递ZY_XC 支持先锋快递ZY_XF 支持云骑快递ZY_YQ 支持优晟速递ZY_YSSD 支持运淘美国ZY_YTUSA 支持至诚速递ZY_ZCSD 支持增速海淘ZYZOOM 支持中驰物流ZH 支持中欧快运ZO 支持准实快运ZSKY 支持中外速运ZWSY 支持郑州建华ZZJH 支持。
快递查询接口JSON案例
1、功能说明
订单查询--根据订单号查询物流轨迹,此功能前提需要与快递鸟对接订单绑定功能。
物流轨迹查询-使用发货的物流单号即可实现查询,无需任何绑定。
2、接口规则
(1)、查询接口支持按照运单号查询(单个查询)。
(2)、指定的物流运单号选择相应的快递公司编码,格式不对或则编码错误都会返失败的信息。
如EMS物流单号应选择快递公司编码(EMS)
(3)、返回的物流跟踪信息按照发生的时间倒序排列。
(4)、接口指令1002。
(5)、请求地址:
/Ebusiness/EbusinessOrderHandle.aspx
(6)、接口秘钥申请:快递鸟网站
4、应用级输入参数
5、返回结果参数
6、物流轨迹详请参数
、JSON请求示例
、JSON返回示例。
快递鸟API查询快递接口
1.申请一个快递鸟的帐号获取授权申请/reg快递鸟的帐号使永久免费的,且申请了立即就能用的,也不需要审核。
2.按照单号识别接口和即时查询接口封装好数据3.获取返回的 json 数据输出import jsonimport urllibimport urllib.requestimport hashlibimport base64import urllib.parse# 此处为快递鸟官网申请的帐号和密码APP_id = "1266271"APP_key = "7526a46e-3a2a-4f5b-8659-d72f361e3386"def encrypt(origin_data, appkey):"""数据内容签名:把(请求内容(未编码)+AppKey)进行MD5加密,然后Base64编码""" m = hashlib.md5()m.update((origin_data+appkey).encode("utf8"))encodestr = m.hexdigest()base64_text = base64.b64encode(encodestr.encode(encoding='utf-8'))return base64_textdef sendpost(url, datas):"""发送post请求"""postdata = urllib.parse.urlencode(datas).encode('utf-8')header = {"Accept": "application/x-www-form-urlencoded;charset=utf-8","Accept-Encoding": "utf-8"}req = urllib.request.Request(url, postdata, header)get_data = (urllib.request.urlopen(req).read().decode('utf-8'))return get_datadef get_company(logistic_code, appid, appkey, url):"""获取对应快递单号的快递公司代码和名称"""data1 = {'LogisticCode': logistic_code}d1 = json.dumps(data1, sort_keys=True)requestdata = encrypt(d1, appkey)post_data = {'RequestData': d1,'EBusinessID': appid,'RequestType': '2002','DataType': '2','DataSign': requestdata.decode()}json_data = sendpost(url, post_data)sort_data = json.loads(json_data)return sort_datadef get_traces(logistic_code, shipper_code, appid, appkey, url):"""查询接口支持按照运单号查询(单个查询)"""data1 = {'LogisticCode': logistic_code, 'ShipperCode': shipper_code}d1 = json.dumps(data1, sort_keys=True)requestdata = encrypt(d1, appkey)post_data = {'RequestData': d1, 'EBusinessID': appid, 'RequestType': '1002', 'DataType': '2','DataSign': requestdata.decode()}json_data = sendpost(url, post_data)sort_data = json.loads(json_data)return sort_datadef recognise(expresscode):"""输出数据"""url = ':8081/Ebusiness/EbusinessOrderHandle.aspx' data = get_company(expresscode, APP_id, APP_key, url)if not any(data['Shippers']):print("未查到该快递信息,请检查快递单号是否有误!")else:print("已查到该", str(data['Shippers'][0]['ShipperName'])+"("+str(data['Shippers'][0]['ShipperCode'])+")", expresscode)trace_data = get_traces(expresscode, data['Shippers'][0]['ShipperCode'], APP_id, APP_key, url)if trace_data['Success'] == "false" or not any(trace_data['Traces']): print("未查询到该快递物流轨迹!")else:str_state = "问题件"if trace_data['State'] == '2':str_state = "在途中"if trace_data['State'] == '3':str_state = "已签收"print("目前状态: "+str_state)trace_data = trace_data['Traces']item_no = 1for item in trace_data:print(str(item_no)+":", item['AcceptTime'],item['AcceptStation'])item_no += 1print("\n")returnwhile True:code = input("请输入快递单号(Esc退出):")code = code.strip()if code == "esc":breakrecognise(code)【疑问解答】1、问题:快递鸟接口有并发要求吗?快递鸟即时查询接口并发不超过10次/秒,物流跟踪接口订阅不超过30次/秒,电子面单接口下单不超过20次/秒。
PHP调用快递查询API代码示例
PHP调用快递查询API代码示例这是一个互联网时代,传统的物流已经难以满足大家的需求,而快递鸟这一智能物流服务平台的出现成了物流服务的新宠,不仅查询方便,隐私方面也做得很不错,那么PHP调用快递查询API代码是怎样的呢?下面我们一起来看一下。
PHP Class Example安装:1. 复制Trackingmore API类的代码到你需要的位置,具体API 类的代码放在本文档的后半部分,2.在这一行填写你自己在后台生成的api key,protected $apiKey = 'YOUR API KEY';3. 在程序中包含这个类.列出所有运输商$track = new Trackingmore;$track = $track->getCarrierList();通过单号自动识别运输商$track = new Trackingmore;$trackingNumber = 'RM121546236CN';$track = detectCarrier($trackingNumber);列出所有的跟踪$track = new Trackingmore;$page = 1;$limit = 50;$createdAtMin = time() - 7*24*60*60; $createdAtMax = time();$track =$track->getTrackingsList($page,$limit,$createdAtMin,$createdAtMax);创建一个跟踪项目$track = new Trackingmore;$extraInfo['title'] = 'iphone6'; $extraInfo['customer_name'] = 'charse chen'; $extraInfo['customer_email'] = 'chasechen@'; $extraInfo['order_id'] = '8988787987'; $track =$track->createTracking('china-post','RM121516216CN',$extraInfo);创建多个跟踪$track = new Trackingmore;$items = array(array('tracking_number' => 'RM131516216CN','carrier_code' => 'china-post','title' => 'iphone6','customer_name' => 'charse chen','customer_email' => 'chasechen@','order_id' => '8988787987'),array('tracking_number' => 'RM111516216CN','carrier_code' => 'china-post','title' => 'iphone6s','customer_name' => 'clooney chen','customer_email' => 'clooneychen@','order_id' => '898874587'),);$track = $track->createMultipleTracking($items);获取跟踪单个跟踪结果$track = new Trackingmore;$track =$track->getSingleTrackingResult('china-post','RM131516216CN');更新跟踪项目$track = new Trackingmore;$extraInfo['title'] = 'iphone6';$extraInfo['customer_name'] = 'charse chen';$extraInfo['customer_email'] = 'chasechen@'; $extraInfo['order_id'] = '8988787987';$track =$track->updateTrackingItem('china-post','RM131516216CN',$extraInfo);删除跟踪项目$track = new Trackingmore;$track =$track->deleteTrackingItem('china-post','RM131516216CN');获取单次跟踪的实时跟踪结果$track = new Trackingmore;$track =$track->getRealtimeTrackingResults('china-post','RM131516216CN');PHP Class Example API 类的代码如下,你可以将下列代码复制到代码编辑器中,这样会看起来整齐一些,:class Trackingmore{ const API_BASE_URL = '';const ROUTE_CARRIERS = 'carriers/'; constROUTE_CARRIERS_DETECT = 'carriers/detect'; const ROUTE_TRACKINGS = 'trackings';const ROUTE_LIST_ALL_TRACKINGS = 'trackings/get'; const ROUTE_CREATE_TRACKING = 'trackings/post'; constROUTE_TRACKINGS_BATCH = 'trackings/batch';const ROUTE_TRACKINGS_REALTIME = 'trackings/realtime'; protected $apiKey = 'your api key';protected function _getApiData($route, $method = 'GET', $sendData = array()){ $method = strtoupper($method);$requestUrl = self::API_BASE_URL.$route; $curlObj = curl_init();curl_setopt($curlObj, CURLOPT_URL,$requestUrl);if($method == 'GET'){ curl_setopt($curlObj,CURLOPT_HTTPGET,true); }elseif($method == 'POST'){curl_setopt($curlObj, CURLOPT_POST, true); }elseif ($method =='PUT'){ curl_setopt($curlObj, CURLOPT_PUT, true);}else{ curl_setopt($curlObj, CURLOPT_CUSTOMREQUEST, $method); } curl_setopt($curlObj, CURLOPT_CONNECTTIMEOUT, 10);curl_setopt($curlObj, CURLOPT_TIMEOUT, 90);curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, true);curl_setopt($curlObj, CURLOPT_HEADER, 0);$headers = array( 'Trackingmore-Api-Key: ' . $this->apiKey,'Content-Type: application/json',); if($sendData){ $dataString = json_encode($sendData);curl_setopt($curlObj, CURLOPT_POSTFIELDS, $dataString); $headers[] = 'Content-Length: ' . strlen($dataString); }curl_setopt($curlObj, CURLOPT_HTTPHEADER, $headers); $response = curl_exec($curlObj); curl_close($curlObj);unset($curlObj); return $response; }// List all carriers public function getCarrierList(){ $returnData = array();$requestUrl = self::ROUTE_CARRIERS; $result =$this->_getApiData($requestUrl, 'GET'); if ($result) {$returnData = json_decode($result, true); } return $returnData;} /*Detect a carrier by tracking code* @param string $trackingNumber Tracking number * @return array */public function detectCarrier($trackingNumber) { $returnData = array();$requestUrl = self::ROUTE_CARRIERS_DETECT;$sendData['tracking_number'] = $trackingNumber; $result =$this->_getApiData($requestUrl, 'POST',$sendData);if ($result) { $returnData = json_decode($result, true); }return $returnData; }/** * List all trackings * @access public* @param int $page Page to display (optional) * @param int $limit Items per page (optional) * @param int $createdAtMin Start date and time of trackings created (optional)* @param int $createdAtMax * @return array */public function getTrackingsList($page = 1,$limit =100,$createdAtMin = 0,$createdAtMax = 0){ $returnData = array(); $sendData = array();$requestUrl = self::ROUTE_LIST_ALL_TRACKINGS; $createdAtMax= !empty($createdAtMax)?$createdAtMax:time(); $sendData['page'] = $page;$sendData['limit'] = $limit; $sendData['created_at_min'] = $createdAtMin; $sendData['created_at_max'] = $createdAtMax;$result = $this->_getApiData($requestUrl, 'GET', $sendData); if ($result) { $returnData = $result;}return $returnData; }/** * Create a tracking item* @access public * @param string $trackingNumber Tracking number * @param string $carrierCode Carrier code* @param array $extraInfo Title,Customer name,email,order ID (optional) * @return array */public functioncreateTracking($carrierCode,$trackingNumber,$extraInfo =array()){ $returnData = array(); $sendData = array();$requestUrl = self::ROUTE_CREATE_TRACKING;$sendData['tracking_number'] = $trackingNumber;$sendData['carrier_code'] = $carrierCode; $sendData['title']= !empty($extraInfo['title'])?$extraInfo['title']:null;$sendData['customer_name']= !empty($extraInfo['customer_name'])?$extraInfo['customer_name']:nul l;$sendData['customer_email']= !empty($extraInfo['customer_email'])?$extraInfo['customer_email']:nul l; $sendData['order_id']= !empty($extraInfo['order_id'])?$extraInfo['order_id']:null;$result = $this->_getApiData($requestUrl, 'POST', $sendData); if ($result) { $returnData = json_decode($result, true);} return $returnData; }/** * Create multiple trackings.* @access public * @param array $multipleData Multiple tracking number,carrier code,title,customer name,customer email,order id *@return array*/ public functioncreateMultipleTracking($multipleData){ $returnData = array();$sendData = array(); $requestUrl = self::ROUTE_TRACKINGS_BATCH; if(!empty($multipleData)){foreach($multipleData as $val){ $items = array();$items['tracking_number']= !empty($val['tracking_number'])?$val['tracking_number']:null;$items['carrier_code']= !empty($val['carrier_code'])?$val['carrier_code']:null; $items['title']= !empty($val['title'])?$val['title']:null; $items['customer_name']= !empty($val['customer_name'])?$val['customer_name']:null;$items['customer_email']= !empty($val['customer_email'])?$val['customer_email']:null;$items['order_id'] = !empty($val['order_id'])?$val['order_id']:null; $sendData[] = $items;} }$result = $this->_getApiData($requestUrl, 'POST', $sendData); if ($result) { $returnData = json_decode($result, true);} return $returnData; }/*** Get tracking results of a single tracking * @access public * @param string $trackingNumber Tracking number* @param string $carrierCode Carrier code * @return array */public functiongetSingleTrackingResult($carrierCode,$trackingNumber){$returnData = array(); $requestUrl =self::ROUTE_TRACKINGS.'/'.$carrierCode.'/'.$trackingNumber;$result = $this->_getApiData($requestUrl, 'GET'); if ($result){ $returnData = json_decode($result, true);} return $returnData; }/** * Update Tracking item* @access public * @param string $trackingNumber Tracking number * @param string $carrierCode Carrier code* @param array $extraInfo Title,Customer name,email,order ID (optional) * @return array */public functionupdateTrackingItem($carrierCode,$trackingNumber,$extraInfo){ $return Data = array(); $requestUrl =self::ROUTE_TRACKINGS.'/'.$carrierCode.'/'.$trackingNumber;$sendData['title'] = !empty($extraInfo['title'])?$extraInfo['title']:null; $sendData['customer_name']= !empty($extraInfo['customer_name'])?$extraInfo['customer_name']:nul l; $sendData['customer_email']= !empty($extraInfo['customer_email'])?$extraInfo['customer_email']:nul l;$sendData['order_id']= !empty($extraInfo['order_id'])?$extraInfo['order_id']:null; $result = $this->_getApiData($requestUrl, 'PUT',$sendData); if ($result) { $returnData = json_decode($result, true); } return $returnData;} /*** Delete a tracking item * @access public * @param string $trackingNumber Tracking number* @param string $carrierCode Carrier code * @return array */public functiondeleteTrackingItem($carrierCode,$trackingNumber){ $returnData = array(); $requestUrl =self::ROUTE_TRACKINGS.'/'.$carrierCode.'/'.$trackingNumber;$result = $this->_getApiData($requestUrl, 'DELETE'); if ($result){ $returnData = json_decode($result, true);} return $returnData; }/** * Get realtime tracking results of a single tracking* @access public * @param string $trackingNumber Tracking number * @param string $carrierCode Carrier code* @return array */ public function getRealtimeTrackingResults($carrierCode,$trackingNumber){$returnData = array(); $requestUrl =self::ROUTE_TRACKINGS_REALTIME; $sendData['tracking_number'] = $trackingNumber;$sendData['carrier_code'] = $carrierCode; $result =$this->_getApiData($requestUrl, 'POST',$sendData); if ($result) { $returnData = json_decode($result, true); } return $returnData;}以上,即为Trackingmore快递查询API的PHP调用示例。
快递鸟快递查询接口API代码
快递鸟快递查询接口API代码1.代码使用说明(1)查询接口支持按照运单号查询(单个查询)。
(2)接口需要指定快递单号的快递公司编码,格式不对或则编码错误都会返失败的信息。
(3)返回的物流跟踪信息按照发生的时间升序排列。
(4)接口指令1002。
(5)接口支持的消息接收方式为HTTP POST,请求方法的编码格式(utf-8):"application/x-www-form-urlencoded;charset=utf-8"。
(6)接口提供:快递鸟2.功能展现(1)电商网站用户打开“我的订单”时调用此API显示物流信息详情。
(2)电商管理后台的物流系统,客服在对账前查询所有运单的签收状态,并追踪问题。
(3)每日调用次数限制不超过3000次,如超过该限制,可对接物流跟踪API。
(4)全流程的物流状态跟踪I3.代码签名采用IP 认证加签名的方式对接,具体方案如下:1)防止数据被篡改在POST 请求中会传递 5 个必须(R)参数RequestData==数据内容(URL 编码:UTF-8)EBusinessID==用户IDRequestType=请求指令类型DataSign== 数据内容签名:把(请求内容(未编码)+ApiKey)进行MD5 加密,然后Base64编码,最后进行URL(utf-8)编码DataType==返回数据类型(2-json)注:DataSign 生成后,对方接收到数据后,以同样的算法进行签名,生成摘要,对比两者的摘要是否相同,如果不同,说明传递过程中发生数据篡改。
2)调用接口的身份认证注册成为接口用户后,会生成对应的用户ID 和APIKey,用户ID 相当于用户名,APIKey 相当于密码。
4.接口申请1)接口网注册账号成为用户;提供的用户ID 是调用接口服务的身份证明,不可更改、不可转用,API Key 是应用访问API 的签名附加密钥,必须妥善保存。
两者关系类似于用户名和密码,两者都会在签名和业务参数中使用。
快递鸟API物流轨迹查询接口快递公司编码
上大物流 顺丰快递 盛丰物流 盛辉物流 速通物流 申通快递 速腾快递 速尔快递 唐山申通 全一快递 优速快递 万家物流 万象物流 新邦物流 信丰快递 希优特 新杰物流 源安达快递 远成物流 韵达快递 义达国际物流 越丰物流 原飞航物流 亚风快递 运通快递 圆通速递 亿翔快递 邮政平邮/小包 增益快递 汇强快递 宅急送 众通快递 中铁快运 中通速递 中铁物流 中邮物流 亚马逊物流 速必达物流 瑞丰速递 快客快递 城际快递 CNPEX中邮快递 鸿桥供应链 海派通物流公司 澳邮专线 泛捷快递 PCA Express UEQL ST STO STWL SURE TSSTO UAPEX UC WJWL WXWL XBWL XFEX XYT XJ YADEX YCWL YD YDH YFEX YFHEX YFSD YTKD YTO YXKD YZPY ZENY ZHQKD ZJS ZTE ZTKY ZTO ZTWL ZYWL AMAZON SUBIDA RFEX QUICK CJKD CNPEX HOTSCM HPTEX AYCA PANEX PCA UEQ
名称 安捷快递 安能物流 安信达快递 北青小红帽 百福东方 百世快运 CCES快递 城市100 COE东方快递 长沙创一 德邦 D速物流 大田物流 EMS 快捷速递 FEDEX联邦(国内件) FEDEX联邦(国际件) 飞康达 广东邮政 共速达 国通快递 高铁速递 汇丰物流 天天快递 恒路物流 天地华宇 华强物流 百世快递 华夏龙物流 好来运快递 京广速递 九曳供应链 佳吉快运 嘉里物流 捷特快递 急先达 晋越快递 加运美 佳怡物流 跨越物流 龙邦快递 联昊通速递 民航快递 明亮物流 能达速递 平安达腾飞快递 全晨快递 全峰快递 全日通快递 如风达 赛澳递 圣安物流 盛邦物流
编码 AJ ANE AXD BQXHM BFDF BTWL CCES CITY100 COE CSCY DBL DSWL DTWL EMS FAST FEDEX FEDEX_GJ FKD GDEMS GSD GTO GTSD HFWL HHTT HLWL HOAU hq568 HTKY HXLWL HYLSD JGSD JIUYE JJKY JLDT JTKD JXD JYKD JYM JYWL KYWL LB LHT MHKD MLWL NEDA PADTF QCKD QFKD QRT RFD SAD SAWL SBWL
2018快递鸟接口支持快递公司编码
SF
HTKY
ZTO
STO
YTO YD YZPY EMS
HHTT
JD UC DBL ZJS TNT UPS DHL FEDEX FEDEX_GJ AJ ALKJWL AXWL AYUS AMAZON AOMENYZ ANE ADD AYCA AXD ANEKY
八达通 百腾物流 北极星快运 奔腾物流 B 百福东方 贝海国际 八方安运 百世快运 春风物流 诚通物流 传喜物流 程光 城市100 城际快递 CNPEX中邮快递 COE东方快递 C 长沙创一 成都善途速运 联合运通 疯狂快递 CBO钏博物流
Y 玥玛速运 鹰运 易境达 洋包裹
A AOL(澳通) BCWELT
B 笨鸟国际 优邦国际速运
U
NSF ONTRAC
OCS QQYZ POSTEIBE PAPA QYHY VENUCIA RDSE SKYPOST SWCH SDSY SK STONG STO_INTL JYSD TAILAND138 USPS UPU VCTRANS XKGJ XD XGYZ XLKD XSRD XYGJ XYGJSD YAMA YODEL YHXGJSD YUEDANYOUZ YMSY YYSD YJD YBG
M
GDEMS GSD
GTONG GAI GKSD GTSD HFWL HGLL HLWL HOAU
HOTSCM HPTEX hq568 HQSY HXLWL HXWL HFHW HLONGWL HQKD HRWL HTKD
HYH HYLSD HJWL
JAD JGSD JIUYE JXD JYKD JYM JGWL JYWL JDKY KYSY KYWL KSDWL LB LJSKD LHT MB
MHKD MK MDM MRDY MLWL NF NEDA PADTF PANEX PJ PCA QCKD QRT QUICK QXT RFD RRS RFEX SAD SNWL SAWL SBWL SDWL SFWL ST STWL SUBIDA SDEZ SCZPDS SURE TAIWANYZ TSSTO TYWL UAPEX ULUCKEX UEQ WJK WJWL WHTZX WPE
2017快递鸟物流评价接口API接入代码
2017快递鸟物流评价接口API接入代码物流评价接口是面向电商、ERP系统商、仓储系统商等企业,提供评价物流,网点,快递员的渠道,并批量获取平均分的功能,平均分值可应用于快递公司推荐排序,综合选择,展示商家实力等场景。
商家的评价分值将由接口汇总计算,统一传递到物流公司,指导物流公司提升服务质量。
一、物流评价投诉接口
1.接口描述/说明
通过此接口可对快递公司、网点、快递员进行评价或投诉。
(1)仅支持Json格式。
(2)请求指令1011。
(3)每次请求不超过100条明细。
(4)测试接口地址::8081/api/dist
(5)联调通过后请更换为正式地址:/api/dist
(6)需在快递鸟网站申请接口秘钥
3.应用级参数
4.返回参数定义
5.JSON请求示
6.JSON返回示例
二、物流平均分获取接口
1.接口描述/说明
通过此接口可以获取各个快递公司的评价平均分。
(1)仅支持Json格式。
(2)请求指令1012。
(3)测试接口地址::8081/api/dist (4)联调通过后请更换为正式地址:/api/dist (5)需申请秘钥
三、接口代码。
快递鸟智选物流接口对接方案
快递鸟智选物流接口对接方案1智选物流1.1对接流程1)注册快递鸟接口账号/reg2)在官网登录进入用户管理后台,进行实名认证,开通接口3)技术对接(在线开发文档:/api-subscribe)4、上线1.2JSON请求返回案例1)JSON请求{"MemberID": "123456","WarehouseID": "1","Detail": [{"OrderCode": "12345","OriginalExpCode":"SF","EstimatedShipTime":"2017-02-16 12:13:12""IsCOD": 0,"Sender": {"ProvinceName": "广东省","CityName": "广州","ExpAreaName": "龙岗区","Subdistrict": "布吉街道","Address": "518000"},"Receiver": {"ProvinceName": "广东","CityName": "梅州","ExpAreaName": "丰顺","Subdistrict": "布吉街道","Address": "518000"},"Goods": [{"ProductName": "包","Volume": "","Weight": "1"}]},{"OrderCode": "12346","IsCOD": 0,"Sender": {"ProvinceName": "广东省","CityName": "广州","ExpAreaName": "龙岗区","Subdistrict": "布吉街道","Address": "518000"},"Receiver": {"ProvinceName": "湖南","CityName": "长沙","ExpAreaName": "龙岗区","Subdistrict": "布吉街道","Address": "518000"},"Goods": [{"ProductName": "包","Volume": "","Weight": "1"}]}]}2)JSON返回{"EBusinessID": "1257227", "Success": true, "RecommendDetail": [{"ExpressList": [{"ExpCode": "ZTO","ExpName": "中通速递","LineName": "","Fee": 10.00,"EstimatedDeliveryTime": 44.20,"SpecificDeliveryTime ":"2017-02-12 09:12","IsSupport": "1","RecommendReason": 0,"Remark": ""},{"ExpCode": "ZTO","ExpName": "中通速递","LineName": "","Fee": 10.00,"EstimatedDeliveryTime": 44.20,"IsSupport": "1","RecommendReason": 1,"Remark": ""},{"ExpCode": "JYM","ExpName": "加运美","SpecificDeliveryTime ":"2017-02-12 09:12","LineName": "","EstimatedDeliveryTime": 15.23,"IsSupport": "1","RecommendReason": 2,"Remark": ""}],"OrderCode": "12345"},{"ExpressList": [{"ExpCode": "ZTO","ExpName": "中通速递","SpecificDeliveryTime ":"2017-02-12 09:12","LineName": "","Fee": 16.00,"EstimatedDeliveryTime": 48.26,"IsSupport": "1","RecommendReason": 0,"Remark": ""},{"ExpCode": "ZTO","ExpName": "中通速递","SpecificDeliveryTime ":"2017-02-12 09:12","LineName": "","Fee": 16.00,"EstimatedDeliveryTime": 48.26,"IsSupport": "1","RecommendReason": 1,"Remark": ""},{"ExpCode": "SF","ExpName": "顺丰快递","LineName": "","EstimatedDeliveryTime": 38.33,"IsSupport": "1","RecommendReason": 2,"Remark": ""}],"OrderCode": "12346"}]}1.3Demo1).NETusing System;using System.Collections.Generic;using System.IO;using System.Linq;using ;using System.Text;using System.Web;namespace KdGoldAPI{public class KdApiExpRecommend{//电商IDprivate string EBusinessID = "请申请";//电商加密私钥,注意保管,不要泄漏private string AppKey = "请申请";//请求url//测试环境private string ReqURL = ":8081/Ebusiness/EbusinessOrderHandle.aspx";//正式环境//private string ReqURL = "/Ebusiness/EbusinessOrderHandle.aspx";/// <summary>/// Json方式智选物流/// </summary>/// <returns></returns>public string getExpRecommendByJson(){string requestData = "{'MemberID':'123456','WarehouseID':'1','Detail':[{'OrderCode':'12345','IsCOD':0,'Sender':{'Provi nceName':'广东省','CityName':'广州','ExpAreaName':'龙岗区','Subdistrict':'布吉街道','Address':'518000'},'Receiver':{'ProvinceName':'广东','CityName':'梅州','ExpAreaName':'丰顺','Subdistrict':'布吉街道','Address':'518000'},'Goods':[{'ProductName':'包','Volume':'','Weight':'1'}]},{'OrderCode':'12346','IsCOD':0,'Sender':{'ProvinceName':'广东省','CityName':'广州','ExpAreaName':'龙岗区','Subdistrict':'布吉街道','Address':'518000'},'Receiver':{'ProvinceName':'湖南','CityName':'长沙','ExpAreaName':'龙岗区','Subdistrict':'布吉街道','Address':'518000'},'Goods':[{'ProductName':'包','Volume':'','Weight':'1'}]}]}";Dictionary<string, string> param = new Dictionary<string, string>();param.Add("RequestData", HttpUtility.UrlEncode(requestData, Encoding.UTF8));param.Add("EBusinessID", EBusinessID);param.Add("RequestType", "2006");string dataSign = encrypt(requestData, AppKey, "UTF-8");param.Add("DataSign", HttpUtility.UrlEncode(dataSign, Encoding.UTF8));param.Add("DataType", "2");string result = sendPost(ReqURL, param);//根据公司业务处理返回的信息......return result;}/// <summary>/// Json方式运费模板导入/// </summary>/// <returns></returns>public string importCostTemplateByJson(){string requestData ="{'MemberID':'123456','Detail':[{'ShipperCode':'YD','SendProvince':'广东','SendCity':'广州','SendExpArea':'天河','ReceiveProvince':'湖南','ReceiveCity':'长沙','ReceiveExpArea':'龙岗','FirstWeight':'1','FirstFee':'8','AdditionalWeight':'1','AdditionalFee':'10','WeightFormula':''},{'Ship perCode':'YD','SendProvince':'广东','SendCity':'广州','SendExpArea':'天河','ReceiveProvince':'湖南','ReceiveCity':'长沙','ReceiveExpArea':'雨花','FirstWeight':'1','FirstFee':'8','AdditionalWeight':'1','AdditionalFee':'10','WeightFormula':'{{w-0}-0.4}*{{{1000-w}-0.4}+1}*4.700+ {{w-1000}-0.6}*[(w-1000)/1000]*4.700)','ShippingType':'1','IntervalList':[{'StartWeight': 1.0,'EndWeight': 2.0, 'Fee': 3.0}]}]}";Dictionary<string, string> param = new Dictionary<string, string>();param.Add("RequestData", HttpUtility.UrlEncode(requestData, Encoding.UTF8));param.Add("EBusinessID", EBusinessID);param.Add("RequestType", "2004");string dataSign = encrypt(requestData, AppKey, "UTF-8");param.Add("DataSign", HttpUtility.UrlEncode(dataSign, Encoding.UTF8));param.Add("DataType", "2");string result = sendPost(ReqURL, param);//根据公司业务处理返回的信息......return result;}/// <summary>/// Post方式提交数据,返回网页的源代码/// </summary>/// <param name="url">发送请求的URL</param>/// <param name="param">请求的参数集合</param>/// <returns>远程资源的响应结果</returns>private string sendPost(string url, Dictionary<string, string> param){string result = "";StringBuilder postData = new StringBuilder();if (param != null && param.Count > 0){foreach (var p in param){if (postData.Length > 0){postData.Append("&");}postData.Append(p.Key);postData.Append("=");postData.Append(p.Value);}}byte[] byteData = Encoding.GetEncoding("UTF-8").GetBytes(postData.ToString());try{HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);request.ContentType = "application/x-www-form-urlencoded";request.Referer = url;request.Accept = "*/*";request.Timeout = 30 * 1000;erAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)";request.Method = "POST";request.ContentLength = byteData.Length;Stream stream = request.GetRequestStream();stream.Write(byteData, 0, byteData.Length);stream.Flush();stream.Close();HttpWebResponse response = (HttpWebResponse)request.GetResponse();Stream backStream = response.GetResponseStream();StreamReader sr = new StreamReader(backStream, Encoding.GetEncoding("UTF-8"));result = sr.ReadToEnd();sr.Close();backStream.Close();response.Close();request.Abort();}catch (Exception ex){result = ex.Message;}return result;}///<summary>///电商Sign签名///</summary>///<param name="content">内容</param>///<param name="keyValue">Appkey</param>///<param name="charset">URL编码</param>///<returns>DataSign签名</returns>private string encrypt(String content, String keyValue, String charset){if (keyValue != null){return base64(MD5(content + keyValue, charset), charset);}return base64(MD5(content, charset), charset);}///<summary>/// 字符串MD5加密///</summary>///<param name="str">要加密的字符串</param>///<param name="charset">编码方式</param>///<returns>密文</returns>private string MD5(string str, string charset){byte[] buffer = System.Text.Encoding.GetEncoding(charset).GetBytes(str);try{System.Security.Cryptography.MD5CryptoServiceProvider check;check = new System.Security.Cryptography.MD5CryptoServiceProvider();byte[] somme = puteHash(buffer);string ret = "";foreach (byte a in somme){if (a < 16)ret += "0" + a.ToString("X");elseret += a.ToString("X");}return ret.ToLower();}catch{throw;}}/// <summary>/// base64编码/// </summary>/// <param name="str">内容</param>/// <param name="charset">编码方式</param>/// <returns></returns>private string base64(String str, String charset){returnConvert.ToBase64String(System.Text.Encoding.GetEncoding(charset).GetBytes(str));}}}2)JAVAimport java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.UnsupportedEncodingException;import .HttpURLConnection;import .URL;import .URLEncoder;import java.security.MessageDigest;import java.util.HashMap;import java.util.Map;/****智选物流**/public class KdApiExpRecommend {//DEMOpublic static void main(String[] args) {KdApiExpRecommend api = new KdApiExpRecommend();try {String result = api.getOrderTracesByJson();System.out.print(result);} catch (Exception e) {e.printStackTrace();}}//电商IDprivate String EBusinessID="请申请";//电商加密私钥,注意保管,不要泄漏private String AppKey="请申请";//请求urlprivate String ReqURL="/Ebusiness/EbusinessOrderHandle.aspx";/*** Json方式智选物流* @throws Exception*/public String getExpRecommendByJson() throws Exception{String requestData= "{'MemberID':'123456','WarehouseID':'1','Detail':[{'OrderCode':'12345','IsCOD':0,'Sender':{'Provi nceName':'广东省','CityName':'广州','ExpAreaName':'龙岗区','Subdistrict':'布吉街道','Address':'518000'},'Receiver':{'ProvinceName':'广东','CityName':'梅州','ExpAreaName':'丰顺','Subdistrict':'布吉街道','Address':'518000'},'Goods':[{'ProductName':'包','Volume':'','Weight':'1'}]},{'OrderCode':'12346','IsCOD':0,'Sender':{'ProvinceName':'广东省','CityName':'广州','ExpAreaName':'龙岗区','Subdistrict':'布吉街道','Address':'518000'},'Receiver':{'ProvinceName':'湖南','CityName':'长沙','ExpAreaName':'龙岗区','Subdistrict':'布吉街道','Address':'518000'},'Goods':[{'ProductName':'包','Volume':'','Weight':'1'}]}]}";Map<String, String> params = new HashMap<String, String>();params.put("RequestData", urlEncoder(requestData, "UTF-8"));params.put("EBusinessID", EBusinessID);params.put("RequestType", "2006");String dataSign=encrypt(requestData, AppKey, "UTF-8");params.put("DataSign", urlEncoder(dataSign, "UTF-8"));params.put("DataType", "2");String result=sendPost(ReqURL, params);//根据公司业务处理返回的信息......return result;}/*** Json方式导入运费模板* @throws Exception*/public String importCostTemplateByJson() throws Exception{String requestData="{'MemberID':'123456','Detail':[{'ShipperCode':'YD','SendProvince':'广东','SendCity':'广州','SendExpArea':'天河','ReceiveProvince':'湖南','ReceiveCity':'长沙','ReceiveExpArea':'龙岗','FirstWeight':'1','FirstFee':'8','AdditionalWeight':'1','AdditionalFee':'10','WeightFormula':''},{'Ship perCode':'YD','SendProvince':'广东','SendCity':'广州','SendExpArea':'天河','ReceiveProvince':'湖南','ReceiveCity':'长沙','ReceiveExpArea':'雨花','FirstWeight':'1','FirstFee':'8','AdditionalWeight':'1','AdditionalFee':'10','WeightFormula':'{{w-0}-0.4}*{{{1000-w}-0.4}+1}*4.700+ {{w-1000}-0.6}*[(w-1000)/1000]*4.700)','ShippingType':'1','IntervalList':[{'StartWeight': 1.0,'EndWeight': 2.0, 'Fee': 3.0}]}]}";Map<String, String> params = new HashMap<String, String>();params.put("RequestData", urlEncoder(requestData, "UTF-8"));params.put("EBusinessID", EBusinessID);params.put("RequestType", "2004");String dataSign=encrypt(requestData, AppKey, "UTF-8");params.put("DataSign", urlEncoder(dataSign, "UTF-8"));params.put("DataType", "2");String result=sendPost(ReqURL, params);//根据公司业务处理返回的信息......return result;}/*** MD5加密* @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.length; i++) {int val = result[i] & 0xff;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 = base64Encode(str.getBytes(charset));return encoded;}@SuppressWarnings("unused")private String urlEncoder(String str, String charset) throws UnsupportedEncodingException{ String result = URLEncoder.encode(str, charset);return result;}/*** 电商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 = 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();}private static char[] base64EncodeChars = new char[] { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H','I', 'J', 'K', 'L', 'M', 'N', 'O', 'P','Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X','Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f','g', 'h', 'i', 'j', 'k', 'l', 'm', 'n','o', 'p', 'q', 'r', 's', 't', 'u', 'v','w', 'x', 'y', 'z', '0', '1', '2', '3','4', '5', '6', '7', '8', '9', '+', '/' };public static String base64Encode(byte[] data) {StringBuffer sb = new StringBuffer();int len = data.length;int i = 0;int b1, b2, b3;while (i < len) {b1 = data[i++] & 0xff;if (i == len){sb.append(base64EncodeChars[b1 >>> 2]);sb.append(base64EncodeChars[(b1 & 0x3) << 4]);sb.append("==");break;}b2 = data[i++] & 0xff;if (i == len){sb.append(base64EncodeChars[b1 >>> 2]);sb.append(base64EncodeChars[((b1 & 0x03) << 4) | ((b2 & 0xf0) >>> 4)]);sb.append(base64EncodeChars[(b2 & 0x0f) << 2]);sb.append("=");break;}b3 = data[i++] & 0xff;sb.append(base64EncodeChars[b1 >>> 2]);sb.append(base64EncodeChars[((b1 & 0x03) << 4) | ((b2 & 0xf0) >>> 4)]);sb.append(base64EncodeChars[((b2 & 0x0f) << 2) | ((b3 & 0xc0) >>> 6)]);sb.append(base64EncodeChars[b3 & 0x3f]);}return sb.toString();}}3)PHP<?php//电商IDdefined('EBusinessID') or define('EBusinessID', '请申请');//电商加密私钥,注意保管,不要泄漏defined('AppKey') or define('AppKey', '请申请');//请求url//测试地址defined('ReqURL') or define('ReqURL', ':8081/Ebusiness/EbusinessOrderHandle.aspx');//正式地址//defined('ReqURL') or define('ReqURL', '/Ebusiness/EbusinessOrderHandle.aspx');//调用获取物流轨迹//-------------------------------------------------------------$logisticResult = getExpRecommendByJson();echo $logisticResult;//-------------------------------------------------------------/*** Json方式智选物流*/function getExpRecommendByJson(){$requestData="{'MemberID':'123456','WarehouseID':'1','Detail':[{'OrderCode':'12345','IsCOD':0,'Sender':{'Provi nceName':'广东省','CityName':'广州','ExpAreaName':'龙岗区','Subdistrict':'布吉街道','Address':'518000'},'Receiver':{'ProvinceName':'广东','CityName':'梅州','ExpAreaName':'丰顺','Subdistrict':'布吉街道','Address':'518000'},'Goods':[{'ProductName':'包','Volume':'','Weight':'1'}]},{'OrderCode':'12346','IsCOD':0,'Sender':{'ProvinceName':'广东省','CityName':'广州','ExpAreaName':'龙岗区','Subdistrict':'布吉街道','Address':'518000'},'Receiver':{'ProvinceName':'湖南','CityName':'长沙','ExpAreaName':'龙岗区','Subdistrict':'布吉街道','Address':'518000'},'Goods':[{'ProductName':'包','Volume':'','Weight':'1'}]}]}";$datas = array('EBusinessID' => EBusinessID,'RequestType' => '2006','RequestData' => urlencode($requestData) ,'DataType' => '2',);$datas['DataSign'] = encrypt($requestData, AppKey);$result=sendPost(ReqURL, $datas);//根据公司业务处理返回的信息......return $result;}/*** Json方式导入运费模板*/function importCostTemplateByJson(){$requestData= "{'MemberID':'123456','Detail':[{'ShipperCode':'YD','SendProvince':'广东','SendCity':'广州','SendExpArea':'天河','ReceiveProvince':'湖南','ReceiveCity':'长沙','ReceiveExpArea':'龙岗','FirstWeight':'1','FirstFee':'8','AdditionalWeight':'1','AdditionalFee':'10','WeightFormula':''},{'Ship perCode':'YD','SendProvince':'广东','SendCity':'广州','SendExpArea':'天河','ReceiveProvince':'湖南','ReceiveCity':'长沙','ReceiveExpArea':'雨花','FirstWeight':'1','FirstFee':'8','AdditionalWeight':'1','AdditionalFee':'10','WeightFormula':'{{w-0}-0.4}*{{{1000-w}-0.4}+1}*4.700+ {{w-1000}-0.6}*[(w-1000)/1000]*4.700)','ShippingType':'1','IntervalList':[{'StartWeight': 1.0,'EndWeight': 2.0, 'Fee': 3.0}]}]}";$datas = array('EBusinessID' => EBusinessID,'RequestType' => '2004','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(empty($url_info['port'])){$url_info['port']=80;}$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)));}?>2运费模板导入接口2.1功能说明ERP服务商也可以将用户的协议物流公司及其协议价格先保存到接口运费模板系统中,智选物流每次计算时:若接口传递了协议公司和价格,那么默认按照接口提供的数据进行计算;若接口没有提供数据,则获取以保存的运费模板进行计算。
基于JAVA的免费快递api调用代码实例
基于JAVA的免费快递api调用代码实例代码描述:基于JA V A的免费快递api调用代码实例接口平台:快递网免费快递接口API地址申请:/openapi.htmlJA V A代码:package com.kuaidi.openapi;import java.io.BufferedReader;import java.io.InputStreamReader;import .URL;import .URLConnection;import java.util.List;import java.util.Map;public class Openapi {private String app_key = "";private String api_url = "/openapi.html?";private String show = "0";private String muti = "0";private String order = "desc";/*** 您获得的快递网接口查询KEY。
** @param app_key**/public void setApp_key(String app_key) {this.app_key = app_key;}/*** 设置数据返回类型。
0: 返回json 字符串; 1:返回xml 对象** @param show**/public void setShow(String show) {this.show = show;}/*** 设置返回物流信息条目数, 0:返回多行完整的信息; 1:只返回一行信息** @param muti**/public void setMuti(String muti) {this.muti = muti;}/*** 设置返回物流信息排序。
2019快递鸟接口支持快递公司编码[1]
DHL Global Mail
丹麦邮政
DPD
DPEX
递四方速递
EMS国际
易客满 E
EPS (联众国际快运)
EShipper
丰程物流
法翔速运
F FQ
芬兰邮政
方舟国际速递
国际e邮宝
国际邮政包裹
G GE2D
AAE ACS ADP ANGUILAYOU APAC ARAMEX AT AUSTRALIA BEL BHT BILUYOUZHE BR BUDANYOUZH CDEK CG CA DBYWL DDWL DGYKD DLGJ DHL_DE DHL_EN DHL_GLB DHLGM DK DPD DPEX D4PX EMSGJ EKM EPS ESHIPPER FCWL FX FQ FLYZ FZGJ GJEYB GJYZ GE2D
ZY_SDKD ZY_SFZY
ZY_ST ZY_TJ ZY_TM ZY_TN ZY_TPY ZY_TSZ ZY_TWC ZY_RDGJ ZY_TX ZY_TY ZY_DGHT ZY_DYW ZY_WDCS ZY_TZH ZY_UCS ZY_XC ZY_XF ZY_XIYJ ZY_YQ ZY_YSSD ZY_YTUSA ZY_ZCSD ZYZOOM
瓜德罗普岛邮政 哥斯达黎加邮政 韩国邮政 华翰物流 互联易 哈萨克斯坦邮政 黑山邮政 津巴布韦邮政 吉尔吉斯斯坦邮政 捷克邮政 加纳邮政 柬埔寨邮政 克罗地亚邮政 肯尼亚邮政 科特迪瓦EMS 罗马尼亚邮政 摩尔多瓦邮政 马耳他邮政 尼日利亚邮政 塞尔维亚邮政 塞浦路斯邮政 乌兹别克斯坦邮政 西班牙邮政 新加坡EMS 希腊邮政 新西兰邮政 意大利邮政 英国邮政 亚美尼亚邮政 也门邮政 智利邮政 日本邮政 今枫国际 极光转运 J 吉祥邮转运 嘉里国际 绝配国际速递 佳惠尔 联运通 L 联合快递
快递鸟物流查询接口demo
intlen=data.length;
inti= 0;
intb1, b2, b3;
while (i<len) {
b1 = data[i++] & 0xff;
if (i==len)
{
sb.append(base64EncodeChars[b1 >>> 2]);
}
}
catch(IOExceptionex){
ex.printStackTrace();
}
}
returnresult.toString();
}
private static char[] base64EncodeChars = new char[] {
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
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");
{
快递公司单号查询接口编码说明
ZY_OZF
欧洲疯
ZY_OZGO
欧洲GO
ZY_QMT
全美通
ZY_QQEX
QQ-EX
ZY_RDGJ
润东国际快线
ZY_RT
瑞天快递
ZY_RTSD
瑞天速递
ZY_SCS
SCS国际物流
ZY_SDKD
速达快递
ZY_SFZY
四方转运
ZY_SOHO
SOHO苏豪国际
ZY_SONIC
Sonic-Ex速递
ZY_ST
立陶宛邮政
ILZDSDYZ
列支敦士登邮政
IMEDFYZ
马尔代夫邮政
IMEDWYZ
摩尔多瓦邮政
IMETYZ
马耳他邮政
IMJLGEMS
孟加拉国EMS
IMLGYZ
摩洛哥邮政
IMLQSYZ
毛里求斯邮政
IMLXYEMS
马来西亚EMS
IMLXYYZ
马来西亚邮政
IMQDYZ
马其顿邮政
IMTNKEMS
马提尼克EMS
R
请求内容,JSON或XML格式,须和DataType一致
EBusinessID
String
R
用户ID
RequestType
String
R
请求指令类型:1002
DataSign
String
R
数据内容签名
DataType
String
O
请求、返回数据类型:1-xml,2-json;默认为xml格式
应用级输入参数
国内快递查询接口编码
编码
名称
AJ
安捷快递
ANE
安能物流
AXD
快递鸟丰网速运快递查询接口源码_快递鸟单号查询API
快递鸟丰⽹速运快递查询接⼝源码_快递鸟单号查询API看完快递鸟api顺丰丰⽹速运快递对接教程这篇⽂章,然后把源码复制到你的项⽬上,就能快速完成丰⽹速运快递接⼝对接.更适合刚⼊门的菜鸟,调⽤快递鸟的丰⽹速运快递快递查询API接⼝,能查询到快递单号从收件、运输,到转运中⼼,派送到签收等各个环节的物流发货状态。
快递鸟api接⼝不区分开发语⾔,⽀持Java,C#,PHP,Python,ObjectC等开发语⾔的程序调⽤。
编码⽤顺丰编码即可查询(SF),下⾯具体讲解实现过程.1.完成前期准备⼯作1.1,去快递鸟官⽹免费注册⼀个账号1.2,免费获得⼀个apiKey(接⼝权限验证需要)1.3,完成实名认证流程1.4,订购⼀个免费套餐2.API接⼝2.3,请求⽅式:POST2.4,编码格式(utf-8):application/x-www-form-urlencoded;charset=utf-82.5,返回类型:JSON2.6,调试页⾯:2.7,调试⼯具:去调试(使⽤快递鸟账号登录)3.请求参数(Headers)4.请求参数(Body)6.请求完整报⽂(⽰例)RequestData=%7b%27OrderCode%27%3a%27%27%2c%27ShipperCode%27%3a%27JTSD%27%2c%27LogisticCode%27%3a%27jt0000052600488%27%7d&EBusinessID=1264783&RequestType=1002&DataSign=MTYyMDU4NWQ2NmU1ZDI2MDEzNGE5YmVlM2YxYzEzMTM%3d&DataType=27.成功返回报⽂(⽰例){"LogisticCode": "SF0000052600488","ShipperCode": "SF","Traces": [{"AcceptStation": "【芜湖市】【芜湖镜湖⽹点】的邓拥军 178********已取件","AcceptTime": "2020-03-16 16:26:13"},{"AcceptStation": "【芜湖市】【芜湖镜湖⽹点】的邓拥军 178********已取件","AcceptTime": "2020-03-16 16:41:33"},{"AcceptStation": "【芜湖市】【芜湖镜湖⽹点】已收件","AcceptTime": "2020-03-16 17:39:21"},{"AcceptStation": "【芜湖市】快件离开【芜湖镜湖⽹点】已发往【芜湖转运中⼼】","AcceptTime": "2020-03-16 17:40:27"},{"AcceptStation": "【芜湖市】快件到达【芜湖转运中⼼】","AcceptTime": "2020-03-16 19:36:32"},{"AcceptStation": "【芜湖市】快件离开【芜湖转运中⼼】已发往【合肥转运中⼼】","AcceptTime": "2020-03-16 20:47:03"},{"AcceptStation": "【合肥市】快件到达【合肥转运中⼼】","AcceptTime": "2020-03-16 23:40:10"},{"AcceptStation": "【合肥市】快件离开【合肥转运中⼼】已发往【⼴州花都转运中⼼】","AcceptTime": "2020-03-17 00:10:48"},{"AcceptStation": "【⼴州市】快件到达【⼴州花都转运中⼼】","AcceptTime": "2020-03-17 20:45:00"},{"AcceptStation": "【⼴州市】快件离开【⼴州花都转运中⼼】已发往【深圳宝安转运中⼼】","AcceptTime": "2020-03-18 00:17:55"},{"AcceptStation": "【深圳市】快件到达【深圳宝安转运中⼼】","AcceptTime": "2020-03-18 03:00:17"},{"AcceptStation": "【深圳市】快件离开【深圳宝安转运中⼼】已发往【深圳福⽥⽹点】","AcceptTime": "2020-03-18 04:44:39"},{"AcceptStation": "【深圳市】【深圳福⽥⽹点】的邹俊林 176********正在派件","AcceptTime": "2020-03-18 08:10:09"},{"AcceptStation": "【深圳市】【深圳福⽥⽹点】的赵凯 159********正在派件","AcceptTime": "2020-03-18 09:55:19"},{"AcceptStation": "【深圳市】快件已签收,签收⼈是【代收】,如有疑问请联系:159********,期待再次为您服务", "AcceptTime": "2020-03-18 14:53:54"}],"State": "3","EBusinessID": "1264783","Success": true}8.失败返回报⽂(⽰例){"LogisticCode": "SF0000052600488","ShipperCode": "SF","Traces": [],"State": "0","EBusinessID": "1264783","Reason": "业务错误[没有可⽤套餐]","Success": false}说明:未实名认证,未订购套餐,套餐可⽤查询量已经⽤完都会返回此报⽂信息9.⽆轨迹返回报⽂(⽰例){"LogisticCode": "SF0000052600488","ShipperCode": "SF","Traces": [],"State": "0","EBusinessID": "1264783","Reason": "暂⽆轨迹信息","Success": true}10.分步讲解(C#版本)10.1,请求数据包结构10.2,C#调⽤代码⽰例//电商IDstring eEBusinessID = "test1617571";//电商加密私钥,快递鸟提供,注意保管,不要泄漏string appKey= "554343b2-7252-439b-b4eb-1af42c8f2175";//请求urlstring reqURL = ":8080/kdniaosandbox/gateway/exterfaceInvoke.json";//请求指令string reqType="1002";//2-jsonstring dataType = "2";//字符编码采⽤UTF-8string charset = "UTF-8";//JSON字符串stringstring jsonStr = "{"OrderCode":"","ShipperCode":"SF","LogisticCode":"SF0000052600488"}" ;//把(jsonStr+APIKey)进⾏MD5加密string md5Str=MD5(jsonStr + apiKey, charset);//把md5Str 进⾏Base64编码string base64Str=base64(md5Str,charset);//进⾏URL编码 (utf-8)string datasign = HttpUtility.UrlEncode(base64Str, charset);//请求报⽂参数string postStr = "RequestType=reqType&EBusinessID= eEBusinessID&RequestData=jsonStr&DataSign= datasign&DataType=dataType";//通讯协议使⽤Http协议Post请求⽅式返回轨迹数据string post = SendPost(reqURL, postStr);//获取到的post数据就是快递鸟返回的完整报⽂,接下来⾃⼰写⼀个解析json的⽅法就能获取到⾥⾯的字段信息。
快递鸟接口技术文档说明书
快递鸟接口(API)技术文档1前言 (5)2接口规范说明 (5)2.1接口规范及说明 (5)2.1.1报文及报文编码 (5)2.1.2接口数据包结构 (5)2.1.3JSON示例 (6)2.1.4系统级参数 (6)2.1.5流程示意图 (7)2.2签名说明 (7)2.2.1关于签名 (7)2.2.2(C#)DataSign签名加密代码 (9)3下单类接口 (10)3.1接入步骤 (10)3.2预约取件接口 (11)3.2.1功能说明 (11)3.2.2基本信息 (11)3.2.3接口规则 (12)3.2.4支持情况 (12)3.2.5应用级参数 (12)3.2.6返回参数 (17)3.3预约取件取消接口 (17)3.3.1功能说明 (17)3.3.2基本信息 (17)3.3.3接口规则 (18)3.3.4支持情况 (18)3.3.5应用场景 (18)3.3.6应用级参数 (18)3.3.7返回参数 (19)3.4电子面单接口 (19)3.4.1功能说明 (19)3.4.2基本信息 (19)3.4.3应用场景 (20)3.4.4接口规则 (20)3.4.6应用场景 (21)3.4.7应用级参数 (21)3.4.8返回参数 (30)3.5电子面单取消接口 (35)3.5.1功能说明 (35)3.5.2基本信息 (36)3.5.3接口规则 (36)3.5.4支持情况 (36)3.5.5应用级参数 (36)3.5.6返回参数 (37)3.6电子面单追加子单接口 (37)3.6.1功能说明 (37)3.6.2基本信息 (37)3.6.3应用级参数 (38)3.6.4返回参数 (38)3.7获取电子面单文件接口 (39)3.7.1功能说明 (39)3.7.2基本信息 (39)3.7.3应用级参数 (39)3.7.4返回参数 (40)4轨迹查询类接口 (42)4.1即时查询接口 (42)4.1.1功能说明 (42)4.1.2基本信息 (42)4.1.3接口规则 (42)4.1.4支持情况 (42)4.1.5应用场景 (42)4.1.6应用级参数 (42)4.1.7返回参数 (43)4.2物流跟踪 (45)4.2.1轨迹订阅接口 (45)4.3单号识别接口 (64)4.3.1功能说明 (64)4.3.2基本信息 (64)4.3.3接口规则 (64)4.3.4应用级参数 (64)4.3.5返回参数 (65)5增值类接口 (66)5.1在途监控-国内版 (66)5.1.1即时查询接口(增值版) (66)5.1.2物流跟踪接口(增值版) (72)5.2快递查询接口 (78)5.2.1功能说明 (78)5.2.2基本信息 (78)5.2.3接口规则 (78)5.2.4支持情况 (78)5.2.5应用场景 (78)5.2.6应用级参数 (78)5.2.7返回参数 (79)5.3在途监控-国际版 (84)5.3.1物流跟踪接口(国际版) (84)5.4物流查询地图接口 (86)5.4.1即时查询接口(地图版) (87)5.4.2物流跟踪接口(地图版) (95)5.5短信服务 (100)5.5.1短信模板接口 (101)5.5.2短信发送接口 (103)5.5.3短信黑名单接口 (105)5.6智能地址解析接口 (106)5.6.1功能说明 (106)5.6.2基本信息 (106)5.6.3应用级参数 (106)5.6.4返回参数 (107)6附录 (109)6.1对接相关资料 (109)6.2电子面单模板规格 (109)6.3返回编码列表 (116)7技术支持 (117)1前言快递鸟API旨在为电商、电商平台、物流工具、打单工具、仓储系统、移动APP等系统提供专业、稳定、优质的API接口服务,满足不同用户的物流管理需求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
快递鸟快递查询接口API代码1.代码使用说明(1)查询接口支持按照运单号查询(单个查询)。
(2)接口需要指定快递单号的快递公司编码,格式不对或则编码错误都会返失败的信息。
(3)返回的物流跟踪信息按照发生的时间升序排列。
(4)接口指令1002。
(5)接口支持的消息接收方式为HTTP POST,请求方法的编码格式(utf-8):"application/x-www-form-urlencoded;charset=utf-8"。
(6)接口提供:快递鸟2.功能展现(1)电商网站用户打开“我的订单”时调用此API显示物流信息详情。
(2)电商管理后台的物流系统,客服在对账前查询所有运单的签收状态,并追踪问题。
(3)每日调用次数限制不超过3000次,如超过该限制,可对接物流跟踪API。
(4)全流程的物流状态跟踪I3.代码签名采用IP 认证加签名的方式对接,具体方案如下:1)防止数据被篡改在POST 请求中会传递 5 个必须(R)参数RequestData==数据内容(URL 编码:UTF-8)EBusinessID==用户IDRequestType=请求指令类型DataSign== 数据内容签名:把(请求内容(未编码)+ApiKey)进行MD5 加密,然后Base64编码,最后进行URL(utf-8)编码DataType==返回数据类型(2-json)注:DataSign 生成后,对方接收到数据后,以同样的算法进行签名,生成摘要,对比两者的摘要是否相同,如果不同,说明传递过程中发生数据篡改。
2)调用接口的身份认证注册成为接口用户后,会生成对应的用户ID 和APIKey,用户ID 相当于用户名,APIKey 相当于密码。
4.接口申请1)接口网注册账号成为用户;提供的用户ID 是调用接口服务的身份证明,不可更改、不可转用,API Key 是应用访问API 的签名附加密钥,必须妥善保存。
两者关系类似于用户名和密码,两者都会在签名和业务参数中使用。
2)登陆用户后台,登陆用户后台,进行实名认证,并开通会员服务;3)根据技术文档进行开发并在调试平台测试联调;根据技术文档进行开发并在调试平台测试联调;API 接口的DEMO(包括:.Net 版本、Java 版本、PHP 版本)供开发参考。
4)系统发布上线。
系统发布上线。
注意:测试环境中获取的测试快递单号不可用于实际发货。
5.对接Demo代码1).NET开发using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Web;using ;using System.IO;namespace KdGoldAPI{public class KdApiSearchDemo{//电商IDprivate string EBusinessID = "1237100";//电商加密私钥,注意保管,不要泄漏private string AppKey = "518a73d8-1f7f-441a-b644-33e77b49d846";//请求urlprivate string ReqURL = "/Ebusiness/EbusinessOrderHandle.aspx";/// <summary>/// Json方式查询订单物流轨迹/// </summary>/// <returns></returns>public string getOrderTracesByJson(){string requestData = "{'OrderCode':'','ShipperCode':'SF','LogisticCode':'589707398027'}";Dictionary<string, string> param = new Dictionary<string, string>();param.Add("RequestData", HttpUtility.UrlEncode(requestData, Encoding.UTF8));param.Add("EBusinessID", EBusinessID);param.Add("RequestType", "1002");string dataSign = encrypt(requestData, AppKey, "UTF-8");param.Add("DataSign", HttpUtility.UrlEncode(dataSign, Encoding.UTF8));param.Add("DataType", "2");string result = sendPost(ReqURL, param);//根据公司业务处理返回的信息......return result;}/// <summary>/// Post方式提交数据,返回网页的源代码/// </summary>/// <param name="url">发送请求的URL</param>/// <param name="param">请求的参数集合</param>/// <returns>远程资源的响应结果</returns>private string sendPost(string url, Dictionary<string, string> param){string result = "";StringBuilder postData = new StringBuilder();if (param != null && param.Count > 0){foreach (var p in param){if (postData.Length > 0){postData.Append("&");}postData.Append(p.Key);postData.Append("=");postData.Append(p.Value);}}byte[] byteData = Encoding.GetEncoding("UTF-8").GetBytes(postData.ToString());try{HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);request.ContentType = "application/x-www-form-urlencoded";request.Referer = url;request.Accept = "*/*";request.Timeout = 30 * 1000;erAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)";request.Method = "POST";request.ContentLength = byteData.Length;Stream stream = request.GetRequestStream();stream.Write(byteData, 0, byteData.Length);stream.Flush();stream.Close();HttpWebResponse response = (HttpWebResponse)request.GetResponse();Stream backStream = response.GetResponseStream();StreamReader sr = new StreamReader(backStream, Encoding.GetEncoding("UTF-8"));result = sr.ReadToEnd();sr.Close();backStream.Close();response.Close();request.Abort();}catch (Exception ex){result = ex.Message;}return result;}///<summary>///电商Sign签名///</summary>///<param name="content">内容</param>///<param name="keyValue">Appkey</param>///<param name="charset">URL编码</param>///<returns>DataSign签名</returns>private string encrypt(String content, String keyValue, String charset){if (keyValue != null){return base64(MD5(content + keyValue, charset), charset);}return base64(MD5(content, charset), charset);}///<summary>/// 字符串MD5加密///</summary>///<param name="str">要加密的字符串</param>///<param name="charset">编码方式</param>///<returns>密文</returns>private string MD5(string str, string charset){byte[] buffer = System.Text.Encoding.GetEncoding(charset).GetBytes(str);try{System.Security.Cryptography.MD5CryptoServiceProvider check;check = new System.Security.Cryptography.MD5CryptoServiceProvider();byte[] somme = puteHash(buffer);string ret = "";foreach (byte a in somme){if (a < 16)ret += "0" + a.ToString("X");elseret += a.ToString("X");}return ret.ToLower();}catch{throw;}}/// <summary>/// base64编码/// </summary>/// <param name="str">内容</param>/// <param name="charset">编码方式</param>/// <returns></returns>private string base64(String str, String charset){returnConvert.ToBase64String(System.Text.Encoding.GetEncoding(charset).GetBytes(str));}}}2)PHP开发<?php//电商IDdefined('EBusinessID') or define('EBusinessID', '请申请/reg');//电商加密私钥,注意保管,不要泄漏defined('AppKey') or define('AppKey', '请到官网申请/reg');//请求urldefined('ReqURL') or define('ReqURL', '/Ebusiness/EbusinessOrderHandle.aspx');//调用查询物流轨迹//---------------------------------------------$logisticResult=getOrderTracesByJson();echo logisticResult;//---------------------------------------------/*** Json方式查询订单物流轨迹*/function getOrderTracesByJson(){$requestData= "{'OrderCode':'','ShipperCode':'YTO','LogisticCode':'12345678'}";$datas = array('EBusinessID' => EBusinessID,'RequestType' => '1002','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(empty($url_info['port'])){$url_info['port']=80;}$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)));}?>3)JAVA开发import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.UnsupportedEncodingException;import .HttpURLConnection;import .URL;import .URLEncoder;import java.security.MessageDigest;import java.util.HashMap;import java.util.Map;public class KdniaoTrackQueryAPI {//DEMOpublic static void main(String[] args) {KdniaoTrackQueryAPI api = new KdniaoTrackQueryAPI();try {String result = api.getOrderTracesByJson("ANE", "210001633605");System.out.print(result);} catch (Exception e) {e.printStackTrace();}}//电商IDprivate String EBusinessID="请申请";//电商加密私钥,注意保管,不要泄漏private String AppKey="请申请";//请求urlprivate String ReqURL="/Ebusiness/EbusinessOrderHandle.aspx";/*** Json方式查询订单物流轨迹* @throws Exception*/public String getOrderTracesByJson(String expCode, String expNo) throws Exception{ String requestData= "{'OrderCode':'','ShipperCode':'" + expCode + "','LogisticCode':'" + expNo + "'}";Map<String, String> params = new HashMap<String, String>();params.put("RequestData", urlEncoder(requestData, "UTF-8"));params.put("EBusinessID", EBusinessID);params.put("RequestType", "1002");String dataSign=encrypt(requestData, AppKey, "UTF-8");params.put("DataSign", urlEncoder(dataSign, "UTF-8"));params.put("DataType", "2");String result=sendPost(ReqURL, params);//根据公司业务处理返回的信息......return result;}/*** MD5加密* @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.length; i++) {int val = result[i] & 0xff;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 = base64Encode(str.getBytes(charset));return encoded;}@SuppressWarnings("unused")private String urlEncoder(String str, String charset) throws UnsupportedEncodingException{ String result = URLEncoder.encode(str, charset);return result;}/*** 电商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 = 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();}private static char[] base64EncodeChars = new char[] {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H','I', 'J', 'K', 'L', 'M', 'N', 'O', 'P','Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X','Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f','g', 'h', 'i', 'j', 'k', 'l', 'm', 'n','o', 'p', 'q', 'r', 's', 't', 'u', 'v','w', 'x', 'y', 'z', '0', '1', '2', '3','4', '5', '6', '7', '8', '9', '+', '/' };public static String base64Encode(byte[] data) {StringBuffer sb = new StringBuffer();int len = data.length;int i = 0;int b1, b2, b3;while (i < len) {b1 = data[i++] & 0xff;if (i == len){sb.append(base64EncodeChars[b1 >>> 2]);sb.append(base64EncodeChars[(b1 & 0x3) << 4]);sb.append("==");break;}b2 = data[i++] & 0xff;if (i == len){sb.append(base64EncodeChars[b1 >>> 2]);sb.append(base64EncodeChars[((b1 & 0x03) << 4) | ((b2 & 0xf0) >>> 4)]);sb.append(base64EncodeChars[(b2 & 0x0f) << 2]);sb.append("=");break;}b3 = data[i++] & 0xff;sb.append(base64EncodeChars[b1 >>> 2]);sb.append(base64EncodeChars[((b1 & 0x03) << 4) | ((b2 & 0xf0) >>> 4)]);sb.append(base64EncodeChars[((b2 & 0x0f) << 2) | ((b3 & 0xc0) >>> 6)]);sb.append(base64EncodeChars[b3 & 0x3f]);}return sb.toString();}}。