| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- <?php
- /**
- * 重庆赤晓店信息科技有限公司
- * https://www.chixiaodian.com
- * Copyright (c) 2023 赤店商城 All rights reserved.
- */
- namespace app\utils\Express\Trackers;
- use Curl\Curl;
- use Cyy\Express\Exceptions\TrackingException;
- use Cyy\Express\Waybill;
- use Cyy\Express\Status;
- use Cyy\Express\Trackers\BaseTracker;
- use Cyy\Express\Trackers\TrackerInterface;
- use Cyy\Express\Trackers\TrackerTrait;
- class Kuaidiniao extends BaseTracker implements TrackerInterface
- {
- use TrackerTrait;
- public $EBusinessID;
- public $AppKey;
- public $freeApi = null;
- public $receive_mobile;
- public static function getSupportedExpresses()
- {
- return [
- '京东' => 'JD',
- '顺丰' => 'SF',
- '申通' => 'STO',
- '韵达' => 'YD',
- '圆通' => 'YTO',
- '中通' => 'ZTO',
- '百世' => 'HTKY',
- 'EMS' => 'EMS',
- '天天' => 'HHTT',
- '邮政' => 'YZPY',
- '宅急送' => 'ZJS',
- '国通' => 'GTO',
- '全峰' => 'QFKD',
- '优速' => 'UC',
- '中铁' => 'ZTKY',
- '中铁' => 'ZTWL',
- '亚马逊' => 'AMAZON',
- '城际' => 'CJKD',
- '德邦' => 'DBL',
- '汇丰' => 'HFWL',
- // '百世' => 'BTWL',
- '安捷' => 'AJ',
- '安能' => 'ANE',
- '安信达' => 'AXD',
- '北青小红帽' => 'BQXHM',
- '百福东方' => 'BFDF',
- 'CCES' => 'CCES',
- '城市100' => 'CITY100',
- 'COE东方' => 'COE',
- '长沙创一' => 'CSCY',
- '成都善途' => 'CDSTKY',
- 'D速' => 'DSWL',
- '大田' => 'DTWL',
- '快捷' => 'FAST',
- '联邦' => 'FEDEX',
- 'FEDEX' => 'FEDEX_GJ',
- '飞康达' => 'FKD',
- '广东邮政' => 'GDEMS',
- '共速达' => 'GSD',
- '高铁' => 'GTSD',
- '恒路' => 'HLWL',
- '天地华宇' => 'HOAU',
- '华强' => 'hq568',
- '华夏龙' => 'HXLWL',
- '好来运' => 'HYLSD',
- '京广' => 'JGSD',
- '九曳供应链' => 'JIUYE',
- '佳吉' => 'JJKY',
- '嘉里' => 'JLDT',
- '捷特' => 'JTKD',
- '急先达' => 'JXD',
- '晋越' => 'JYKD',
- '加运美' => 'JYM',
- '佳怡' => 'JYWL',
- '跨越' => 'KYWL',
- '龙邦' => 'LB',
- '联昊通' => 'LHT',
- '民航' => 'MHKD',
- '明亮' => 'MLWL',
- '能达' => 'NEDA',
- '平安达腾飞' => 'PADTF',
- '全晨' => 'QCKD',
- '全日通' => 'QRT',
- '如风达' => 'RFD',
- '赛澳递' => 'SAD',
- '圣安' => 'SAWL',
- '盛邦' => 'SBWL',
- '上大' => 'SDWL',
- '盛丰' => 'SFWL',
- '盛辉' => 'SHWL',
- '速通' => 'ST',
- '速腾' => 'STWL',
- '速尔' => 'SURE',
- '唐山申通' => 'TSSTO',
- '全一' => 'UAPEX',
- '万家' => 'WJWL',
- '万象' => 'WXWL',
- '新邦' => 'XBWL',
- '信丰' => 'XFEX',
- '希优特' => 'XYT',
- '新杰' => 'XJ',
- '源安达' => 'YADEX',
- '远成' => 'YCWL',
- '义达' => 'YDH',
- '越丰' => 'YFEX',
- '原飞航' => 'YFHEX',
- '亚风' => 'YFSD',
- '运通' => 'YTKD',
- '亿翔' => 'YXKD',
- '增益' => 'ZENY',
- '汇强' => 'ZHQKD',
- '众通' => 'ZTE',
- '中邮' => 'ZYWL',
- '速必达' => 'SUBIDA',
- '瑞丰' => 'RFEX',
- '快客' => 'QUICK',
- 'CNPEX中邮' => 'CNPEX',
- '鸿桥供应链' => 'HOTSCM',
- '海派通' => 'HPTEX',
- '澳邮专线' => 'AYCA',
- '泛捷' => 'PANEX',
- 'PCA Express' => 'PCA',
- 'UEQ Express' => 'UEQ',
- '程光' => 'CG',
- '富腾达' => 'FTD',
- '中通快运' => 'ZTOKY',
- '品骏快递' => 'PJ',
- '极兔' => 'JTSD',
- '壹米滴答' => 'YMDD',
- '顺心捷达' => 'SXJD'
- ];
- }
- public function track(Waybill $waybill)
- {
- $ShipperCode = static::getExpressCode($waybill->express);
- $curl = new Curl();
- $requestData = [
- 'ShipperCode' => $ShipperCode,
- 'LogisticCode' => $waybill->id,
- 'OrderCode' => $waybill->orderId,
- ];
- if($ShipperCode == 'SF'){
- $requestData['CustomerName'] = substr(trim($this->receive_mobile), -4);
- }
- $requestData = json_encode($requestData);
- // $postContent = [
- // 'RequestData' => urlencode($requestData),
- // 'EBusinessID' => $this->EBusinessID,
- // 'RequestType' => '1008',
- // 'DataSign' => base64_encode(md5($requestData . $this->AppKey)),
- // 'DataType' => '2',
- // ];
- // $curl->post(
- // 'http://api.kdniao.com/api/dist',
- // $postContent
- // );
- $postContent2 = [
- 'RequestData' => urlencode($requestData),
- 'EBusinessID' => $this->EBusinessID,
- 'RequestType' => '8001',
- 'DataSign' => base64_encode(md5($requestData . $this->AppKey)),
- 'DataType' => '2',
- ];
- if($this->freeApi){
- $postContent2['RequestType'] = '1002';
- }
- $curl->post(
- 'http://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx',
- $postContent2
- );
- $response = static::getJsonResponse($curl);
- if ($response->Success == false) {
- throw new TrackingException($response->Reason, $response);
- }
- $statusMap = [
- 2 => Status::STATUS_TRANSPORTING,
- 3 => Status::STATUS_DELIVERED,
- 4 => Status::STATUS_REJECTED,
- ];
- $waybill->status = $statusMap[intval($response->State)];
- foreach ($response->Traces as $trace) {
- $remark = isset($trace->Remark) ? $trace->Remark : '';
- $waybill->traces->append($trace->AcceptTime, $trace->AcceptStation, $remark);
- }
- }
- }
|