添加网站文件

This commit is contained in:
2025-12-22 13:59:40 +08:00
commit 117aaf83d1
19468 changed files with 2111999 additions and 0 deletions

View File

@@ -0,0 +1,917 @@
<?php
namespace app\api\controller;
use app\api\logic\OrderLogic;
use app\common\model\Client_;
use think\Db;
use app\common\server\WeChatServer;
use app\common\model\NoticeSetting;
use EasyWeChat\Factory;
/**
* 订单
* Class Order
* @package app\api\controller
*/
class Order extends ApiBase
{
public $like_not_need_login = ['wxmassin', 'lists', 'appInit', 'downLine', 'share', 'config','pcLists','getpege','ttorder'];
//抖音订单回调
public function ttorder(){
$ttPay = new ttPay();
$res = $ttPay->run('notify');
}
//订单列表
public function lists()
{
$type = $this->request->get('type', 'all');
$order_list = OrderLogic::getOrderList($this->user_id, $type, $this->page_no, $this->page_size);
$this->_success('获取成功', $order_list);
}
public function stafflist()
{
$type = $this->request->get('type', 'all');
$order_list = OrderLogic::stafflist($this->user_id, $type, $this->page_no, $this->page_size);
$this->_success('获取成功', $order_list);
}
//员工订单详情页面
public function numberlist()
{
$type = $this->request->get('type', 'all');
$tiem= $this->request->get();
if(isset($tiem['id'])){
$order_list = OrderLogic::timelist($this->user_id, $type,$tiem,$this->page_no, $this->page_size);
$this->_success('获取成功', $order_list);
}else{
$order_list = OrderLogic::numberlist($this->user_id, $type, $this->page_no, $this->page_size);
$this->_success('获取成功', $order_list);
}
}
//员工服务订单列表
//下单接口
public function buy()
{
$post = $this->request->post();
$post['user_id'] = $this->user_id;
$post['client'] = $this->client;
// $openid = 'oehgp4zzyK34d3TgnXD1ytpeNRjI';
// //发送下单成功通知
// $template = [
// 'touser'=>$openid,
// 'template_id'=>'qTmpP2ZnGMpgAFgNsmcVMfTjCeSE7GXEQQaFTUERAuU',
// 'page'=>'',//点击模板消息 打开小程序页面
// 'data'=>[
// 'thing2'=>['value'=>'擦玻璃服务'],
// 'amount8'=>['value'=>'金额2元'],
// 'time10'=>['value'=>date('Y-m-d H:i',time())]
// ]
// ];
// $r = send_mini_template($template);
$check = $this->validate($post, 'app\api\validate\Order.buy');
if (true !== $check) {
$this->_error($check);
}
$action = $post['action'];
$info = OrderLogic::info($post, $this->user_id);
if ($info['code'] == 0) {
$this->_error($info['msg']);
}
if ($action == 'info') {
$this->_success('', $info['data']);
}
if ($this->client != Client_::pc && empty($post['pay_way'])) {
$this->_error('请联系管理员配置支付方式');
}
$order = OrderLogic::add($this->user_id, $info['data'], $post);
return $order;
}
//订单详情
public function detail()
{
$order_id = $this->request->get('id');
if (!$order_id){
$this->_error('请选择订单');
}
$order_detail = OrderLogic::getOrderDetail($order_id, $this->user_id);
if (!$order_detail) {
$this->_error('订单不存在了!', '');
}
$this->_success('获取成功', $order_detail);
}
//取消订单
public function cancel()
{
$order_id = $this->request->post('id');
if (empty($order_id)) {
$this->_error('参数错误');
}
return OrderLogic::cancel($order_id, $this->user_id);
}
//删除订单
public function del()
{
$order_id = $this->request->post('id');
if (empty($order_id)) {
$this->_error('参数错误');
}
return OrderLogic::del($order_id, $this->user_id);
}
//确认订单
public function confirm()
{
$order_id = $this->request->post('id');
if (empty($order_id)) {
$this->_error('参数错误');
}
return OrderLogic::confirm($order_id, $this->user_id);
}
public function orderTraces()
{
$order_id = $this->request->get('id');
$tips = '参数错误';
if ($order_id) {
$traces = OrderLogic::orderTraces($order_id, $this->user_id);
if ($traces) {
$this->_success('获取成功', $traces);
}
$tips = '暂无物流信息';
}
$this->_error($tips);
}
public function Get_Chinese_WeekDay($Join_Date)
{
$WeekDay = date('w', strtotime($Join_Date));
$WeekList = array('日', '一', '二', '三', '四', '五', '六');
return '星期' . $WeekList[$WeekDay];
}
public function get3day(){
$goods_id = $this->request->post('id');
$order=Db::name('order')->where('id',$goods_id)->find(); //获取到订单的信息
$goods=Db::name('goods')->where('id',$order['goods_id'])->find(); //获取到商品的信息
// $staff=Db::name('staff')->where('goods_id',$goods['brand_id'])->select(); //查询到所有的保洁师傅
// dump($staff);die;
$days = [];
$current = date('Y-m-d');
for($i = 1 ; $i <= 3 ;$i++){
$current = date("Y-m-d", strtotime($current . "+1 day"));
$days[] = $current;
}
$data = [];
foreach ($days as $k=>$v){
$start = strtotime($v); //开始时间
$end = strtotime($v.' 23:59:59'); //结束时间
//统计这个时间请假的用户的数据
$orders=Db::name('order_exe')->where('addtime',1)->where('autotime','>=',$start)->where('autotime','<=',$end)->whereNotNull('staff_id')->field('staff_id')->group('staff_id')->select(); //查询有订单的保洁师傅
$oneDimensionalArray = array_column($orders, 'staff_id'); // 根据自己的表格字段名修改'字段名'部分
$lent=Db::name('leave')->where('addtime',1)->where('time','>=',$start)->where('time','<=',$end)->whereNotNull('user_id')->field('user_id')->group('user_id')->select();
$lentuser = array_column($lent,'user_id');
//判断上午
$numbersw=Db::name('staff')
->where('onwork',1)
->where('goods_id',$goods['brand_id'])
->whereNotIn('id',$oneDimensionalArray) // $array为要比较的数组
->whereNotIn('id',$lentuser) // $array为要比较的数组
->count(); //获取到请假的人数
$order_numbersw=Db::name('order_exe')->where('autotime','>=',$start)->where('autotime','<=',$end)->where('staff_id',0)->where('addtime',1)->count();// 没有派单的保洁师
$numbersw=$numbersw-$order_numbersw;
//统计这个时间请假的用户的数据
$ordersxw=Db::name('order_exe')->where('addtime',2)->where('autotime','>=',$start)->where('autotime','<=',$end)->whereNotNull('staff_id')->field('staff_id')->group('staff_id')->select(); //查询有订单的保洁师傅
$oneDimensionalArrayxw= array_column($ordersxw, 'staff_id'); // 根据自己的表格字段名修改'字段名'部分
$lentxw=Db::name('leave')->where('addtime',2)->where('time','>=',$start)->where('time','<=',$end)->whereNotNull('user_id')->field('user_id')->group('user_id')->select();
$lentuserxw = array_column($lentxw,'user_id');
//判断下午
$numberxw=Db::name('staff')
->where('onwork',1)
->whereNotIn('id',$oneDimensionalArrayxw) // $array为要比较的数组
->where('goods_id',$goods['brand_id'])
->whereNotIn('id',$lentuserxw) // $array为要比较的数组
->count(); //获取到请假的人数
$order_numberxw=Db::name('order_exe')->where('autotime','>=',$start)->where('autotime','<=',$end)->where('staff_id',0)->where('addtime',2)->count();// 没有派单的保洁师
$numberxw=$numberxw-$order_numberxw;
if($numbersw>0){
$coied=false;
} else{
$coied=true;
}
if($numberxw>0){
$coiedxw=false;
} else{
$coiedxw=true;
}
$data[] = [
'date'=>$v,
'week'=>$this->Get_Chinese_WeekDay($v),
'hourLists'=>[
['hour'=>"上午",'select'=>false,'disabled'=>$coied,'selectDay'=>$v,'staffnumber'=>$numbersw],
['hour'=>'下午','select'=>false,'disabled'=>$coiedxw,'selectDay'=>$v,'staffnumber'=>$numberxw],
]
];
}
$data[0]['select'] = true;
$this->_success('获取成功', $data);
}
public function getday(){
$post = $this->request->post();
$order=Db::name('order')->where('id',$post['data']['id'])->find(); //获取到订单的信息
$goods=Db::name('goods')->where('id',$order['goods_id'])->find(); //获取到商品的信息
$day = $post['data']['day'];
$start = strtotime($day);
$end = strtotime($day.' 23:59:59');
//统计这个时间请假的用户的数据
$orders=Db::name('order_exe')->where('addtime',1)->where('autotime','>=',$start)->where('autotime','<=',$end)->whereNotNull('staff_id')->field('staff_id')->group('staff_id')->select(); //查询有订单的保洁师傅
$oneDimensionalArray = array_column($orders, 'staff_id'); // 根据自己的表格字段名修改'字段名'部分
$lent=Db::name('leave')->where('addtime',1)->where('time','>=',$start)->where('time','<=',$end)->whereNotNull('user_id')->field('user_id')->group('user_id')->select();
$lentuser = array_column($lent,'user_id');
$numbersw=Db::name('staff')
->where('onwork',1)
->where('goods_id',$goods['brand_id'])
->whereNotIn('id',$oneDimensionalArray) // $array为要比较的数组
->whereNotIn('id',$lentuser) // $array为要比较的数组
->count();
$order_numbersw=Db::name('order_exe')->where('autotime','>=',$start)->where('autotime','<=',$end)->where('staff_id',0)->where('addtime',1)->count();// 没有派单的保洁师
$numbersw=$numbersw-$order_numbersw;
//统计这个时间请假的用户的数据
$ordersxw=Db::name('order_exe')->where('addtime',2)->where('autotime','>=',$start)->where('autotime','<=',$end)->whereNotNull('staff_id')->field('staff_id')->group('staff_id')->select(); //查询有订单的保洁师傅
$oneDimensionalArrayxw= array_column($ordersxw, 'staff_id'); // 根据自己的表格字段名修改'字段名'部分
$lentxw=Db::name('leave')->where('addtime',2)->where('time','>=',$start)->where('time','<=',$end)->whereNotNull('user_id')->field('user_id')->group('user_id')->select();
$lentuserxw = array_column($lentxw,'user_id');
//判断下午
$numberxw=Db::name('staff')
->where('onwork',1)
->whereNotIn('id',$oneDimensionalArrayxw) // $array为要比较的数组
->whereNotIn('id',$lentuserxw) // $array为要比较的数组
->where('goods_id',$goods['brand_id'])
->count(); //获取到请假的人数
$order_numberxw=Db::name('order_exe')->where('autotime','>=',$start)->where('autotime','<=',$end)->where('staff_id',0)->where('addtime',2)->count();// 没有派单的保洁师
$numberxw=$numberxw-$order_numberxw;
if($numbersw>0){
$coied=false;
}else{
$coied=true;
}
if($numberxw>0){
$coiedxw=false;
}else{
$coiedxw=true;
}
$data[] = [
'date'=>$day,
'week'=>$this->Get_Chinese_WeekDay($day),
'hourLists'=>[
['hour'=>'上午','select'=>false,'disabled'=>$coied,'selectDay'=>$day,'staffnumber'=>$numbersw],
['hour'=>'下午','select'=>false,'disabled'=>$coiedxw,'selectDay'=>$day,'staffnumber'=>$numberxw],
]
];
$data[0]['select'] = true;
$this->_success('获取成功', $data);
}
public function sendgzhmsg($orderid = ''){
$uid = $this->user_id;
// $uid = 366;
$openids=Db::name('user_auth')->where('user_id',$uid)->find(); //获取用户的ID
$adder=Db::name('user_address')->where('user_id',$uid)->find();
// $openid = 'o_XDv5_Cq72XDOx1qvzq2kcaOYWA';
$openid = $openids['openid'];
$data = [
'touser'=>$openid,
'url'=>'',
'template_id'=>'MJBxsfAT18v9fQ8LYK2v1AF4iRkprNp1KPVm1ses64I', //模板id
'data'=>[
'time4'=>[
'value'=>date('Y-m-d H:i',time())
],
'thing1'=>[
'value'=>$adder['contact']
]
]
];
$config = WeChatServer::getOaConfig();
$app = Factory::officialAccount($config);
$r = $app->template_message->send($data);
return true;
}
public function shensatff($id){
dump($id);
}
public function putday(){
$post = $this->request->post();
$sw = $post['data']['hourLists'][0]['select'];
$xw = $post['data']['hourLists'][1]['select'];
$orderid=$post['data']['id']; //传递进来的订单id
$day = $post['data']['date'];
$order=Db::name('order')->where('id',$orderid)->find(); //获取到订单的基本信息
$goods=Db::name('goods')->where('id',$order['goods_id'])->find();
if($order['code']<=0){
$this->_error('订单次数已不足无法预约');
}
if($sw && $xw){
$code=Db::name('order')->where('id',$orderid)->find();
if($code['code']<=2){
return 20;
}else{
$data=[
'order_sn'=>$order['order_sn'], //订单编号
'create_time'=>time(),
// 'fworder_sn'=> $post['fworder_sn'],
'date'=>$day,
'xq'=>$this->Get_Chinese_WeekDay($day),
'type'=>3,
'status'=>0,
'addtime'=>1,
'autotime'=>strtotime($day),
];
$list=Db::name('order_exe')->data($data)->insert();
$datas=[
'order_sn'=>$order['order_sn'], //订单编号
'create_time'=>time(),
// 'fworder_sn'=> $post['fworder_sn'],
'date'=>$day,
'xq'=>$this->Get_Chinese_WeekDay($day),
'type'=>3,
'status'=>0,
'addtime'=>2,
'autotime'=>strtotime($day),
];
$list=Db::name('order_exe')->data($datas)->insert();
$order=Db::name('order')->where('id',$orderid)->update(['code'=>$order['code']-2]); //获取到订单的基本信息
$this->sendgzhmsg($day);
if($order['admin_id']!=NULL){
$admin=Db::name('admin')->where('id',$order['admin_id'])->find();
$openids=Db::name('user_auth')->where('user_id',$admin['user_id'])->find(); //获取用户的ID
//$time=date('Y-m-d',$orders['autotime']);
//$openid = 'o_XDv5_Cq72XDOx1qvzq2kcaOYWA';
$openid = $openids['openid'];
$data = [
'touser'=>$openid,
'url'=>'',
'template_id'=>'9ESlNoZweXTioNwyaDuSY9fIXCKhnrBi2Gu0Hl8cmAo', //模板id
'data'=>[
'keyword1'=>[
'value'=>$order['order_sn']
],
'keyword2'=>[
'value'=>$goods['name']
],
'keyword3'=>[
'value'=>$order['consignee']
],
'keyword4'=>[
'value'=>$order['mobile']
],
'keyword5'=>[
'value'=>$day
],
]
];
$config = WeChatServer::getOaConfig();
$app = Factory::officialAccount($config);
$r = $app->template_message->send($data);
}
$this->_success('预约成功,待上门', $list);
}
}
if($sw){
if($order>0){
$data=[
'order_sn'=>$order['order_sn'], //订单编号
'create_time'=>time(),
// 'fworder_sn'=> $post['fworder_sn'],
'date'=>$day,
'xq'=>$this->Get_Chinese_WeekDay($day),
'type'=>3,
'status'=>0,
'addtime'=>1,
'autotime'=>strtotime($day),
];
$list=Db::name('order_exe')->data($data)->insert();
$orderss=Db::name('order')->where('id',$orderid)->update(['code'=>$order['code']-1]); //获取到订单的基本信息
$this->sendgzhmsg($day);
if($order['admin_id']!=NULL){
$admin=Db::name('admin')->where('id',$order['admin_id'])->find();
$openids=Db::name('user_auth')->where('user_id',$admin['user_id'])->find(); //获取用户的ID
//$time=date('Y-m-d',$orders['autotime']);
//$openid = 'o_XDv5_Cq72XDOx1qvzq2kcaOYWA';
$openid = $openids['openid'];
$data = [
'touser'=>$openid,
'url'=>'',
'template_id'=>'9ESlNoZweXTioNwyaDuSY9fIXCKhnrBi2Gu0Hl8cmAo', //模板id
'data'=>[
'keyword1'=>[
'value'=>$order['order_sn']
],
'keyword2'=>[
'value'=>$goods['name']
],
'keyword3'=>[
'value'=>$order['consignee']
],
'keyword4'=>[
'value'=>$order['mobile']
],
'keyword5'=>[
'value'=>$day.'.8:00-12:00'
],
]
];
$config = WeChatServer::getOaConfig();
$app = Factory::officialAccount($config);
$r = $app->template_message->send($data);
}
$this->_success('预约成功,待上门', $list);
}else{
return 20;
}
}
if($xw){
if($order>0){
$data=[
'order_sn'=>$order['order_sn'], //订单编号
'create_time'=>time(),
// 'fworder_sn'=> $post['fworder_sn'],
'date'=>$day,
'xq'=>$this->Get_Chinese_WeekDay($day),
'type'=>3,
'status'=>0,
'addtime'=>2,
'autotime'=>strtotime($day),
];
$list=Db::name('order_exe')->data($data)->insert();
$order=Db::name('order')->where('id',$orderid)->update(['code'=>$order['code']-1]); //获取到订单的基本信息
$this->sendgzhmsg($day);
if($order['admin_id']!=NULL){
$admin=Db::name('admin')->where('id',$order['admin_id'])->find();
$openids=Db::name('user_auth')->where('user_id',$admin['user_id'])->find(); //获取用户的ID
//$time=date('Y-m-d',$orders['autotime']);
//$openid = 'o_XDv5_Cq72XDOx1qvzq2kcaOYWA';
$openid = $openids['openid'];
$data = [
'touser'=>$openid,
'url'=>'',
'template_id'=>'9ESlNoZweXTioNwyaDuSY9fIXCKhnrBi2Gu0Hl8cmAo', //模板id
'data'=>[
'keyword1'=>[
'value'=>$order['order_sn']
],
'keyword2'=>[
'value'=>$goods['name']
],
'keyword3'=>[
'value'=>$order['consignee']
],
'keyword4'=>[
'value'=>$order['mobile']
],
'keyword5'=>[
'value'=>$day.'.14:00-16:00'
],
]
];
$config = WeChatServer::getOaConfig();
$app = Factory::officialAccount($config);
$r = $app->template_message->send($data);
}
$this->_success('预约成功,待上门', $list);
}else{
return 20;
}
}
}
//保洁师开始接单
public function take(){
$order_id = $this->request->post('params');
$order=Db::name('order_exe')->where('id',$order_id)->find();
if($order['autotime']-time()>24*3600){
$this->_error('无法接单,未到时间');
}else{
$toke=Db::name('order_exe')->where('id', $order_id )->update(['status'=>1]);
$this->_success('接单成功');
}
}
//保洁师开始接单
public function wego(){
$order_id = $this->request->post('params');
$toke=Db::name('order_exe')->where('id', $order_id )->update(['status'=>1,'timeadd'=>time(),'staff_status'=>1]);
$this->_success('接单成功');
}
//保洁师结束服务
public function ends(){
$order_id = $this->request->post('params');
$toke=Db::name('order_exe')->where('id', $order_id )->update(['status'=>2,'timeout'=>time(),'staff_status'=>1]);
$this->_success('接单成功');
}
//订单的详情显示
public function orderinfo(){
$type = $this->request->post('type', 'all');
$post=$this->request->post();
$order_sn=$post['id']['order_sn'];
$order_list = OrderLogic::orderinfo($this->user_id, $type,$order_sn,$this->page_no, $this->page_size);
$this->_success('获取成功', $order_list);
}
//微信的通知
public function wxmassin(){
$start = strtotime(date("Y-m-d",strtotime("+1 day")));
$end =$start+24*3600-1;
$order=Db::name('order_exe')->where('autotime','>=',$start)->where('autotime','<=',$end)->where('staff_id','<>',0)->select();
foreach ($order as &$orders) {
$custom=Db::name('order')->where('order_sn',$orders['order_sn'])->find();
$goods=Db::name('goods')->where('id',$custom['goods_id'])->find();
$user=Db::name('staff')->where('id',$orders['staff_id'])->find();
if($orders['addtime']=1){
$timesw='上午';
}else{
$timesw='下午';
}
// $uid = 366;
$openids=Db::name('user_auth')->where('user_id',$user['user_id'])->find(); //获取用户的ID
$time=date('Y-m-d',$orders['autotime']);
// $openid = 'o_XDv5_Cq72XDOx1qvzq2kcaOYWA';
$openid = $openids['openid'];
$data = [
'touser'=>$openid,
'url'=>'',
'template_id'=>'YYsFPwTCrPcxi0JA_zg0xnz6uFaVAlobfTGvhQVDglE', //模板id
'data'=>[
'keyword1'=>[
'value'=>$goods['name']
],
'keyword2'=>[
'value'=> $time.$timesw
],
'keyword3'=>[
'value'=>$custom['address']
],
'keyword4'=>[
'value'=>$custom['consignee']
],
'keyword5'=>[
'value'=>$custom['mobile']
],
]
];
$config = WeChatServer::getOaConfig();
$app = Factory::officialAccount($config);
$r = $app->template_message->send($data);
}
}
public function getpege(){
$id = $this->request->get('id');
$date=Db::name('pageweb')->where('id',$id)->find();
$this->_success('获取数据成功',$date);
// dump($id);
}
}
Class ttPay{
private $api_url='https://developer.toutiao.com/api/apps/ecpay/v1/';
private $app_id;
private $token;
private $salt;
public function __construct() {
$this->app_id = 'tt0523739e9a12236501';
$this->token='123qazqweeesdflomswwe';
$this->salt='ejAuHvbI472euyhb34aVyLD92ll9tgZCqWnMi0tX';
}
public function run($action,$order = null){
$action=$action?$action:'order';
if(!in_array($action,['order','query','refund','settle','notify','set'])){
echo '非法请求';die;
}
return $this->$action($order);
}
//下单
private function order($order){
$data=[
'out_order_no'=>$order['order_sn'],
'total_amount'=>1,
'subject'=>'购买服务',
'body'=>'购买商品',
'valid_time'=>3600,
];
return $this->post('create_order',$data);
}
//查询订单
private function query(){
$data=[
'out_order_no'=>'2021110117254573565'
];
$res=$this->post('query_order',$data,false);
echo json_encode($res);die;
}
//订单退款
private function refund(){
$data=[
'out_order_no'=>'2021110118351347832',
'out_refund_no'=>$this->order_number(),
'reason'=>'退款原因',
'refund_amount'=>1,
];
$res=$this->post('create_refund',$data);
echo json_encode($res);die;
}
//订单分账
private function settle(){
$data=[
'out_order_no'=>'2021110118301265990',
'out_settle_no'=>$this->order_number(),
'settle_desc'=>'分账描述',
'settle_params'=>json_encode([]),//分润方参数 如[['merchant_uid'=>'商户号','amount'=>'10']] 可以有多个分账商户
];
$res=$this->post('settle',$data);
echo json_encode($res);die;
}
//支付设置回调测试
private function set(){
$content=file_get_contents('php://input');
$this->log('log.txt',$content);
}
//回调
private function notify(){
$content=input();
if(empty($content)) return false;
$this->log('notify.txt',json_encode($content));
if(is_array($content)){
$content=$content;
}else{
$content=json_decode($content,true);
}
$sign=$this->handler($content);
if(!empty($content['msg_signature']) && $sign==$content['msg_signature']){
if(is_array($content['msg'])){
$msg=$content['msg'];
}else{
$msg=json_decode($content['msg'],true);
}
if($content['type'] == 'payment'){
$order_sn = $msg['payment_order_no'];
Db::name('order')->where('order_sn',$order_sn)->update(['pay_status'=>1]);
}
//这里更新应用业务逻辑代码,使用$msg跟应用订单比对更新订单,可以用 $content['type']判断是支付回调还是退款回调payment支付回调 refund退款回调。
$res=['err_no'=>0,'err_tips'=>'success'];
echo json_encode($res);
exit;
}else{
echo '验签失败';
}
}
/**
* 测试订单号,实际应用根据自己应用实际生成
* @return string
*/
private function order_number(){
return date('YmdHis').rand(10000,99999);
}
/**
* 请求小程序平台服务端
* @param string $url 接口地址
* @param array $data 参数内容
* @param boolean $notify 是否有回调
* @return array
*/
private function post($method,$data,$notify=true){
$data['app_id']=$this->app_id;
$data['sign']=$this->sign($data);
$url=$this->api_url.$method;
$res=$this->http('POST',$url,json_encode($data),['Content-Type: application/json'],true);
return json_decode($res,true);
}
/**
* 回调验签
* @param array $map 验签参数
* @return stirng
*/
private function handler($map){
$rList = array();
array_push($rList, $this->token);
foreach($map as $k =>$v) {
if ( $k == "type" || $k=='msg_signature')
continue;
$value = trim(strval($v));
if ($value == "" || $value == "null")
continue;
array_push($rList, $value);
}
sort($rList,2);
return sha1(implode($rList));
}
/**
* 请求签名
* @param array $map 请求参数
* @return stirng
*/
private function sign($map) {
$rList = array();
foreach($map as $k =>$v) {
if ($k == "other_settle_params" || $k == "app_id" || $k == "sign" || $k == "thirdparty_id")
continue;
$value = trim(strval($v));
$len = strlen($value);
if ($len > 1 && substr($value, 0,1)=="\"" && substr($value,$len, $len-1)=="\"")
$value = substr($value,1, $len-1);
$value = trim($value);
if ($value == "" || $value == "null")
continue;
array_push($rList, $value);
}
array_push($rList, $this->salt);
sort($rList, 2);
return md5(implode('&', $rList));
}
/**
* 写日志
* @param string $path 日志路径
* @param string $content 内容
*/
private function log($path, $content){
$file=fopen($path, "a");
fwrite($file, date('Y-m-d H:i:s').'-----'.$content."\n");
fclose($file);
}
/**
* 网络请求
* @param stirng $method 请求模式
* @param stirng $url请求网关
* @param array $params 请求参数
* @param stirng $header 自定义头
* @param boolean $multi 文件上传
* @return array
*/
private function http( $method = 'GET', $url,$params,$header = array(), $multi = false){
$opts = array(
CURLOPT_TIMEOUT => 30,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_HTTPHEADER => $header
);
/* 根据请求类型设置特定参数 */
switch(strtoupper($method)){
case 'GET':
$opts[CURLOPT_URL] = $url . '?' . http_build_query($params);
break;
case 'POST':
//判断是否传输文件
$params = $multi ? $params : http_build_query($params);
$opts[CURLOPT_URL] = $url;
$opts[CURLOPT_POST] = 1;
$opts[CURLOPT_POSTFIELDS] = $params;
break;
default:
throw new Exception('不支持的请求方式!');
}
/* 初始化并执行curl请求 */
$ch = curl_init();
curl_setopt_array($ch, $opts);
$data = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
if($error) throw new Exception('请求发生错误:' . $error);
return $data;
}
}