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)];
- }
- }
|