ExpressHandler.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. namespace App\Handlers;
  3. use App\Models\Order;
  4. use GuzzleHttp\Client;
  5. Class ExpressHandler
  6. {
  7. //快递鸟获取订单物流信息
  8. public function getExpress($LogisticCode, $ShipperCode, $OrderCode, $CustomerName)
  9. {
  10. $client = new Client();
  11. $appKey = '321b74bb-84a3-4b9c-af1d-937583f9a3a0';
  12. $appId = 1640111;
  13. // $url = 'http://sandboxapi.kdniao.com:8080/kdniaosandbox/gateway/exterfaceInvoke.json';
  14. $url = 'http://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx';
  15. $requestData = $this->requestData($LogisticCode, $ShipperCode, $OrderCode, $CustomerName);
  16. $array = [
  17. 'query' => [
  18. 'RequestData' => urlencode($requestData),
  19. 'EBusinessID' => $appId,
  20. 'RequestType' => '8002',
  21. 'DataSign' => urlencode($this->encrypt($requestData, $appKey)),
  22. 'DataType' => '2'
  23. ]
  24. ];
  25. $result = $client->request('POST', $url, $array);
  26. $res = json_decode($result->getBody()->getContents());
  27. //保存订单物流信息
  28. if(isset($res->Traces) && !empty($res->Traces)){
  29. Order::where('order_no',$OrderCode)->update([
  30. 'express_info'=>json_encode($res),
  31. 'express_receive_time'=>array_pop($res->Traces)->AcceptTime,
  32. 'express_state'=>$res->State
  33. ]);
  34. }
  35. return $res;
  36. }
  37. private function requestData($LogisticCode,$ShipperCode=null,$OrderCode=null,$CustomerName=null){
  38. if ($ShipperCode){
  39. $data['ShipperCode']=$ShipperCode;
  40. }
  41. if ($OrderCode){
  42. $data['OrderCode']=$OrderCode;
  43. }
  44. if ($CustomerName){
  45. $data['CustomerName']=$CustomerName;
  46. }
  47. $data['LogisticCode']=$LogisticCode;
  48. return json_encode($data);
  49. }
  50. public function encrypt($requireData,$appKey){
  51. return base64_encode(md5($requireData.$appKey));
  52. }
  53. }