jh-admin/extend/KdApiSpace.php

157 lines
5.5 KiB
PHP

<?php
/**
* SAAS应用系统 --- 十年开发经验汇集巨献!
* ==========================================================
* Copy right 2020-2050 成都众联思索科技有限公司,保留所有权利。
* ----------------------------------------------------------
* 官方网址: https://www.zoomtk.com
* 这不是自由软件!未经允许不得用于商业目或程序代码摘取及修改。
* 任何企业和个人未经允许对程序代码以任何形式任何目的再发布传播。
* 唯一发布渠道www.zoomtk.com;非官方渠道统一视为侵权行为。
* ==========================================================
*/
namespace extend;
class KdApiSpace
{
private $key; // 授权key
private $http_type;
public function __construct($config){
$_SERVER=request()->server();
$this->key = $config["ApiKey"];
$this->http_type = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://';
}
/**
* 查询物流轨迹企业版
* @param unknown $express_no 物流公司编码
* @param unknown $send_no 快递单号
*/
public function getExpressTracesEnterpriseEdition($express_no, $send_no,$mobile=''){
$data = array();
$url = $this->http_type."eolink.o.apispace.com/wlgj1/paidtobuy_api/trace_search"; // 实际地址
$data['cpCode']=$express_no;
$data['mailNo']=$send_no;
if($express_no=='SF'){
$data['tel']=$mobile;
}
$headers = [
"Content-Type:application/json",
"Authorization-Type:apikey",
"X-APISpace-Token:{$this->key}",
];
$result = $this->sendRequest($url, $data, $headers);
return $result;
}
/**
* 发送请求
* @param unknown $url
* @param unknown $data
*/
public function sendRequest($url, $data = [],$headers=[]){
$js='{
"traceId" : "1999491834226338823",
"trace_id" : "1999491834226338823",
"success" : true,
"logisticsTrace" : {
"theLastTime" : "2022-11-21 16:22:59",
"cpCode" : "YTO",
"cpUrl" : "http://www.yto.net.cn/",
"logisticsStatusDesc" : "已揽件",
"logisticsTraceDetailList" : [ {
"areaCode" : "CN360700000000",
"areaName" : "江西省,赣州市",
"subLogisticsStatus" : "ACCEPT",
"time" : 1669018979000,
"logisticsStatus" : "ACCEPT",
"desc" : "【江西省赣州龙都商城公司】 已揽收 取件人: 王胜军 (13757720004) 新冠疫苗已接种"
} ],
"mailNo" : "YT6896772955366",
"cpMobile" : "95554",
"theLastMessage" : "【江西省赣州龙都商城公司】 已揽收 取件人: 王胜军 (13757720004) 新冠疫苗已接种",
"logisticsCompanyName" : "圆通快递",
"logisticsStatus" : "ACCEPT"
}
}';
// $result = json_decode($js, true);
// return $this->handleReturnResult($result);
if (function_exists('curl_init') == 1){
$curl = curl_init();
curl_setopt ($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt ($curl, CURLOPT_HEADER,0);
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($curl, CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
if(!empty($data)){
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
}
curl_setopt ($curl, CURLOPT_TIMEOUT,5);
$result = curl_exec($curl);
$result = json_decode($result, true);
return $this->handleReturnResult($result);
}else{
return ["success" => false, "reason" => "curl扩展未开启"];
}
}
/**
* 处理返回数据
* @param unknown $data
*/
public function handleReturnResult($data){
$result = array();
$list = [
'success' => true,
'reason' => '',
'status' => '',
'status_name' => '',
'shipper_code' => '',
'logistic_code' => '',
'list' => [],
];
if(isset($data['logisticsTrace'])){
$result["success"] = true;
$Trace=$data['logisticsTrace'];
$result["reason"] = $Trace["theLastMessage"];
$result["status"] ='';
$result["status_name"] = $Trace['logisticsStatusDesc'];
$result["shipper_code"] = $Trace["theLastMessage"];
$result["logistic_code"] = $Trace["logisticsStatus"];
if(isset($Trace["logisticsTraceDetailList"])){
$lists=[];
foreach($Trace["logisticsTraceDetailList"] as $k => $v){
$lists[] = array(
"datetime" => date('Y-m-d H:i:s',$v["time"]/1000),
"remark" => $v["desc"],
);
}
$result["list"] = $lists;
return $result;
}
}
return $list;
}
/**
* 物流跟踪状态
* @param $state
*/
public function getStatusName($status){
$data = array(
0 => "在途",
1 => "揽收",
2 => "疑难",
3 => "签收",
4 => "退签",
5 => "派件",
6 => "退回",
);
$status_name = isset($data[$status]) ? $data[$status] : '';
return $status_name;
}
}