container = ApplicationContext::getContainer(); $this->client = $this->container->get(Client::class); } /** * 获取签名 * @param string $params * @return string */ protected function getSign(string $params): string { return md5($params . config("kuaidi100.key") . config("kuaidi100.customer")); } public function subscribe(string $logistics_no,string $logistics_company_code,string $phone){ $param = [ 'company' => $logistics_company_code, // 快递公司编码 'number' => $logistics_no, // 快递单号 'key' => config("kuaidi100.key"), // 客户授权key 'parameters' => array ( 'callbackurl' => 'http://dev.hospital.applets.igandanyiyuan.com/callback/logistics', // 回调地址 'resultv2' => '1', // 行政区域解析 'phone' => $phone // 手机号 ) ]; $option = [ "json" => [ "schema" => "json", "param" => json_encode($param, JSON_UNESCAPED_UNICODE), ], "verify" => false ]; $path = "https://poll.kuaidi100.com/poll"; $response = $this->client->post($path, $option); if ($response->getStatusCode() != '200') { // 请求失败 throw new BusinessException($response->getBody()->getContents()); } $body = json_decode($response->getBody(), true); dump($body); if (empty($body)) { // 返回值为空 throw new BusinessException(HttpEnumCode::getMessage(HttpEnumCode::SERVER_ERROR)); } if ($body['result_code'] != 0) { // 请求失败 if (!empty($body['result_msg'])) { throw new BusinessException($body['result_msg']); } throw new BusinessException(HttpEnumCode::getMessage(HttpEnumCode::SERVER_ERROR)); } return $body['body']; } }