| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 | <?namespace App\Service;use Illuminate\Support\Facades\Log;class WDTService extends Service{    private $appSecret = "";    private $apiParas = [];    private $config = [];    public function __construct($wdt = 0)    {        $config = config("wdt")[$wdt] ?? [];        if(empty($config["sid"])) throw new \Exception("旺店通sid不能为空");        if(empty($config["appKey"])) throw new \Exception("旺店通appKey不能为空");        if(empty($config["appSecret"])) throw new \Exception("旺店通appSecret不能为空");        $this->config = $config;        $this->appSecret = $config['appSecret'];        $this->apiParas = [            'sid' => $config['sid'],            'appkey' => $config['appKey'],            'timestamp' => time(),        ];    }    private function makeSign(&$apiParas, $appSecret){        $sign = md5($this->packData($apiParas) . $appSecret);        $apiParas['sign'] = $sign;    }    private function packData(&$req)    {        ksort($req);        $arr = array();        foreach($req as $key => $val)        {            if($key == 'sign') continue;            if(count($arr))                $arr[] = ';';            $arr[] = sprintf("%02d", iconv_strlen($key, 'UTF-8'));            $arr[] = '-';            $arr[] = $key;            $arr[] = ':';            $arr[] = sprintf("%04d", iconv_strlen($val, 'UTF-8'));            $arr[] = '-';            $arr[] = $val;        }        return implode('', $arr);    }    private function putMultiApiParam($params)    {        return array_merge($this->apiParas,$params);    }    private function organizationParam($data){        $params = $this->putMultiApiParam($data);        $this->makeSign($params, $this->appSecret);        $postData = http_build_query($params,'','&');        return $postData;    }    public function getOrderListAuto($data){        $timeStamp = time();        $data['start_time'] = date("Y-m-d H:i:s", $timeStamp - 60 * 60);        $data['end_time'] = date("Y-m-d H:i:s", $timeStamp);        $postData = $this->organizationParam($data);        list($status, $msg) = $this->post_wdt_helper($this->config['order_query'], $postData);        dd($status, $msg);    }    //发送请求    public function post_wdt_helper($url, $data, $timeout = 20){        $header = array("Content-Type: application/x-www-form-urlencoded");        Log::channel('apiLog')->info('旺店通POST', ["api" => $url , "param" => $data ,"header" => $header]);        $ch = curl_init();        curl_setopt($ch, CURLOPT_URL, $url);        curl_setopt($ch,  CURLOPT_RETURNTRANSFER, true);        curl_setopt($ch, CURLOPT_ENCODING, '');        curl_setopt($ch, CURLOPT_POST, 1);        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);        curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);        if(! is_null($data)) curl_setopt($ch, CURLOPT_POSTFIELDS, $data);        $r = curl_exec($ch);        if ($r === false) {            // 获取错误号            $errorNumber = curl_errno($ch);            // 获取错误信息            $errorMessage = curl_error($ch);            $message = "cURL Error #{$errorNumber}: {$errorMessage}";            Log::channel('apiLog')->info('旺店通POST结果', ["message" => $message]);            return [false, "cURL Error #{$errorNumber}: {$errorMessage}"];        }        curl_close($ch);        Log::channel('apiLog')->info('旺店通POST结果', ["message" => json_decode($r, true)]);        return [true, json_decode($r, true)];    }}
 |