Kdniao.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. namespace expressage;
  3. use app\common\service\ConfigService;
  4. use Requests;
  5. /**
  6. * 快递鸟
  7. * Class Kdniao
  8. * @package expressage
  9. */
  10. class Kdniao extends Expressage
  11. {
  12. /**
  13. * @notes 查询物流轨迹
  14. * @param $code //物流公司编号
  15. * @param $number //物流单号
  16. * @param $extra //付费模式且快递为顺丰时需要快递相关收件人或寄件人手机4位尾号
  17. * @return false
  18. * @author 段誉
  19. * @date 2021/8/11 16:30
  20. */
  21. public function logistics($code, $number, $extra = "")
  22. {
  23. $requestData = "{'OrderCode':'','ShipperCode':'$code','LogisticCode':'$number','CustomerName':'$extra'}";
  24. $datas = array(
  25. 'EBusinessID' => $this->app,
  26. 'RequestType' => '1002',
  27. 'RequestData' => urlencode($requestData),
  28. 'DataType' => '2',
  29. );
  30. //快递鸟请求接口类型
  31. $expressConfig = unserialize(ConfigService::get('logistics_config', 'express_bird', ''));
  32. $requestType = $expressConfig['set_meal'] ?? 'free';
  33. $searchUrl = 'https://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx';
  34. //为付费类型时调整请求指令
  35. if ($requestType == 'pay') {
  36. $datas['RequestType'] = '8001';
  37. }
  38. $datas['DataSign'] = self::encrypt($requestData, $this->key);
  39. $result = Requests::post($searchUrl, [], $datas);
  40. $result = json_decode($result->body, true);
  41. if (isset($result['Traces']) && !empty($result['Traces'])) {
  42. $this->logisticsInfo = $result['Traces'];
  43. }
  44. $this->error = json_encode($result, JSON_UNESCAPED_UNICODE);
  45. return false;
  46. }
  47. }