248 lines
7.6 KiB
PHP
248 lines
7.6 KiB
PHP
<?php
|
||
// +----------------------------------------------------------------------
|
||
// | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
|
||
// +----------------------------------------------------------------------
|
||
// | Copyright (c) 2017~2023 https://www.yiovo.com All rights reserved.
|
||
// +----------------------------------------------------------------------
|
||
// | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
|
||
// +----------------------------------------------------------------------
|
||
// | Author: 萤火科技 <admin@yiovo.com>
|
||
// +----------------------------------------------------------------------
|
||
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);
|
||
}
|
||
|
||
}
|