PHP快递智能查单功能实现对接方法.docx

上传人:b****7 文档编号:10983796 上传时间:2023-02-24 格式:DOCX 页数:17 大小:19.58KB
下载 相关 举报
PHP快递智能查单功能实现对接方法.docx_第1页
第1页 / 共17页
PHP快递智能查单功能实现对接方法.docx_第2页
第2页 / 共17页
PHP快递智能查单功能实现对接方法.docx_第3页
第3页 / 共17页
PHP快递智能查单功能实现对接方法.docx_第4页
第4页 / 共17页
PHP快递智能查单功能实现对接方法.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

PHP快递智能查单功能实现对接方法.docx

《PHP快递智能查单功能实现对接方法.docx》由会员分享,可在线阅读,更多相关《PHP快递智能查单功能实现对接方法.docx(17页珍藏版)》请在冰豆网上搜索。

PHP快递智能查单功能实现对接方法.docx

PHP快递智能查单功能实现对接方法

PHP快递智能查单功能实现对接方法

一.接口说明

PC端、移动端应用或网站应用集成运单物流信息查询功能时,只需要录入单号即可完成查询,无需用户输入快递公司。

电商网站要在快递鸟查询或者订阅运单时,可通过单号识别先行判断物流公司后,再订阅到快递鸟。

二.对接描述

1.该接口仅对运单号做出识别,识别可能属于的一家或多家快递公司。

2.接口并不返回物流轨迹,用户可结合即时查询接口和订阅查询接口完成轨迹查询、订阅的动作。

3.接口识别会返回一家或者多家快递公司,返回的数据根据快递鸟大数据分析结果排序,排名靠前的命中率更高。

4.若识别失败,快递鸟返回的匹配结果为空。

5.接口支持的消息接收方式为HTTPPOST,请求方法的编码格式(utf-8):

"application/x-www-form-urlencoded;charset=utf-8"。

三.参数列表

1.请求系统级参数说明

参数名称

类型

说明

必须要求

RequestData

String

请求内容需进行URL(utf-8)编码。

请求内容JSON格式,须和DataType一致。

R

EBusinessID

String

商户ID,请在我的服务页面查看。

R

RequestType

String

请求指令类型:

2002

R

DataSign

String

数据内容签名:

把(请求内容(未编码)+AppKey)进行MD5加密,然后Base64编码,最后进行URL(utf-8)编码。

详细过程请查看Demo。

R

DataType

String

请求、返回数据类型:

只支持JSON格式

R

备注:

R-必填(Required),O-可选(Optional),C-报文中该参数在一定条件下可选(Conditional)。

2.接口地址

API测试地址:

http:

//testapi.kdniao.cc:

8081/Ebusiness/EbusinessOrderHandle.aspx

API正式地址:

http:

//api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx

3.请求内容字段定义

参数名称

类型

说明

是否必须

LogisticCode

String

物流单号

R

4.返回参数定义

参数名称

类型

说明

必须要求

EBusinessID

String

电商用户ID

R

LogisticCode

String

物流单号

R

Success

Bool

成功与否

R

Code

Int

失败原因

O

Shipper

ShipperCode

String

快递公司编码

O

ShipperName

String

快递公司名称

O

四.对接案例

1.JSON请求

{

"LogisticCode":

"3967950525457"

}

2.JSON返回

{

"EBusinessID":

"1257021",

"Success":

true,

"LogisticCode":

"3967950525457",

"Shippers":

[

{

"ShipperCode":

"YD",

"ShipperName":

"韵达快递"

}

]

}

3.PHP对接demo

php

//电商ID

defined('EBusinessID')ordefine('EBusinessID','请到快递鸟官网申请

//电商加密私钥,快递鸟提供,注意保管,不要泄漏

defined('AppKey')ordefine('AppKey','请到快递鸟官网申请

//请求url

//测试地址

defined('ReqURL')ordefine('ReqURL','http:

//testapi.kdniao.cc:

8081/Ebusiness/EbusinessOrderHandle.aspx');

//正式地址

//defined('ReqURL')ordefine('ReqURL','http:

//api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx');

//调用获取物流轨迹

//-------------------------------------------------------------

$logisticResult=getOrderTracesByJson();

echo$logisticResult;

//-------------------------------------------------------------

/**

*Json方式单号识别

*/

functiongetOrderTracesByJson(){

$requestData="{'LogisticCode':

'589707398027'}";

$datas=array(

'EBusinessID'=>EBusinessID,

'RequestType'=>'2002',

'RequestData'=>urlencode($requestData),

'DataType'=>'2',

);

$datas['DataSign']=encrypt($requestData,AppKey);

$result=sendPost(ReqURL,$datas);

//根据公司业务处理返回的信息......

return$result;

}

/**

*post提交数据

*@paramstring$url请求Url

*@paramarray$datas提交的数据

*@returnurl响应返回的html

*/

functionsendPost($url,$datas){

$temps=array();

foreach($datasas$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签名生成

*@paramdata内容

*@paramappkeyAppkey

*@returnDataSign签名

*/

functionencrypt($data,$appkey){

returnurlencode(base64_encode(md5($data.$appkey)));

}

?

>

附:

快递查询接口demo

importjava.io.BufferedReader;

importjava.io.IOException;

importjava.io.InputStreamReader;

importjava.io.OutputStreamWriter;

importjava.io.UnsupportedEncodingException;

import.HttpURLConnection;

import.URL;

import.URLEncoder;

importjava.security.MessageDigest;

importjava.util.HashMap;

importjava.util.Map;

publicclassKdniaoTrackQueryAPI{

//DEMO

publicstaticvoidmain(String[]args){

KdniaoTrackQueryAPIapi=newKdniaoTrackQueryAPI();

try{

Stringresult=api.getOrderTracesByJson("ANE","210001633605");

System.out.print(result);

}catch(Exceptione){

e.printStackTrace();

}

}

//电商ID

privateStringEBusinessID="请到快递鸟官网申请

//电商加密私钥,快递鸟提供,注意保管,不要泄漏

privateStringAppKey="请到快递鸟官网申请

//请求url

privateStringReqURL="http:

//api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx";

/**

*Json方式查询订单物流轨迹

*@throwsException

*/

publicStringgetOrderTracesByJson(StringexpCode,StringexpNo)throwsException{

StringrequestData="{'OrderCode':

'','ShipperCode':

'"+expCode+"','LogisticCode':

'"+expNo+"'}";

Mapparams=newHashMap();

params.put("RequestData",urlEncoder(requestData,"UTF-8"));

params.put("EBusinessID",EBusinessID);

params.put("RequestType","1002");

StringdataSign=encrypt(requestData,AppKey,"UTF-8");

params.put("DataSign",urlEncoder(dataSign,"UTF-8"));

params.put("DataType","2");

Stringresult=sendPost(ReqURL,params);

//根据公司业务处理返回的信息......

returnresult;

}

/**

*XML方式查询订单物流轨迹

*@throwsException

*/

publicStringgetOrderTracesByXml()throwsException{

StringrequestData="

xmlversion=\"1.0\"encoding=\"utf-8\"?

>"+

""+

""+

"SF"+

"589707398027"+

"";

Mapparams=newHashMap();

params.put("RequestData",urlEncoder(requestData,"UTF-8"));

params.put("EBusinessID",EBusinessID);

params.put("RequestType","1002");

StringdataSign=encrypt(requestData,AppKey,"UTF-8");

params.put("DataSign",urlEncoder(dataSign,"UTF-8"));

params.put("DataType","1");

Stringresult=sendPost(ReqURL,params);

//根据公司业务处理返回的信息......

returnresult;

}

/**

*MD5加密

*@paramstr内容

*@paramcharset编码方式

*@throwsException

*/

@SuppressWarnings("unused")

privateStringMD5(Stringstr,Stringcharset)throwsException{

MessageDigestmd=MessageDigest.getInstance("MD5");

md.update(str.getBytes(charset));

byte[]result=md.digest();

StringBuffersb=newStringBuffer(32);

for(inti=0;i

intval=result[i]&0xff;

if(val<=0xf){

sb.append("0");

}

sb.append(Integer.toHexString(val));

}

returnsb.toString().toLowerCase();

}

/**

*base64编码

*@paramstr内容

*@paramcharset编码方式

*@throwsUnsupportedEncodingException

*/

privateStringbase64(Stringstr,Stringcharset)throwsUnsupportedEncodingException{

Stringencoded=base64Encode(str.getBytes(charset));

returnencoded;

}

@SuppressWarnings("unused")

privateStringurlEncoder(Stringstr,Stringcharset)throwsUnsupportedEncodingException{

Stringresult=URLEncoder.encode(str,charset);

returnresult;

}

/**

*电商Sign签名生成

*@paramcontent内容

*@paramkeyValueAppkey

*@paramcharset编码方式

*@throwsUnsupportedEncodingException,Exception

*@returnDataSign签名

*/

@SuppressWarnings("unused")

privateStringencrypt(Stringcontent,StringkeyValue,Stringcharset)throwsUnsupportedEncodingException,Exception

{

if(keyValue!

=null)

{

returnbase64(MD5(content+keyValue,charset),charset);

}

returnbase64(MD5(content,charset),charset);

}

/**

*向指定URL发送POST方法的请求

*@paramurl发送请求的URL

*@paramparams请求的参数集合

*@return远程资源的响应结果

*/

@SuppressWarnings("unused")

privateStringsendPost(Stringurl,Mapparams){

OutputStreamWriterout=null;

BufferedReaderin=null;

StringBuilderresult=newStringBuilder();

try{

URLrealUrl=newURL(url);

HttpURLConnectionconn=(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;MSIE6.0;WindowsNT5.1;SV1)");

conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");

conn.connect();

//获取URLConnection对象对应的输出流

out=newOutputStreamWriter(conn.getOutputStream(),"UTF-8");

//发送请求参数

if(params!

=null){

StringBuilderparam=newStringBuilder();

for(Map.Entryentry:

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=newBufferedReader(

newInputStreamReader(conn.getInputStream(),"UTF-8"));

Stringline;

while((line=in.readLine())!

=null){

result.append(line);

}

}catch(Exceptione){

e.printStackTrace();

}

//使用finally块来关闭输出流、输入流

finally{

try{

if(out!

=null){

out.close();

}

if(in!

=null){

in.close();

}

}

catch(IOExceptionex){

ex.printStackTrace();

}

}

returnresult.toString();

}

privatestaticchar[]base64EncodeChars=newchar[]{

'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',

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 卡通动漫

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1