class Feieyun{    /**     * @var string     */    protected $host = 'http://api.feieyun.cn/Api/Open/';    /**     * @var     */    protected $config=[        'username'=>'',        'uKey'=>'',    ];    /**     * Feieyun constructor.     * @param $config     */    public function __construct(array $config)    {        $this->config = array_merge($this->config,$config);    }    /**     * 增加打印机     * @return mixed     * @throws \GuzzleHttp\Exception\GuzzleException     */    public function add(array $private_params = [])    {        // TODO: Implement add() method.        return $this->request($private_params, 'Open_printerAddlist');    }    /**     * 更新打印机     * @param array $private_params     * @return mixed     * @throws \GuzzleHttp\Exception\GuzzleException     */    public function update($private_params = [])    {        // TODO: Implement update() method.        return $this->request($private_params, 'Open_printerEdit');    }    /**     * 删除打印机     * @param array $private_params     * @return mixed     * @throws \GuzzleHttp\Exception\GuzzleException     */    public function delete($private_params = [])    {        // TODO: Implement delete() method.        return $this->request($private_params, 'Open_printerDelList');    }    /**     * 清空待打印队列     * @param array $private_params     * @return mixed     * @throws \GuzzleHttp\Exception\GuzzleException     */    public function clear($private_params = [])    {        // TODO: Implement clear() method.        return $this->request($private_params, 'Open_delPrinterSqs');    }    /**     * 打印机状态     * @param array $private_params     * @return mixed     * @throws \GuzzleHttp\Exception\GuzzleException     */    public function status($private_params = [])    {        // TODO: Implement status() method.        return $this->request($private_params, 'Open_queryPrinterStatus');    }    /**     * @param array $private_params     * @param string $type     * @return string     * @throws \GuzzleHttp\Exception\GuzzleException     */    public function outputOrder($private_params = [], $type = '')    {        if ($type == 'lable')            return $this->outputLabelMsg($private_params);        return $this->outputMsg($private_params);    }    /**     * 打印订单     * @param array $private_params     * @return string     * @throws \GuzzleHttp\Exception\GuzzleException     */    public function outputMsg($private_params = [])    {        return $this->request($private_params, 'Open_printMsg');    }    /**     * 标签机打印订单     * @param array $private_params     * @return string     * @throws \GuzzleHttp\Exception\GuzzleException     */    public function outputLabelMsg($private_params = [])    {        return $this->request($private_params, 'Open_printLabelMsg');    }    /**     * 查问订单是否打印胜利     * @param array $private_params     * @return string     * @throws \GuzzleHttp\Exception\GuzzleException     */    public function orderStatus($private_params = [])    {        return $this->request($private_params, 'Open_queryOrderState');    }    /**     * 查问指定打印机某天的订单统计数     * @param array $private_params     * @return string     * @throws \GuzzleHttp\Exception\GuzzleException     */    public function orderCount($private_params = [])    {        return $this->request($private_params, 'Open_queryOrderState');    }    /**     * @param array $private_params     * @param string $apiname     * @return string     * @throws \GuzzleHttp\Exception\GuzzleException     */    public function request(array $private_params, string $apiname)    {        $public_params = [            'user' => $this->config['username'],            'stime' => $this->getTime(),            'sig' => $this->getSig(),            'apiname' => $apiname,        ];        $params = array_filter(array_merge($public_params, $private_params));        return $this->post($this->config['host'] ?? $this->host, $params);    }    /**     * @param string $url     * @param array $params     * @param array $headers     * @return string     * @throws \GuzzleHttp\Exception\GuzzleException     */    protected function post(string $url, array $params = [], array $headers = [])    {        $resp = (new \GuzzleHttp\Client())->request('post', $url, [            'headers' => $headers,            'form_params' => $params,        ]);;        return $resp->getBody()->getContents();    }    /**     * @return string     */    protected function getSig()    {        return sha1($this->config['username'] . $this->config['uKey'] . $this->getTime());    }    /**     * @return int     */    protected function getTime()    {        return time();    }}