当前位置: 首页 > 后端技术 > PHP

php实现菜鸟快递查询对接必备的快递鸟API接口数据签名

时间:2023-03-29 17:05:19 PHP

使用Php开发语言??调用接口,常见问题基本是数据签名错误导致接口联调失败。当您在电商平台调用快递鸟接口时,为了提高对接效率,我们为您提供了一些复制和直接使用的方式。方法调用代码实现//电商IDdefined('EBusinessID')ordefine('EBusinessID','请到快递鸟官网申请http://kdniao.com/reg');//e-commerce加密私钥,快递鸟提供,请妥善保管,不要泄露defined('AppKey')ordefine('AppKey','请到快递鸟官网申请http://kdniao.com/reg');//requesturldefined('ReqURL')ordefine('ReqURL','http://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx');//调用查询物流轨迹//--------------------------------------------$logisticResult=getOrderTracesByJson();echologisticResult;Php封装的方法//------------------------------------------------/***Json方式查询订单物流轨迹*/functiongetOrderTracesByJson(){$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,$数据);//根据公司业务处理返回的信息...return$result;}/***postsubmitdata*@paramstring$urlrequestUrl*@paramarray$datassubmitdata*@returnurlresponsereturnedhtml*/functionsendPost($url,$datas){$temps=数组();foreach($datasas$key=>$value){$temps[]=sprintf('%s=%s',$key,$value);}$post_data=implode('&',$temps);$url_info=parse_url($url);如果(空($url_info['端口'])){$url_info['端口']=80;}$httpheader="POST".$url_info['路径']。"HTTP/1.0\r\n";$httpheader.="主机:".$url_info['主机']。"\r\n";$httpheader.="Content-Type:application/x-www-form-urlencoded\r\n";$httpheader.="内容长度:".strlen($post_data)。"\r\n";$httpheader.="连接:关闭\r\n\r\n";$httpheader.=$post_data;$fd=fsockopen($url_info['主机'],$url_info['端口']);fwrite($fd,$httpheader);$gets="";$headerFlag=true;而(!feof($fd)){如果($($header=@fgets($fd))&&($header=="\r\n"||$header=="\n")){break;}}while(!feof($fd)){$gets.=fread($fd,128);}fclose($fd);return$gets;}/***E-commerceSign签名生成*@paramdatacontent*@paramappkeyAppkey*@returnDataSignsignature*/functionencrypt($data,$appkey){returnurlencode(base64_encode(md5($数据,$appkey)));}