// +---------------------------------------------------------------------- declare (strict_types=1); namespace app\common\service; use app\common\library\helper; use app\common\crypto\Idingju; /** * 随机数据类 * Class SybOil * @package app\store\service */ class IdingjuOil extends BaseService { public function mk_dir_store($dir, $mode = 0777) { if (is_dir($dir) || @mkdir($dir,$mode)) return true; if (!$this->mk_dir_store(dirname($dir),$mode)) return false; return @mkdir($dir,$mode); } /** 记录日志 * @param $data */ public function saveLogStore($data){ $years = date('Ym'); $day = date('Ymd'); //设置路径目录信息(store_log_path 保证 CLI / api / store 各进程写同一处,见 app/common.php) $dir = store_log_path().$years.'/'.$day; //目录不存在就创建 $this->mk_dir_store($dir); $url = $dir.'/'.date('YmdH').'.txt'; $fp = @fopen($url,"a");//打开文件资源通道 不存在则自动创建 @fwrite($fp,date("Y-m-d H:i:s ").var_export($data,true)."\r\n");//写入文件 @fclose($fp);//关闭资源通道 } /** 油站查询 * @param $data * @param $company * @return array|mixed|string[] */ public function baseGasStationList($data, $company) { $tool = new Idingju($company); // 1,获取Token $accessToken = $tool->getToken($company['orgNo']); $url = '/api/cnpcbp/stations'; $api = $tool->prefixUrl.$url; // 2,组装参数 $params = [ 'lng' => $data['longitude']??'', 'lat' => $data['latitude']??'', 'page' => $data['pageNum']??'1', ]; // 3,获取签名 $timestamp = time(); $get = [ 'access_token' => $accessToken, 'timestamp' => $timestamp, 'signature' => $tool->signature($params,$accessToken,$timestamp,$url), // 获取签名 ]; $httpUrl = $api.'?'.http_build_query($get); // 拼接url $header = [ 'Content-Type: application/json', ]; // 4,调用业务接口 $json = json_encode($params); $ret = $tool->request($httpUrl,$json,'post',$header); $this->saveLogStore("油站查询".$ret); return json_decode($ret, true); } /** 油券库存 * @param $data * @param $company * @return array|mixed|string[] */ public function stockList($data, $company) { $tool = new Idingju($company); // 1,获取Token $accessToken = $tool->getToken($company['orgNo']); $url = '/api/cnpcbp/queryStock'; $api = $tool->prefixUrl.$url; // 2,组装参数 $params = [ 'shortname' => $data['goodsNo'] ?? '', ]; // 3,获取签名 $timestamp = time(); $get = [ 'access_token' => $accessToken, 'timestamp' => $timestamp, 'signature' => $tool->signature($params,$accessToken,$timestamp,$url), // 获取签名 ]; $httpUrl = $api.'?'.http_build_query($get); // 拼接url $header = [ 'Content-Type: application/json', ]; // 4,调用业务接口 $json = json_encode($params); $ret = $tool->request($httpUrl,$json,'post',$header); $this->saveLogStore("库存查询【".$data['goodsNo']."】".json_encode(json_decode($ret, true),320)); return json_decode($ret, true); } /** 油卡查询 * @param $data * @param $company * @return array|mixed|string[] */ public function oilOilCardSelect($data, $company) { $tool = new Idingju($company); // 1,获取Token $accessToken = $tool->getToken($company['orgNo']); $url = '/api/cnpcbp/detail'; $api = $tool->prefixUrl.$url; // 2,组装参数 $params = [ 'out_order_id' => '', ]; // 3,获取签名 $timestamp = time(); $get = [ 'access_token' => $accessToken, 'timestamp' => $timestamp, 'signature' => $tool->signature($params,$accessToken,$timestamp,$url), // 获取签名 ]; $httpUrl = $api.'?'.http_build_query($get); // 拼接url $header = [ 'Content-Type: application/json', ]; // 4,调用业务接口 $json = json_encode($params); $ret = $tool->request($httpUrl,$json,'post',$header); $this->saveLogStore("订单查询".$ret); return json_decode($ret, true); } /** 用户分油 * @param $data * @param $company * @return array|mixed|string[] */ public function oilOilCardShare($data, $company) { $tool = new Idingju($company); // 1,获取Token $accessToken = $tool->getToken($company['orgNo']); $url = '/api/cnpcbp/order'; $api = $tool->prefixUrl.$url; // 2,组装参数 $params = [ 'mobile' => $data['mobile']??'', 'out_order_id' => $data['saleOrderNo'], 'shortname' => $data['goodsNo']??'', 'notify_url' => $data['notify_url']??(base_url() . 'oil.php'), 'use_notify_url' => $data['use_notify_url']??(base_url() . 'oiluse.php'), ]; // 3,获取签名 $timestamp = time(); $get = [ 'access_token' => $accessToken, 'timestamp' => $timestamp, 'signature' => $tool->signature($params,$accessToken,$timestamp,$url), // 获取签名 ]; $httpUrl = $api.'?'.http_build_query($get); // 拼接url $header = [ 'Content-Type: application/json', ]; // 4,调用业务接口 $json = json_encode($params); $ret = $tool->request($httpUrl,$json,'post',$header); $this->saveLogStore("分油下单".$ret); return json_decode($ret, true); } /** 动态核销URL * @param $data * @param $company * @return array|mixed|string[] */ public function payQrCodeRequest($data, $company) { $tool = new Idingju($company); // 1,获取Token $accessToken = $tool->getToken($company['orgNo']); $url = '/api/cnpcbp/getUseCode'; $api = $tool->prefixUrl.$url; // 2,组装参数 $params = [ 'out_order_id' => $data['order_no'], ]; // 3,获取签名 $timestamp = time(); $get = [ 'access_token' => $accessToken, 'timestamp' => $timestamp, 'signature' => $tool->signature($params,$accessToken,$timestamp,$url), // 获取签名 ]; $httpUrl = $api.'?'.http_build_query($get); // 拼接url $header = [ 'Content-Type: application/json', ]; // 4,调用业务接口 $json = json_encode($params); $ret = $tool->request($httpUrl,$json,'post',$header); $this->saveLogStore("动态核销URL".$ret); return json_decode($ret, true); } }