tp对接新达达物流

tp对接新达达物流新建一个文件 DaDaSdk class php php namespace O2OSender 达达开放平台 sdk class DaDaSdk private URL http newopen qa imdada cn 正式环境 private URL

大家好,我是讯享网,很高兴认识大家。

新建一个文件 DaDaSdk.class.php

<?php namespace O2OSender; / * 达达开放平台sdk */ class DaDaSdk { 
    private $URL = 'http://newopen.qa.imdada.cn'; //正式环境 // private $URL = 'http://newopen.imdada.cn'; //测试环境 private $APP_KEY = ''; private $VERSION = '1.0'; private $APP_SECRET = ''; private $API_ADDORDER = '/api/order/addOrder'; private $API_FETCHORDER = '/api/order/fetch'; private $API_CITY_LIST = "/api/cityCode/list"; private $API_FINISHORDER = '/api/order/finish'; private $API_CANCELORDER = '/api/order/cancel'; private $API_EXPIREORDER = '/api/order/expire'; private $API_FORMALCANCEL = '/api/order/formalCancel'; private $API_CANCELREASONS = '/api/order/cancel/reasons'; private $API_ACCEPTORDER = '/api/order/accept'; private $API_ADDTIP = '/api/order/addTip'; private $API_READDORDER = '/api/order/reAddOrder'; private $API_QUERYDELIVERFEE = '/api/order/queryDeliverFee'; private $API_ADDAFTERQUERY = '/api/order/addAfterQuery'; private $API_ADDSHOP = '/api/shop/add'; private $API_ADDMERCHANT = '/merchantApi/merchant/add'; private $API_QueryOrder='api/order/status/query'; private $SOURCE_ID = '73753'; //商户编号 private $SHOP_NO = ''; //门店编号 private $SUCCESS = "success"; private $FAIL = "fail"; public function __construct($appkey,$appsec,$source_id,$shop_no) { 
    $this->APP_KEY = $appkey; $this->APP_SECRET = $appsec; $this->SHOP_NO = $shop_no; $this->SOURCE_ID = $source_id; } //查询订单详情 public function query($orderid) { 
    return self::getResult($this->API_QueryOrder,$orderid); } / 新增订单 * @return bool */ public function addOrder($data) { 
    $data['shop_no'] = $this->SHOP_NO; // $data['origin_id'] = "12321"; // $data['city_code'] = "029"; // $data['cargo_price'] = "11.2"; // $data['is_prepay'] = "0"; // $data['expected_fetch_time'] = time()+3600; // $data['receiver_name'] = ""; // $data['receiver_address'] = ""; // $data['receiver_phone'] = ""; // $data['receiver_lat'] = ""; // $data['receiver_lng'] = ""; // $data['callback'] = "http://www.weilai517.com/index.php/Home/Test/callback/id/12321"; return self::getResult($this->API_ADDORDER,$data); } / * 重新发布订单 * 在调用新增订单后,订单被取消、过期或者投递异常的情况下,调用此接口,可以在达达平台重新发布订单。 * @return bool */ public function reAddOrder($data) { 
    // $data['shop_no'] = $this->SHOP_NO; // $data['origin_id'] = "12321"; // $data['city_code'] = "029"; // $data['cargo_price'] = "11.2"; // $data['is_prepay'] = "0"; // $data['expected_fetch_time'] = time()+3600; // $data['receiver_name'] = "仝帅"; // $data['receiver_address'] = "南稍门中贸广场"; // $data['receiver_phone'] = ""; // $data['receiver_lat'] = "108."; // $data['receiver_lng'] = "34."; // $data['callback'] = "http://www.weilai517.com/index.php/Home/Test/callback/id/12321"; return self::getResult($this->API_READDORDER,$data); } / * 查询订单运费接口 * @return bool */ public function queryDeliverFee($data) { 
    // $data['shop_no'] = $this->SHOP_NO; // $data['origin_id'] = "12321"; // $data['city_code'] = "029"; // $data['cargo_price'] = "11.2"; // $data['is_prepay'] = "0"; // $data['expected_fetch_time'] = time()+3600; // $data['receiver_name'] = ""; // $data['receiver_address'] = ""; // $data['receiver_phone'] = ""; // $data['receiver_lat'] = ""; // $data['receiver_lng'] = ""; // $data['callback'] = "http://www.weilai517.com/index.php/Home/Test/callback/id/12321"; return self::getResult($this->API_QUERYDELIVERFEE,$data); } / * 查询运费后发单接口 */ public function addAfterQuery($data) { 
    // $data['deliveryNo'] = ''; return self::getResult($this->API_ADDAFTERQUERY,$data); } / * 取消订单(线上环境) * 在订单待接单或待取货情况下,调用此接口可取消订单。注意:订单接单后1-15分钟取消订单,会扣除相应费用补贴给接单达达 * @return bool */ public function formalCancel($data) { 
    // $data['order_id'] = '12321'; // $data['cancel_reason_id'] = '1'; // $data['cancel_reason'] = ""; return self::getResult($this->API_FORMALCANCEL,$data); } / * 增加小费 * 可以对待接单状态的订单增加小费。需要注意:订单的小费,以最新一次加小费动作的金额为准,故下一次增加小费额必须大于上一次小费额。 * @return bool */ public function addTip($data) { 
    // $data['order_id'] = '12321'; // $data['tips'] = '2.5'; // $data['city_code'] = '029'; // $data['info'] = ''; return self::getResult($this->API_ADDTIP,$data); } / * 新增门店 * @return bool */ public function addShop($data) { 
    // $data['origin_shop_id'] = ''; // $data['station_name'] = ''; // $data['business'] = ''; // $data['city_name'] = ''; // $data['area_name'] = ''; // $data['station_address'] = ''; // $data['lng'] = ''; // $data['lat'] = ''; // $data['contact_name'] = ''; // $data['phone'] = ''; // $data['username'] = ''; // $data['password'] = ''; return self::getResult($this->API_ADDSHOP,$data); } public function addMerchant($data) { 
    // $data['mobile'] = ''; // $data['city_name'] = ''; // $data['enterprise_name'] = ''; // $data['enterprise_address'] = ''; // $data['contact_name'] = ''; // $data['contact_phone'] = ''; $this->SOURCE_ID = ''; return self::getResult($this->API_ADDMERCHANT,$data); } / * 获取取消订单原因列表 * array {0 =>array{'reason' =>'没有达达接单','id' =>1},....} */ public function cancelReasons() { 
    $res = self::getResult($this->API_CANCELREASONS); var_dump($res); } / * 接单(仅在测试环境供调试使用) * @return bool */ public function acceptOrder($data) { 
    // $data['order_id'] = '12321'; return self::getResult($this->API_ACCEPTORDER,$data); } / * 完成取货(仅在测试环境供调试使用) * @return bool */ public function fetchOrder($data) { 
    // $data['order_id'] = '12321'; return self::getResult($this->API_FETCHORDER,$data); } / * 完成订单(仅在测试环境供调试使用) * @return bool */ public function finishOrder($data) { 
    // $data['order_id'] = '12321'; return self::getResult($this->API_FINISHORDER,$data); } / * 取消订单(仅在测试环境供调试使用) * @return bool */ public function cancelOrder($data) { 
    // $data['order_id'] = '12321'; return self::getResult($this->API_CANCELORDER,$data); } / * 订单过期(仅在测试环境供调试使用) * @return bool */ public function expireOrder($data) { 
    // $data['order_id'] = '12321'; return self::getResult($this->API_EXPIREORDER,$data); } / * 订单状态变化后,达达回调我们 */ public function processCallback() { 
    $content = file_get_contents("php://input"); //{"order_status":2,"cancel_reason":"","update_time":,"dm_id":666,"signature":"7a177ae4b1cf63de4f721cb9","dm_name":"测试达达","order_id":"12321","client_id":"","dm_mobile":""} if($content){ 
    $arr = json_decode($content,true); } } / 获取城市信息 * @return bool */ public function cityCode(){ 
    return self::getResult($this->API_CITY_LIST); } / * * @param $param * @param $time * @return string */ private function sign($param,$time) { 
    $tmpArr = array( "app_key"=>$this->APP_KEY, "body"=>$param, "format"=>"json", "source_id"=>$this->SOURCE_ID, "timestamp"=>$time, "v"=>$this->VERSION, ); if(empty($this->SOURCE_ID)){ 
    unset($tmpArr['source_id']); } $str = ''; foreach ($tmpArr as $k=>$v){ 
    $str .= $k.$v; } $str = $this->APP_SECRET.$str.$this->APP_SECRET; $signature = md5($str); return strtoupper($signature); } private function getParam($data='') { 
    if(empty($data)){ 
    $param = ''; }else{ 
    $param = json_encode($data); } $time = time(); $sign = self::sign($param,$time); $tmpArr = array( "app_key"=>$this->APP_KEY, "body"=>$param, "format"=>"json", "signature"=>$sign, "source_id"=>$this->SOURCE_ID, "timestamp"=>$time, "v"=>$this->VERSION, ); if(empty($this->SOURCE_ID)){ 
    unset($tmpArr['source_id']); } return json_encode($tmpArr); } / 根据参数获取结果信息 * @param $api * @param string $data * @return bool */ private function getResult($api,$data=''){ 
    $param = self::getParam($data); $url = $this->URL.$api; $res = self::http_post($url,$param); if($res){ 
    $res = json_decode($res,true); // if($res['status'] == $this->SUCCESS){ 
    return $res; // } } return false; } / * POST 请求 * @param string $url * @param array $param * @param boolean $post_file 是否文件上传 * @return string content */ private function http_post($url,$param,$post_file=false){ 
    $oCurl = curl_init(); if(stripos($url,"https://")!==FALSE){ 
    curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($oCurl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1 } if (is_string($param) || $post_file) { 
    $strPOST = $param; } else { 
    $aPOST = array(); foreach($param as $key=>$val){ 
    $aPOST[] = $key."=".urlencode($val); } $strPOST = join("&", $aPOST); } curl_setopt($oCurl, CURLOPT_URL, $url); curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt($oCurl, CURLOPT_POST,true); curl_setopt($oCurl, CURLOPT_POSTFIELDS,$strPOST); $header = array( 'Content-Type: application/json', ); curl_setopt($oCurl, CURLOPT_HTTPHEADER, $header); $sContent = curl_exec($oCurl); $aStatus = curl_getinfo($oCurl); curl_close($oCurl); if(intval($aStatus["http_code"])==200){ 
    return $sContent; }else{ 
    return false; } } } 

讯享网

调用达达

讯享网 //调用达达 function dadafun1($id='') { 
    $link = mysqli_connect("127.0.0.1","xlyj_dayu1_netzs","6836RZe3mtDdtBY4","xlyj_dayu1_netzs"); $sql='select order_toaddressxy,order_money,toubaomoney,order_to_member_name,order_toaddress,order_to_member_mobile,order_packageweight from web_order where order_no='.$id; $res=mysqli_query($link,$sql); $orderinfo=mysqli_fetch_assoc($res); // echo '<pre>'; // print_r($orderinfo); file_put_contents('./2.txt',var_export($orderinfo,true)); $appkey=''; $appsec=''; $source_id=''; $shop_no=''; include('./DaDaSdk.class.php'); $dadaobj=new \DaDaSdk($appkey,$appsec,$source_id,$shop_no); //获取城市code // $res=$dadaobj->cityCode(); // file_put_contents('./3.txt',var_export($res,true)); //print_r($res); // $city_code=''; // foreach($res['result'] as $key=>$val) // { 
    // if(strpos('西安',$val['cityName'])!==false) // { 
    // $city_code=$val['cityCode']; // } // } $arrxy=explode(',',$orderinfo['order_toaddressxy']); $jingdu=$arrxy[0]; $weidu=$arrxy[1]; $order_money=$orderinfo['order_money'];//订单金额 $toubaomoney=$orderinfo['toubaomoney'];//订单投保费 $order_money=round($order_money+$toubaomoney,2); $data['origin_id'] = $id; $data['city_code'] = '029'; $data['cargo_price'] =$order_money; $data['is_prepay'] = "0"; $data['receiver_name'] = $orderinfo['order_to_member_name'] ; $data['receiver_address'] = $orderinfo['order_toaddress'] ; $data['receiver_lat'] = $weidu; $data['receiver_lng'] = $jingdu; $data['receiver_phone'] =$orderinfo['order_to_member_mobile']; $data['callback'] = "https://.net/wxprogramapi/payback/dadacallback.html?id=".$id; $data['cargo_weight']=$orderinfo['order_packageweight']; if(!empty($orderinfo['toubaomoney']) && $orderinfo['toubaomoney']>0) { 
    $data['is_use_insurance']=1;//是否使用保价 } file_put_contents('./3.txt',var_export($data,true)); $res=$dadaobj->addOrder($data); file_put_contents('./4.txt',var_export($res,true)); //关闭数据库 mysqli_close($link); } 


讯享网

 //达达回调 public function dadacallback() { 
    $orderno=input('id'); //设置订单是达达 db('order')->where(['order_no'=>$orderno])->update(['order_exptype'=>1]); $status=input('order_status');//订单状态(待接单=1,待取货=2,配送中=3,已完成=4,已取消=5, 指派单=8,妥投异常之物品返回中=9, 妥投异常之物品返回完成=10, 骑士到店=100,创建达达运单失败=1000 可参考文末的状态说明) if($status=='2')//待取货=2 { 
    db('order')->where(['order_no'=>$orderno])->update(['order_delivery_state'=>1]); }elseif($status=='3') //配送中 { 
    db('order')->where(['order_no'=>$orderno])->update(['order_delivery_state'=>2]); }elseif($status=='4') //已完成 { 
    db('order')->where(['order_no'=>$orderno])->update(['order_delivery_state'=>3]); }elseif($status=='5') //取消 { 
    dadafunagain($orderno,1);//重发 } $appkey=config('appkey'); $appsec=config('appsec'); $source_id=config('source_id'); $shop_no=config('shop_no'); include(EXTEND_PATH.'DaDaSdk.class.php'); $dadaobj=new \DaDaSdk($appkey,$appsec,$source_id,$shop_no); //模拟接单 // $data=[]; // $data['order_id']=$orderno; // $res=$dadaobj->acceptOrder($data);  //完成取货 // $data=[]; // $data['order_id']=$orderno; // $res=$dadaobj->fetchOrder($data);  //完成配送 // $data=[]; // $data['order_id']=$orderno; // $res=$dadaobj->finishOrder($data); // echo '<pre>'; // print_r($res);  //获取取消原因 // $res=$dadaobj->cancelReasons(); // echo '<pre>'; // print_r($res); //取消订单 // $data=[]; // $data['order_id']=$orderno; // $data['cancel_reason_id']='36'; // $res=$dadaobj->formalCancel($data); // print_r($res); } 
小讯
上一篇 2025-03-06 12:05
下一篇 2025-02-24 19:41

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/33397.html