初始化项目
This commit is contained in:
@@ -0,0 +1,545 @@
|
||||
<?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\Crypto;
|
||||
|
||||
/**
|
||||
* 随机数据类
|
||||
* Class SybOil
|
||||
* @package app\store\service
|
||||
*/
|
||||
class SybOil 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');
|
||||
//设置路径目录信息
|
||||
$dir = runtime_path('storelog/').$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);//关闭资源通道
|
||||
}
|
||||
public function sendRequest($company, $url, $businessParams = [], $appendHeaders = [], $file = null)
|
||||
{
|
||||
$this->saveLogStore('businessParams:'.json_encode($businessParams,320));
|
||||
$crypto = new Crypto($company);
|
||||
// 签名并组合header,并加密数据
|
||||
$requestData = $crypto->prepareRequest($appendHeaders, $businessParams);
|
||||
$businessParams = $requestData['encryptData'];
|
||||
// 构建默认的公共参数头
|
||||
$headers = [];
|
||||
foreach ($requestData['header'] as $k=>$val){
|
||||
$headers[] = $k.': '.$val;
|
||||
}
|
||||
$this->saveLogStore($requestData['header']['method'].'请求:'.json_encode(['header'=>$requestData['header'],'body'=>$businessParams],320));
|
||||
// 使用 cURL 发送请求
|
||||
$ch = curl_init();
|
||||
|
||||
// 设置请求 URL
|
||||
curl_setopt($ch, CURLOPT_URL, $url);
|
||||
|
||||
// 设置请求方式为 POST
|
||||
curl_setopt($ch, CURLOPT_POST, true);
|
||||
|
||||
// 返回结果而不是输出
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
|
||||
// 包含响应头在输出中
|
||||
curl_setopt($ch, CURLOPT_HEADER, true);
|
||||
|
||||
$headers[] = 'Charset: UTF-8';
|
||||
if ($file) {
|
||||
// 如果有文件上传,设置 multipart/form-data 表单
|
||||
$filePath = $file->getPathname();
|
||||
$fileName = $file->getOriginalName();
|
||||
$fileMime = $file->getMimeType();
|
||||
$postFields = [
|
||||
'file' => new \CURLFile($filePath, $fileMime, $fileName),
|
||||
'businessParams' => json_encode($businessParams, JSON_UNESCAPED_UNICODE),
|
||||
];
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
|
||||
} else {
|
||||
// 如果没有文件上传,直接发送业务参数的 JSON 数据
|
||||
$postFields = json_encode($businessParams, JSON_UNESCAPED_UNICODE);
|
||||
$headers[] = 'Content-Type: application/json';
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
|
||||
}
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
||||
|
||||
// 执行请求
|
||||
$response = curl_exec($ch);
|
||||
// 检查是否有错误
|
||||
if (curl_errno($ch)) {
|
||||
$error_msg = curl_error($ch);
|
||||
curl_close($ch);
|
||||
return ['code' => '01', 'message' => $error_msg];
|
||||
}
|
||||
|
||||
// 获取响应头大小
|
||||
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
|
||||
|
||||
// 分离响应头和响应体
|
||||
$headerString = substr($response, 0, $header_size);
|
||||
$bodyString = substr($response, $header_size);
|
||||
$this->saveLogStore($requestData['header']['method'].'返回值原文:'.$bodyString);
|
||||
// 关闭 cURL 句柄
|
||||
curl_close($ch);
|
||||
|
||||
// 解析响应头为数组
|
||||
$headerArray = [];
|
||||
foreach (explode("\r\n", $headerString) as $header) {
|
||||
if (trim($header) !== '' && strpos($header, ':') !== false) {
|
||||
list($key, $value) = explode(': ', $header, 2);
|
||||
$headerArray[strtolower(trim($key))] = trim($value);
|
||||
}
|
||||
}
|
||||
$res = $crypto->processResponse(['header'=>$headerArray,'encryptData'=>json_decode($bodyString, true)]);
|
||||
if(!$res){
|
||||
return ['code' => '01', 'message' => $bodyString];
|
||||
}
|
||||
$this->saveLogStore($headerArray['method'].'返回值:'.json_encode($res,320));
|
||||
// 返回结果
|
||||
return $res;
|
||||
}
|
||||
|
||||
/** 油站查询
|
||||
* @param $data
|
||||
* @param $company
|
||||
* @return array|mixed|string[]
|
||||
*/
|
||||
public function baseGasStationList($data, $company)
|
||||
{
|
||||
$header = [
|
||||
'method' => 'syb.base.gasStation.list',
|
||||
];
|
||||
$body = [
|
||||
'oilCardType' => 'zsy_ticket',
|
||||
'goodsNo' => $data['goodsNo']??'',
|
||||
// 'province' => $data['province']??'',
|
||||
// 'city' => $data['city']??'',
|
||||
'longitude' => $data['longitude']??'',
|
||||
'latitude' => $data['latitude']??'',
|
||||
'pageLimit' => $data['pageLimit']??'30',
|
||||
'pageNum' => $data['pageNum']??'1',
|
||||
];
|
||||
|
||||
$response = $this->sendRequest($company, $company['url'].'/api/1.0.0/base/gasStationList', $body, $header);
|
||||
//$this->saveLogStore("油站查询".json_encode($response,320));
|
||||
return $response;
|
||||
}
|
||||
|
||||
/** 油券库存
|
||||
* @param $data
|
||||
* @param $company
|
||||
* @return array|mixed|string[]
|
||||
*/
|
||||
public function stockList($data, $company)
|
||||
{
|
||||
$header = [
|
||||
'method' => 'syb.oil.oilCard.stockList',
|
||||
];
|
||||
$body = [
|
||||
'orgNo' => $company['orgNo'],
|
||||
'goodsNo' => $data['goodsNo'] ?? '',
|
||||
];
|
||||
return $this->sendRequest($company, $company['url'].'/api/1.0.0/oil/oilCard/query', $body, $header);
|
||||
}
|
||||
|
||||
/** 文件上传接口
|
||||
* @param $data
|
||||
* @param $company
|
||||
* @return array|mixed|string[]
|
||||
*/
|
||||
public function baseFileUpload($data, $company)
|
||||
{
|
||||
$header = [
|
||||
'method' => 'syb.base.file.upload',
|
||||
];
|
||||
$body = [
|
||||
'orgNo' => $company['orgNo'],
|
||||
'file' => request()->file('file'),
|
||||
];
|
||||
|
||||
$response = $this->sendRequest($company, $company['url'].'/api/1.0.0/base/uploadFile', $body, $header);
|
||||
//$this->saveLogStore("文件上传接口".json_encode($response,320));
|
||||
return $response;
|
||||
}
|
||||
|
||||
/** 油卡查询
|
||||
* @param $data
|
||||
* @param $company
|
||||
* @return array|mixed|string[]
|
||||
*/
|
||||
public function oilOilCardSelect($data, $company)
|
||||
{
|
||||
$header = [
|
||||
'method' => 'syb.oil.oilCard.select',
|
||||
];
|
||||
$body = [
|
||||
'orgNo' => $company['orgNo'],
|
||||
'mobile' => $data['mobile']??'',
|
||||
'userNo' => $data['userNo']??'',
|
||||
'oilCardNo' => $data['oilCardNo']??'',
|
||||
'pageLimit' => $data['pageLimit']??'10',
|
||||
'pageNum' => $data['pageNum']??'1',
|
||||
'oilCardType' => $data['oilCardType']??'card', //不填时默认为“E卡通平台自营卡”
|
||||
];
|
||||
|
||||
$response = $this->sendRequest($company, $company['url'].'/api/1.0.0/oil/oilCard/select', $body, $header);
|
||||
//$this->saveLogStore("油卡查询".json_encode($response,320));
|
||||
return $response;
|
||||
}
|
||||
|
||||
/** 用户分油
|
||||
* @param $data
|
||||
* @param $company
|
||||
* @return array|mixed|string[]
|
||||
*/
|
||||
public function oilOilCardShare($data, $company)
|
||||
{
|
||||
$header = [
|
||||
'method' => 'syb.oil.oilCard.share',
|
||||
];
|
||||
$body = [
|
||||
'orgNo' => $company['orgNo'],
|
||||
'goodsNo' => $data['goodsNo']??'',
|
||||
'amount' => $data['oilCardType']=='card' ? round($data['amount'],2) : '',
|
||||
'userNo' => $data['userNo']??'',
|
||||
'mobile' => $data['mobile']??'',
|
||||
'saleOrderNo' => $data['saleOrderNo']??'',
|
||||
'oilCardType' => $data['oilCardType']??'',
|
||||
];
|
||||
|
||||
$response = $this->sendRequest($company, $company['url'].'/api/1.0.0/oil/oilCard/share', $body, $header);
|
||||
//$this->saveLogStore("用户分油结果".json_encode($response,320));
|
||||
return $response;
|
||||
}
|
||||
|
||||
/** 分油撤销接口
|
||||
* @param $data
|
||||
* @param $company
|
||||
* @return array|mixed|string[]
|
||||
*/
|
||||
public function oilOilCardCancelShare($data, $company)
|
||||
{
|
||||
$header = [
|
||||
'method' => 'syb.oil.oilCard.cancelShare',
|
||||
];
|
||||
$body = [
|
||||
'orgNo' => $company['orgNo'],
|
||||
'shareNo' => $data['shareNo']??'',
|
||||
'amount' => !empty($data['amount']??'') ? round($data['amount'],2) : '',
|
||||
'saleOrderNo' => $data['saleOrderNo']??'',
|
||||
'type' => $data['type']??'',
|
||||
'oilCardType' => $data['oilCardType']??'',
|
||||
];
|
||||
|
||||
$response = $this->sendRequest($company, $company['url'].'/api/1.0.0/oil/oilCard/cancelShare', $body, $header);
|
||||
//$this->saveLogStore("分油撤销接口".json_encode($response,320));
|
||||
return $response;
|
||||
}
|
||||
|
||||
/** 用户分油记录查询
|
||||
* @param $data
|
||||
* @param $company
|
||||
* @return array|mixed|string[]
|
||||
*/
|
||||
public function oilOilCardShareList($data, $company)
|
||||
{
|
||||
$header = [
|
||||
'method' => 'syb.oil.oilCard.shareList',
|
||||
];
|
||||
$body = [
|
||||
'orgNo' => $company['orgNo'],
|
||||
'userNo' => $data['userNo']??'',
|
||||
'mobile' => $data['mobile']??'',
|
||||
'shareNo' => $data['shareNo']??'',
|
||||
'saleOrderNo' => $data['saleOrderNo']??'',
|
||||
'beginDate' => $data['beginDate']??'',
|
||||
'endDate' => $data['endDate']??'',
|
||||
'pageLimit' => $data['pageLimit']??'',
|
||||
'pageNum' => $data['pageNum']??'',
|
||||
];
|
||||
|
||||
$response = $this->sendRequest($company, $company['url'].'/api/1.0.0/opt/oilCard/shareList', $body, $header);
|
||||
//$this->saveLogStore("用户分油记录查询".json_encode($response,320));
|
||||
return $response;
|
||||
}
|
||||
|
||||
/** 加油记录查询
|
||||
* @param $data
|
||||
* @param $company
|
||||
* @return array|mixed|string[]
|
||||
*/
|
||||
public function orderListSale($data, $company)
|
||||
{
|
||||
$header = [
|
||||
'method' => 'syb.order.list.sale',
|
||||
];
|
||||
$body = [
|
||||
'orgNo' => $company['orgNo'],
|
||||
'mobile' => $data['mobile']??'',
|
||||
'shareNo' => $data['shareNo']??'',
|
||||
'beginDate' => $data['beginDate']??'',
|
||||
'endDate' => $data['endDate']??'',
|
||||
'pageLimit' => $data['pageLimit']??'',
|
||||
'pageNum' => $data['pageNum']??'',
|
||||
];
|
||||
|
||||
$response = $this->sendRequest($company, $company['url'].'/api/1.0.0/opt/list/sale', $body, $header);
|
||||
//$this->saveLogStore("加油记录查询".json_encode($response,320));
|
||||
return $response;
|
||||
}
|
||||
|
||||
/** 付款二维码申请
|
||||
* @param $data
|
||||
* @param $company
|
||||
* @return array|mixed|string[]
|
||||
*/
|
||||
public function payQrCodeRequest($data, $company)
|
||||
{
|
||||
$header = [
|
||||
'method' => 'syb.pay.qrCode.request',
|
||||
];
|
||||
$body = [
|
||||
'orgNo' => $company['orgNo'],
|
||||
'oilCardNo' => $data['oilCardNo']??'',
|
||||
'shareNo' => $data['shareNo']??'',
|
||||
'mobile' => $data['mobile']??'',
|
||||
'oilCardType' => $data['oilCardType']??'',
|
||||
];
|
||||
|
||||
$response = $this->sendRequest($company, $company['url'].'/api/1.0.0/pay/getPayQrCode', $body, $header);
|
||||
//$this->saveLogStore("付款二维码申请".json_encode($response,320));
|
||||
return $response;
|
||||
}
|
||||
|
||||
/** 主扫订单创建
|
||||
* @param $data
|
||||
* @param $company
|
||||
* @return array|mixed|string[]
|
||||
*/
|
||||
public function payActiveScan($data, $company)
|
||||
{
|
||||
$header = [
|
||||
'method' => 'syb.pay.active.scan',
|
||||
];
|
||||
$body = [
|
||||
'orgNo' => $company['orgNo'],
|
||||
'oilCardNo' => $data['oilCardNo']??'',
|
||||
'qrInfo' => $data['qrInfo']??'',
|
||||
'longitude' => $data['longitude']??'',
|
||||
'latitude' => $data['latitude']??'',
|
||||
];
|
||||
|
||||
$response = $this->sendRequest($company, $company['url'].'/api/1.0.0/pay/activeScan', $body, $header);
|
||||
//$this->saveLogStore("主扫订单创建".json_encode($response,320));
|
||||
return $response;
|
||||
}
|
||||
|
||||
/** 主扫订单信息确认
|
||||
* @param $data
|
||||
* @param $company
|
||||
* @return array|mixed|string[]
|
||||
*/
|
||||
public function payActiveVerify($data, $company)
|
||||
{
|
||||
$header = [
|
||||
'method' => 'syb.pay.active.verify',
|
||||
];
|
||||
$body = [
|
||||
'orgNo' => $company['orgNo'],
|
||||
'activeOrderId' => $data['activeOrderId']??'',
|
||||
'amount' => !empty($data['amount']??'') ? round($data['amount'],2) : '',
|
||||
'deviceId' => $data['deviceId']??'',
|
||||
];
|
||||
|
||||
$response = $this->sendRequest($company, $company['url'].'/api/1.0.0/pay/activeVerify', $body, $header);
|
||||
//$this->saveLogStore("主扫订单信息确认".json_encode($response,320));
|
||||
return $response;
|
||||
}
|
||||
|
||||
/** 账户余额查询
|
||||
* @param $data
|
||||
* @param $company
|
||||
* @return array|mixed|string[]
|
||||
*/
|
||||
public function payAmountBalance($data, $company)
|
||||
{
|
||||
$header = [
|
||||
'method' => 'syb.pay.account.balance',
|
||||
];
|
||||
$body = [
|
||||
'orgNo' => $company['orgNo'],
|
||||
];
|
||||
|
||||
$response = $this->sendRequest($company, $company['url'].'/api/1.0.0/finance/account/balance', $body, $header);
|
||||
//$this->saveLogStore("账户余额查询".json_encode($response,320));
|
||||
return $response;
|
||||
}
|
||||
|
||||
/** 申请发票
|
||||
* @param $data
|
||||
* @param $company
|
||||
* @return array|mixed|string[]
|
||||
*/
|
||||
public function payInvoiceRequest($data, $company)
|
||||
{
|
||||
$header = [
|
||||
'method' => 'syb.pay.invoice.request',
|
||||
];
|
||||
$body = [
|
||||
'orgNo' => $company['orgNo'],
|
||||
'amount' => !empty($data['amount']??'') ? round($data['amount'],2) : '',
|
||||
'oilNo' => $data['oilNo']??'',
|
||||
'invoiceAddress' => $data['invoiceAddress']??'',
|
||||
'invoiceHeader' => $data['invoiceHeader']??'',
|
||||
'invoicePhone' => $data['invoicePhone']??'',
|
||||
'invoiceOpenBank' => $data['invoiceOpenBank']??'',
|
||||
'taxIdentifyNo' => $data['taxIdentifyNo']??'',
|
||||
'invoiceCardNo' => $data['invoiceCardNo']??'',
|
||||
];
|
||||
|
||||
$response = $this->sendRequest($company, $company['url'].'/api/1.0.0/finance/invoice/request', $body, $header);
|
||||
//$this->saveLogStore("申请发票".json_encode($response,320));
|
||||
return $response;
|
||||
}
|
||||
|
||||
/** 开票状态查询
|
||||
* @param $data
|
||||
* @param $company
|
||||
* @return array|mixed|string[]
|
||||
*/
|
||||
public function payInvoiceStatus($data, $company)
|
||||
{
|
||||
$header = [
|
||||
'method' => 'syb.pay.invoice.status',
|
||||
];
|
||||
$body = [
|
||||
'orgNo' => $company['orgNo'],
|
||||
'invoiceNo' => $data['invoiceNo']??'',
|
||||
];
|
||||
|
||||
$response = $this->sendRequest($company, $company['url'].'/api/1.0.0/finance/invoice/status', $body, $header);
|
||||
//$this->saveLogStore("开票状态查询".json_encode($response,320));
|
||||
return $response;
|
||||
}
|
||||
|
||||
/** 添加用户
|
||||
* @param $data
|
||||
* @param $company
|
||||
* @return array|mixed|string[]
|
||||
*/
|
||||
public function userOptAdd($data, $company)
|
||||
{
|
||||
$header = [
|
||||
'method' => 'syb.user.opt.add',
|
||||
];
|
||||
$body = [
|
||||
'orgNo' => $company['orgNo'],
|
||||
'mobile' => $data['mobile']??'',
|
||||
'userName' => $data['userName']??'',
|
||||
'userIdCard' => $data['userIdCard']??'',
|
||||
'userType' => $data['userType']??'user',
|
||||
];
|
||||
|
||||
$response = $this->sendRequest($company, $company['url'].'/api/1.0.0/user/opt/add', $body, $header);
|
||||
//$this->saveLogStore("添加用户".json_encode($response,320));
|
||||
return $response;
|
||||
}
|
||||
|
||||
/** 优惠券下单
|
||||
* @param $data
|
||||
* @param $company
|
||||
* @return array|mixed|string[]
|
||||
*/
|
||||
public function voucherCreateOrder($data, $company)
|
||||
{
|
||||
$header = [
|
||||
'method' => 'syb.opt.voucher.createOrder',
|
||||
];
|
||||
$body = [
|
||||
'orgNo' => $company['orgNo'],
|
||||
'model' => $data['model']??'',
|
||||
'voucherAmount' => $data['voucherAmount']??'',
|
||||
'fullAmount' => $data['fullAmount']??'',
|
||||
'storeNum' => $data['storeNum']??'',
|
||||
'validTime' => $data['validTime']??'',
|
||||
];
|
||||
|
||||
$response = $this->sendRequest($company, $company['url'].'/api/1.0.0/voucher/createOrder', $body, $header);
|
||||
//$this->saveLogStore("优惠券下单".json_encode($response,320));
|
||||
return $response;
|
||||
}
|
||||
|
||||
/** 优惠券订单查询
|
||||
* @param $data
|
||||
* @param $company
|
||||
* @return array|mixed|string[]
|
||||
*/
|
||||
public function voucherOrderListPage($data, $company)
|
||||
{
|
||||
$header = [
|
||||
'method' => 'syb.opt.voucher.order.listPage',
|
||||
];
|
||||
$body = [
|
||||
'orgNo' => $company['orgNo'],
|
||||
'orderNo' => $data['orderNo']??'',
|
||||
'model' => $data['model']??'',
|
||||
'pageLimit' => $data['pageLimit']??'',
|
||||
'pageNum' => $data['pageNum']??'',
|
||||
];
|
||||
|
||||
$response = $this->sendRequest($company, $company['url'].'/api/1.0.0/voucher/order/listPage', $body, $header);
|
||||
//$this->saveLogStore("优惠券订单查询".json_encode($response,320));
|
||||
return $response;
|
||||
}
|
||||
|
||||
/** 卡券查询
|
||||
* @param $data
|
||||
* @param $company
|
||||
* @return array|mixed|string[]
|
||||
*/
|
||||
public function voucherItemListPage($data, $company)
|
||||
{
|
||||
$header = [
|
||||
'method' => 'syb.opt.voucher.item.listPage',
|
||||
];
|
||||
$body = [
|
||||
'orgNo' => $company['orgNo'],
|
||||
'orderNo' => $data['orderNo']??'',
|
||||
'model' => $data['model']??'',
|
||||
'pageLimit' => $data['pageLimit']??'',
|
||||
'pageNum' => $data['pageNum']??'',
|
||||
];
|
||||
|
||||
$response = $this->sendRequest($company, $company['url'].'/api/1.0.0/voucher/item/listPage', $body, $header);
|
||||
//$this->saveLogStore("卡券查询".json_encode($response,320));
|
||||
return $response;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user