diff --git a/admin/controllers/items/Transfer.php b/admin/controllers/items/Transfer.php index d7e5deb6..6dfc2826 100644 --- a/admin/controllers/items/Transfer.php +++ b/admin/controllers/items/Transfer.php @@ -521,6 +521,24 @@ class Transfer extends HD_Controller return $this->show_json(SYS_CODE_SUCCESS, '短信提醒成功'); } + /** + * 货物物流信息测试 + * @return array + */ + public function get_aliwuliu(){ + $no = $this->input->get('no'); + /*if (!$no) { + return $this->show_json(SYS_CODE_FAIL, '快递单号不能为空【顺丰和丰网请输入单号 : 收件人或寄件人手机号后四位。例如:123456789:1234】'); + }*/ + $type = $this->input->get('type'); + + $this->load->library('AliWuliu'); + $res = $this->aliwuliu->kdi($no, $type, $debug=false); + print(json_encode($res)); + #var_dump($res);var_dump($res['status']);var_dump($res['msg']); + #var_dump($res['result']['number']);var_dump($res['result']['type']);var_dump($res['result']['deliverystatus']);var_dump($res['result']['issign']);var_dump($res['result']['expName']); + } + /** * 新增/修改调拨 * @return bool diff --git a/common/libraries/AliWuliu.php b/common/libraries/AliWuliu.php new file mode 100644 index 00000000..b17bcdf4 --- /dev/null +++ b/common/libraries/AliWuliu.php @@ -0,0 +1,125 @@ +appcode = $appcode ? $appcode : 'e9f05c2fdf65458a80e8619141481cee'; + $this->ci = & get_instance(); + $this->dir = 'aliwuliu'; + } + + /** + * Desc: https://market.aliyun.com/products/57126001/cmapi021863.html?spm=5176.2020520132.101.4.2de27218yEmTb1#sku=yuncode1586300000 + * Desc: https://netmarket.oss.aliyuncs.com/e885884a-8666-4d9d-85a9-692250a5510a.pdf?spm=5176.2020520132.101.6.2de27218yEmTb1&file=e885884a-8666-4d9d-85a9-692250a5510a.pdf + * @param $no string 快递单号 【顺丰和丰网请输入单号 : 收件人或寄件人手机号后四位。例如:123456789:1234 + * @param $type string 快递公司字母简写:不知道可不填 95%能自动识别,填写查询速度会更快 + * @param $debug bool + * @return array 返回值参考官方文档 + */ + public function kdi($no, $type='', $debug=false){ + if (!$no){ + return array('status'=>201, 'msg'=>'快递单号错误','result'=>array('number'=>'','type'=>'AUTO'),'code'=>0); + } + + $host = "https://wuliu.market.alicloudapi.com";//api访问链接 + $path = "/kdi";//API访问后缀 + $method = "GET"; + $appcode = $this->appcode;//开通服务后 买家中心-查看AppCode + $headers = array(); + array_push($headers, "Authorization:APPCODE " . $appcode); + #$querys = "no=780098068058&type=zto"; //参数写在这里 + $bodys = ""; + $querys = $type ? "no={$no}&type={$type}" : "no={$no}"; + $url = $host . $path . "?" . $querys; + + $curl = curl_init(); + curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); + curl_setopt($curl, CURLOPT_URL, $url); + curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); + curl_setopt($curl, CURLOPT_FAILONERROR, false); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); + curl_setopt($curl, CURLOPT_HEADER, true); + if (1 == strpos("$" . $host, "https://")) { + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); + } + $out_put = curl_exec($curl); + + $httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); + + + list($header, $body) = explode("\r\n\r\n", $out_put, 2); + if ($httpCode == 200) { + $debug && print("正常请求计费(其他均不计费)
"); + $debug && print($body); + $data = array( + 'no' =>$no, + 'type' =>$type, + 'httpCode' => $httpCode, + 'msg' => $body, + ); + debug_log(json_encode($data,JSON_UNESCAPED_UNICODE),$this->success_file,$this->dir); + $res = json_decode($body, true); + $res['code'] = 1; + return $res; + } else { + if ($httpCode == 400 && strpos($header, "Invalid Param Location") !== false) { + $msg = '参数错误'; + $debug && print("参数错误"); + } elseif ($httpCode == 400 && strpos($header, "Invalid AppCode") !== false) { + $msg = 'AppCode错误'; + $debug && print("AppCode错误"); + } elseif ($httpCode == 400 && strpos($header, "Invalid Url") !== false) { + $msg = '请求的 Method、Path 或者环境错误'; + $debug && print("请求的 Method、Path 或者环境错误"); + } elseif ($httpCode == 403 && strpos($header, "Unauthorized") !== false) { + $msg = '服务未被授权(或URL和Path不正确)'; + $debug && print("服务未被授权(或URL和Path不正确)"); + } elseif ($httpCode == 403 && strpos($header, "Quota Exhausted") !== false) { + $msg = '套餐包次数用完'; + $debug && print("套餐包次数用完"); + } elseif ($httpCode == 403 && strpos($header, "Api Market Subscription quota exhausted") !== false) { + $msg = '套餐包次数用完,请续购套餐'; + $debug && print("套餐包次数用完,请续购套餐"); + } elseif ($httpCode == 500) { + $msg = 'API网关错误'; + $debug && print("API网关错误"); + } elseif ($httpCode == 0) { + $msg = 'URL错误'; + $debug && print("URL错误"); + } else { + $msg = '参数名错误 或 其他错误'; + $debug && print("参数名错误 或 其他错误"); + $debug && print($httpCode); + $headers = explode("\r\n", $header); + $headList = array(); + foreach ($headers as $head) { + $value = explode(':', $head); + $headList[$value[0]] = $value[1]; + } + $debug && print($headList['x-ca-error-message']); + } + $data = array( + 'no' =>$no, + 'type' =>$type, + 'httpCode' => $httpCode, + 'msg' => $msg, + ); + debug_log(json_encode($data,JSON_UNESCAPED_UNICODE),$this->log_file,$this->dir); + return false; + } + } +}