window.location.href='./login.php';"); $act=isset($_GET['act'])?daddslashes($_GET['act']):null; if(!checkRefererHost())exit('{"code":403}'); @header('Content-Type: application/json; charset=UTF-8'); switch($act){ case 'channelList': $sql=" 1=1"; if(isset($_POST['id']) && !empty($_POST['id'])) { $id = intval($_POST['id']); $sql.=" AND A.`id`='$id'"; } if(isset($_POST['type']) && !empty($_POST['type'])) { $type = intval($_POST['type']); $sql.=" AND A.`type`='$type'"; } if(isset($_POST['plugin']) && !empty($_POST['plugin'])) { $plugin = trim($_POST['plugin']); $sql.=" AND A.`plugin`='$plugin'"; } if(isset($_POST['dstatus']) && $_POST['dstatus']>-1) { $dstatus = intval($_POST['dstatus']); $sql.=" AND A.`status`={$dstatus}"; } if(isset($_POST['kw']) && !empty($_POST['kw'])) { $kw = trim(daddslashes($_POST['kw'])); $sql.=" AND (A.`id`='{$kw}' OR A.`name` like '%{$kw}%')"; } $list = $DB->getAll("SELECT A.*,B.name typename,B.showname typeshowname FROM pre_channel A LEFT JOIN pre_type B ON A.type=B.id WHERE{$sql} ORDER BY id DESC"); exit(json_encode($list)); break; case 'getPayType': $id=intval($_GET['id']); $row=$DB->getRow("select * from pre_type where id='$id' limit 1"); if(!$row) exit('{"code":-1,"msg":"当前支付方式不存在!"}'); $result = ['code'=>0,'msg'=>'succ','data'=>$row]; exit(json_encode($result)); break; case 'setPayType': $id=intval($_GET['id']); $status=intval($_GET['status']); $row=$DB->getRow("select * from pre_type where id='$id' limit 1"); if(!$row) exit('{"code":-1,"msg":"当前支付方式不存在!"}'); $sql = "UPDATE pre_type SET status='$status' WHERE id='$id'"; if($DB->exec($sql))exit('{"code":0,"msg":"修改支付方式成功!"}'); else exit('{"code":-1,"msg":"修改支付方式失败['.$DB->error().']"}'); break; case 'delPayType': $id=intval($_GET['id']); $row=$DB->getRow("select * from pre_type where id='$id' limit 1"); if(!$row) exit('{"code":-1,"msg":"当前支付方式不存在!"}'); $row=$DB->getRow("select * from pre_channel where type='$id' limit 1"); if($row) exit('{"code":-1,"msg":"删除失败,存在使用该支付方式的支付通道"}'); $sql = "DELETE FROM pre_type WHERE id='$id'"; if($DB->exec($sql))exit('{"code":0,"msg":"删除支付方式成功!"}'); else exit('{"code":-1,"msg":"删除支付方式失败['.$DB->error().']"}'); break; case 'savePayType': if($_POST['action'] == 'add'){ $name=trim($_POST['name']); $showname=trim($_POST['showname']); $device=intval($_POST['device']); if(!preg_match('/^[a-zA-Z0-9]+$/',$name)){ exit('{"code":-1,"msg":"调用值不符合规则"}'); } $row=$DB->getRow("select * from pre_type where name='$name' and device='$device' limit 1"); if($row) exit('{"code":-1,"msg":"同一个调用值+支持设备不能重复"}'); $data = ['name'=>$name, 'showname'=>$showname, 'device'=>$device, 'status'=>1]; if($DB->insert('type', $data))exit('{"code":0,"msg":"新增支付方式成功!"}'); else exit('{"code":-1,"msg":"新增支付方式失败['.$DB->error().']"}'); }else{ $id=intval($_POST['id']); $name=trim($_POST['name']); $showname=trim($_POST['showname']); $device=intval($_POST['device']); if(!preg_match('/^[a-zA-Z0-9]+$/',$name)){ exit('{"code":-1,"msg":"调用值不符合规则"}'); } $row=$DB->getRow("select * from pre_type where name='$name' and device='$device' and id<>$id limit 1"); if($row) exit('{"code":-1,"msg":"同一个调用值+支持设备不能重复"}'); $data = ['name'=>$name, 'showname'=>$showname, 'device'=>$device]; if($DB->update('type', $data, ['id'=>$id])!==false)exit('{"code":0,"msg":"修改支付方式成功!"}'); else exit('{"code":-1,"msg":"修改支付方式失败['.$DB->error().']"}'); } break; case 'getPlugin': $name = trim($_GET['name']); $row=$DB->getRow("SELECT * FROM pre_plugin WHERE name='$name'"); if($row){ $result = ['code'=>0,'msg'=>'succ','data'=>$row]; exit(json_encode($result)); } else exit('{"code":-1,"msg":"当前支付插件不存在!"}'); break; case 'getPlugins': $typeid = intval($_GET['typeid']); $type=$DB->getColumn("SELECT name FROM pre_type WHERE id='$typeid'"); if(!$type) exit('{"code":-1,"msg":"当前支付方式不存在!"}'); $list=$DB->getAll("SELECT name,showname FROM pre_plugin WHERE types LIKE '%$type%' ORDER BY name ASC"); if($list){ $result = ['code'=>0,'msg'=>'succ','data'=>$list]; exit(json_encode($result)); } else exit('{"code":-1,"msg":"没有找到支持该支付方式的插件"}'); break; case 'getChannel': $id=intval($_GET['id']); $row=$DB->getRow("SELECT * FROM pre_channel WHERE id='$id'"); if(!$row) exit('{"code":-1,"msg":"当前支付通道不存在!"}'); $result = ['code'=>0,'msg'=>'succ','data'=>$row]; exit(json_encode($result)); break; case 'getChannels': $typeid = intval($_GET['typeid']); $type=$DB->getColumn("SELECT name FROM pre_type WHERE id='$typeid'"); if(!$type) exit('{"code":-1,"msg":"当前支付方式不存在!"}'); $list=$DB->getAll("SELECT id,name FROM pre_channel WHERE type='$typeid' and status=1 ORDER BY id ASC"); if($list){ $result = ['code'=>0,'msg'=>'succ','data'=>$list]; exit(json_encode($result)); } else exit('{"code":-1,"msg":"没有找到支持该支付方式的通道"}'); break; case 'getChannelsByPlugin': $plugin = $_GET['plugin']; if($plugin){ $list=$DB->getAll("SELECT id,name FROM pre_channel WHERE plugin='$plugin' ORDER BY id ASC"); }else{ $list=$DB->getAll("SELECT id,name FROM pre_channel ORDER BY id ASC"); } if($list){ $result = ['code'=>0,'msg'=>'succ','data'=>$list]; exit(json_encode($result)); } else exit('{"code":-1,"msg":"没有找到支持该支付插件的通道"}'); break; case 'getSubChannels': $channel = intval($_GET['channel']); $uid = intval($_GET['uid']); $sql = " channel='$channel'"; if($uid > 0) $sql .= " AND uid='$uid'"; $list=$DB->getAll("SELECT id,name,channel,apply_id FROM pre_subchannel WHERE{$sql} ORDER BY id ASC"); $result = ['code'=>0,'msg'=>'succ','data'=>$list]; exit(json_encode($result)); break; case 'setChannel': $id=intval($_GET['id']); $status=intval($_GET['status']); $row=$DB->getRow("SELECT * FROM pre_channel WHERE id='$id'"); if(!$row) exit('{"code":-1,"msg":"当前支付通道不存在!"}'); if($status==1 && empty($row['config'])){ exit('{"code":-1,"msg":"请先配置好密钥后再开启"}'); } $sql = "UPDATE pre_channel SET status='$status' WHERE id='$id'"; if($DB->exec($sql))exit('{"code":0,"msg":"修改支付通道成功!"}'); else exit('{"code":-1,"msg":"修改支付通道失败['.$DB->error().']"}'); break; case 'delChannel': $id=intval($_GET['id']); $row=$DB->getRow("SELECT * FROM pre_channel WHERE id='$id'"); if(!$row) exit('{"code":-1,"msg":"当前支付通道不存在!"}'); if($DB->find('psreceiver', '*', ['channel'=>$id])){ exit('{"code":-1,"msg":"当前支付通道下有分账规则,需要先删除"}'); } if($DB->find('applychannel', '*', ['channel'=>$id])){ exit('{"code":-1,"msg":"当前支付通道关联了进件渠道,无法删除"}'); } $sql = "DELETE FROM pre_channel WHERE id='$id'"; if($DB->exec($sql)){ $DB->exec("DELETE FROM pre_subchannel WHERE channel='$id'"); exit('{"code":0,"msg":"删除支付通道成功!"}'); } else exit('{"code":-1,"msg":"删除支付通道失败['.$DB->error().']"}'); break; case 'saveChannel': if($_POST['action'] == 'add'){ $name=trim($_POST['name']); $rate=trim($_POST['rate']); $costrate=trim($_POST['costrate']); $type=intval($_POST['type']); $plugin=trim($_POST['plugin']); $daytop=intval($_POST['daytop']); $mode=intval($_POST['mode']); $paymin=trim($_POST['paymin']); $paymax=trim($_POST['paymax']); if(!preg_match('/^[0-9.]+$/',$rate)){ exit('{"code":-1,"msg":"分成比例不符合规则"}'); } if(!empty($costrate) && !preg_match('/^[0-9.]+$/',$costrate)){ exit('{"code":-1,"msg":"通道成本不符合规则"}'); } if($paymin && !preg_match('/^[0-9.]+$/',$paymin)){ exit('{"code":-1,"msg":"最小支付金额不符合规则"}'); } if($paymax && !preg_match('/^[0-9.]+$/',$paymax)){ exit('{"code":-1,"msg":"最大支付金额不符合规则"}'); } $row=$DB->getRow("SELECT * FROM pre_channel WHERE name='$name' LIMIT 1"); if($row) exit('{"code":-1,"msg":"支付通道名称重复"}'); $data = ['name'=>$name, 'rate'=>$rate, 'costrate'=>$costrate, 'mode'=>$mode, 'type'=>$type, 'plugin'=>$plugin, 'daytop'=>$daytop, 'paymin'=>$paymin, 'paymax'=>$paymax]; if($DB->insert('channel', $data))exit('{"code":0,"msg":"新增支付通道成功!"}'); else exit('{"code":-1,"msg":"新增支付通道失败['.$DB->error().']"}'); }elseif($_POST['action'] == 'copy'){ $id=intval($_POST['id']); $row=$DB->getRow("SELECT * FROM pre_channel WHERE id='$id'"); if(!$row) exit('{"code":-1,"msg":"当前支付通道不存在!"}'); $name=trim($_POST['name']); $rate=trim($_POST['rate']); $costrate=trim($_POST['costrate']); $type=intval($_POST['type']); $plugin=trim($_POST['plugin']); $daytop=intval($_POST['daytop']); $mode=intval($_POST['mode']); $paymin=trim($_POST['paymin']); $paymax=trim($_POST['paymax']); if(!preg_match('/^[0-9.]+$/',$rate)){ exit('{"code":-1,"msg":"分成比例不符合规则"}'); } if(!empty($costrate) && !preg_match('/^[0-9.]+$/',$costrate)){ exit('{"code":-1,"msg":"通道成本不符合规则"}'); } if($paymin && !preg_match('/^[0-9.]+$/',$paymin)){ exit('{"code":-1,"msg":"最小支付金额不符合规则"}'); } if($paymax && !preg_match('/^[0-9.]+$/',$paymax)){ exit('{"code":-1,"msg":"最大支付金额不符合规则"}'); } $nrow=$DB->getRow("SELECT * FROM pre_channel WHERE name='$name' LIMIT 1"); if($nrow) exit('{"code":-1,"msg":"支付通道名称重复"}'); $data = ['name'=>$name, 'rate'=>$rate, 'costrate'=>$costrate, 'mode'=>$mode, 'type'=>$type, 'plugin'=>$plugin, 'daytop'=>$daytop, 'paymin'=>$paymin, 'paymax'=>$paymax, 'config'=>$row['config'], 'apptype'=>$row['apptype'], 'appwxmp'=>$row['appwxmp'], 'appwxa'=>$row['appwxa']]; if($DB->insert('channel', $data))exit('{"code":0,"msg":"复制支付通道成功!"}'); else exit('{"code":-1,"msg":"复制支付通道失败['.$DB->error().']"}'); }elseif($_POST['action'] == 'edit'){ $id=intval($_POST['id']); $row=$DB->getRow("SELECT * FROM pre_channel WHERE id='$id'"); if(!$row) exit('{"code":-1,"msg":"当前支付通道不存在!"}'); $name=trim($_POST['name']); $rate=trim($_POST['rate']); $costrate=trim($_POST['costrate']); $type=intval($_POST['type']); $plugin=trim($_POST['plugin']); $daytop=intval($_POST['daytop']); $mode=intval($_POST['mode']); $paymin=trim($_POST['paymin']); $paymax=trim($_POST['paymax']); if(!preg_match('/^[0-9.]+$/',$rate)){ exit('{"code":-1,"msg":"分成比例不符合规则"}'); } if(!empty($costrate) && !preg_match('/^[0-9.]+$/',$costrate)){ exit('{"code":-1,"msg":"通道成本不符合规则"}'); } if($paymin && !preg_match('/^[0-9.]+$/',$paymin)){ exit('{"code":-1,"msg":"最小支付金额不符合规则"}'); } if($paymax && !preg_match('/^[0-9.]+$/',$paymax)){ exit('{"code":-1,"msg":"最大支付金额不符合规则"}'); } $nrow=$DB->getRow("SELECT * FROM pre_channel WHERE name='$name' AND id<>$id LIMIT 1"); if($nrow) exit('{"code":-1,"msg":"支付通道名称重复"}'); $data = ['name'=>$name, 'rate'=>$rate, 'costrate'=>$costrate, 'mode'=>$mode, 'type'=>$type, 'plugin'=>$plugin, 'daytop'=>$daytop, 'paymin'=>$paymin, 'paymax'=>$paymax]; if($DB->update('channel', $data, ['id'=>$id])!==false){ if($row['daystatus']==1 && ($daytop==0 || $daytop>$row['daytop'])){ $DB->exec("UPDATE pre_channel SET daystatus=0 WHERE id='$id'"); } exit('{"code":0,"msg":"修改支付通道成功!"}'); }else exit('{"code":-1,"msg":"修改支付通道失败['.$DB->error().']"}'); } break; case 'channelInfo': $id=intval($_GET['id']); $row=$DB->getRow("SELECT * FROM pre_channel WHERE id='$id'"); if(!$row) exit('{"code":-1,"msg":"当前支付通道不存在!"}'); $typename = $DB->getColumn("SELECT name FROM pre_type WHERE id='{$row['type']}'"); //if($row['mode']>0){ // exit('{"code":-1,"msg":"当前通道为商户直清模式,请进入用户列表-编辑-接口密钥进行配置"}'); //} $apptype = explode(',',$row['apptype']); $plugin = \lib\Plugin::getConfig($row['plugin']); if(!$plugin) exit('{"code":-1,"msg":"当前支付插件不存在!"}'); $data = ''; $result=array("code"=>0,"msg"=>"succ","data"=>$data); exit(json_encode($result)); break; case 'saveChannelInfo': $id=intval($_GET['id']); $config=isset($_POST['config'])?$_POST['config']:null; $appwxmp=isset($_POST['appwxmp'])?intval($_POST['appwxmp']):null; $appwxa=isset($_POST['appwxa'])?intval($_POST['appwxa']):null; if(isset($_POST['isapptype'])){ if(!isset($_POST['apptype']) || count($_POST['apptype'])<=0)exit('{"code":-1,"msg":"请至少选择一个可用的支付接口"}'); $apptype=implode(',',$_POST['apptype']); }else{ $apptype=null; } if(empty($config)) exit('{"code":-1,"msg":"填写的内容不能为空"}'); $config = json_encode($config); $data = ['config'=>$config, 'apptype'=>$apptype, 'appwxmp'=>$appwxmp, 'appwxa'=>$appwxa]; if($DB->update('channel', $data, ['id'=>$id])!==false)exit('{"code":0,"msg":"修改支付密钥成功!"}'); else exit('{"code":-1,"msg":"修改支付密钥失败['.$DB->error().']"}'); break; case 'getRoll': $id=intval($_GET['id']); $row=$DB->getRow("select * from pre_roll where id='$id' limit 1"); if(!$row) exit('{"code":-1,"msg":"当前轮询组不存在!"}'); $result = ['code'=>0,'msg'=>'succ','data'=>$row]; exit(json_encode($result)); break; case 'setRoll': $id=intval($_GET['id']); $status=intval($_GET['status']); $row=$DB->getRow("select * from pre_roll where id='$id' limit 1"); if(!$row) exit('{"code":-1,"msg":"当前轮询组不存在!"}'); if($status==1 && empty($row['info'])){ exit('{"code":-1,"msg":"请先配置好支付通道后再开启"}'); } $sql = "UPDATE pre_roll SET status='$status' WHERE id='$id'"; if($DB->exec($sql))exit('{"code":0,"msg":"修改轮询组成功!"}'); else exit('{"code":-1,"msg":"修改轮询组失败['.$DB->error().']"}'); break; case 'delRoll': $id=intval($_GET['id']); $row=$DB->getRow("select * from pre_roll where id='$id' limit 1"); if(!$row) exit('{"code":-1,"msg":"当前轮询组不存在!"}'); $sql = "DELETE FROM pre_roll WHERE id='$id'"; if($DB->exec($sql))exit('{"code":0,"msg":"删除轮询组成功!"}'); else exit('{"code":-1,"msg":"删除轮询组失败['.$DB->error().']"}'); break; case 'saveRoll': if($_POST['action'] == 'add'){ $name=trim($_POST['name']); $type=intval($_POST['type']); $kind=intval($_POST['kind']); $row=$DB->getRow("select * from pre_roll where name='$name' limit 1"); if($row) exit('{"code":-1,"msg":"轮询组名称重复"}'); $sql = "INSERT INTO pre_roll (name, type, kind) VALUES ('{$name}', {$type}, {$kind})"; if($DB->exec($sql))exit('{"code":0,"msg":"新增轮询组成功!"}'); else exit('{"code":-1,"msg":"新增轮询组失败['.$DB->error().']"}'); }else{ $id=intval($_POST['id']); $name=trim($_POST['name']); $type=intval($_POST['type']); $kind=intval($_POST['kind']); $row=$DB->getRow("select * from pre_roll where name='$name' and id<>$id limit 1"); if($row) exit('{"code":-1,"msg":"轮询组名称重复"}'); $sql = "UPDATE pre_roll SET name='{$name}',type='{$type}',kind='{$kind}' WHERE id='$id'"; if($DB->exec($sql)!==false)exit('{"code":0,"msg":"修改轮询组成功!"}'); else exit('{"code":-1,"msg":"修改轮询组失败['.$DB->error().']"}'); } break; case 'rollInfo': $id=intval($_GET['id']); $row=$DB->getRow("select * from pre_roll where id='$id' limit 1"); if(!$row) exit('{"code":-1,"msg":"当前轮询组不存在!"}'); $list=$DB->getAll("select id,name from pre_channel where type='{$row['type']}' and status=1 ORDER BY id ASC"); if(!$list)exit('{"code":-1,"msg":"没有找到支持该支付方式的通道"}'); if(!empty($row['info'])){ $arr = explode(',',$row['info']); $info = []; foreach($arr as $item){ $a = explode(':',$item); $info[] = ['channel'=>$a[0], 'weight'=>$a[1]?$a[1]:1]; } }else{ $info = null; } $result=array("code"=>0,"msg"=>"succ","channels"=>$list,"info"=>$info); exit(json_encode($result)); break; case 'saveRollInfo': $id=intval($_GET['id']); $row=$DB->getRow("select * from pre_roll where id='$id' limit 1"); if(!$row) exit('{"code":-1,"msg":"当前轮询组不存在!"}'); $list=$_POST['list']; if(empty($list)) exit('{"code":-1,"msg":"通道配置不能为空!"}'); $info = ''; foreach($list as $a){ $info .= $row['kind']==1 ? $a['channel'].':'.$a['weight'].',' : $a['channel'].','; } $info = trim($info,','); if(empty($info)) exit('{"code":-1,"msg":"通道配置不能为空!"}'); $sql = "UPDATE pre_roll SET info='{$info}' WHERE id='$id'"; if($DB->exec($sql)!==false)exit('{"code":0,"msg":"修改轮询组成功!"}'); else exit('{"code":-1,"msg":"修改轮询组失败['.$DB->error().']"}'); break; case 'getChannelMoney': //统计支付通道金额 $type=intval($_GET['type']); $channel=intval($_GET['channel']); $today=$type==1 ? date("Y-m-d", strtotime("-1 day")) : date("Y-m-d"); $money=$DB->getColumn("SELECT SUM(realmoney) FROM pre_order WHERE date='$today' AND channel='$channel' AND status>0"); exit('{"code":0,"msg":"succ","money":"'.round($money,2).'"}'); break; case 'getSubChannelMoney': //统计子通道金额 $type=intval($_GET['type']); $channel=trim($_GET['channel']); $today=$type==1 ? date("Y-m-d", strtotime("-1 day")) : date("Y-m-d"); $channel = explode('|', $channel); $channel = array_map('intval', $channel); $money=$DB->getColumn("SELECT SUM(realmoney) FROM pre_order WHERE date='$today' AND subchannel IN (".implode(",", $channel).") AND status>0"); exit('{"code":0,"msg":"succ","money":"'.round($money,2).'"}'); break; case 'getTypeMoney': //统计支付方式金额 $type=intval($_GET['type']); $typeid=intval($_GET['typeid']); $today=$type==1 ? date("Y-m-d", strtotime("-1 day")) : date("Y-m-d"); $money=$DB->getColumn("SELECT SUM(realmoney) FROM pre_order WHERE date='$today' AND type='$typeid' AND status>0"); exit('{"code":0,"msg":"succ","money":"'.round($money,2).'"}'); break; case 'getChannelRate': $channel=intval($_GET['channel']); $thtime = date("Y-m-d").' 00:00:00'; $all = 0; $success = 0; $orders=$DB->getAll("SELECT * FROM pre_order WHERE addtime>='$thtime' AND channel='$channel'"); foreach($orders as $order){ $all++; if($order['status']>0)$success++; } $rate = $all > 0 ? round($success*100/$all, 2) : 0; exit('{"code":0,"msg":"succ","rate":"'.$rate.'"}'); break; case 'getSuccessRate': $channel = intval($_GET['channel']); $thtime = date("Y-m-d"); $orderrow=$DB->getRow("SELECT COUNT(*) allnum,COUNT(IF(status>0, 1, NULL)) sucnum FROM pre_order WHERE addtime>='$thtime' AND channel='$channel'"); $success_rate = $orderrow && $orderrow['allnum'] > 0 ? round($orderrow['sucnum']/$orderrow['allnum']*100,2) : 100; exit('{"code":0,"msg":"succ","data":"' . $success_rate . '"}'); break; case 'testpay': $channel=intval($_POST['channel']); $subchannel=intval($_POST['subchannel']); $row=$DB->getRow("select * from pre_channel where id='$channel' limit 1"); if(!$row) exit('{"code":-1,"msg":"当前支付通道不存在!"}'); if($subchannel > 0){ if(!$DB->getRow("select * from pre_subchannel where id='$subchannel' limit 1")) exit('{"code":-1,"msg":"当前子通道不存在!"}'); } if(empty($row['config']))exit('{"code":-1,"msg":"请先配置好密钥"}'); if(!$conf['test_pay_uid'])exit('{"code":-1,"msg":"请先配置测试支付收款商户ID"}'); $money=trim(daddslashes($_POST['money'])); $name=trim(daddslashes($_POST['name'])); if($money<=0 || !is_numeric($money) || !preg_match('/^[0-9.]+$/', $money))exit('{"code":-1,"msg":"金额不合法"}'); if($conf['pay_maxmoney']>0 && $money>$conf['pay_maxmoney'])exit('{"code":-1,"msg":"最大支付金额是'.$conf['pay_maxmoney'].'元"}'); if($conf['pay_minmoney']>0 && $money<$conf['pay_minmoney'])exit('{"code":-1,"msg":"最小支付金额是'.$conf['pay_minmoney'].'元"}'); $trade_no=date("YmdHis").rand(11111,99999); $return_url=$siteurl.'user/test.php?ok=1&trade_no='.$trade_no; $domain=getdomain($return_url); if(!$DB->exec("INSERT INTO `pre_order` (`trade_no`,`out_trade_no`,`uid`,`tid`,`addtime`,`name`,`money`,`type`,`channel`,`subchannel`,`realmoney`,`getmoney`,`notify_url`,`return_url`,`domain`,`ip`,`status`) VALUES (:trade_no, :out_trade_no, :uid, 3, NOW(), :name, :money, :type, :channel, :subchannel, :realmoney, :getmoney, :notify_url, :return_url, :domain, :clientip, 0)", [':trade_no'=>$trade_no, ':out_trade_no'=>$trade_no, ':uid'=>$conf['test_pay_uid'], ':name'=>$name, ':money'=>$money, ':type'=>$row['type'], ':channel'=>$channel, ':subchannel'=>$subchannel, ':realmoney'=>$money, ':getmoney'=>$money, ':notify_url'=>$return_url, ':return_url'=>$return_url, ':domain'=>$domain, ':clientip'=>$clientip]))exit('{"code":-1,"msg":"创建订单失败,请返回重试!"}'); $result = ['code'=>0, 'msg'=>'succ', 'url'=>'./testsubmit.php?trade_no='.$trade_no]; exit(json_encode($result)); break; case 'getWeixin': $id=intval($_GET['id']); $row=$DB->getRow("select * from pre_weixin where id='$id' limit 1"); if(!$row) exit('{"code":-1,"msg":"当前公众号/小程序不存在!"}'); $result = ['code'=>0,'msg'=>'succ','data'=>$row]; exit(json_encode($result)); break; case 'delWeixin': $id=intval($_GET['id']); $row=$DB->getRow("select * from pre_weixin where id='$id' limit 1"); if(!$row) exit('{"code":-1,"msg":"当前公众号/小程序不存在!"}'); $row=$DB->getRow("select * from pre_channel where appwxmp='$id' limit 1"); if($row) exit('{"code":-1,"msg":"删除失败,存在使用该微信公众号的支付通道"}'); $row=$DB->getRow("select * from pre_channel where appwxa='$id' limit 1"); if($row) exit('{"code":-1,"msg":"删除失败,存在使用该微信小程序的支付通道"}'); $sql = "DELETE FROM pre_weixin WHERE id='$id'"; if($DB->exec($sql)){ exit('{"code":0,"msg":"删除公众号/小程序成功!"}'); }else exit('{"code":-1,"msg":"删除公众号/小程序失败['.$DB->error().']"}'); break; case 'saveWeixin': if($_POST['action'] == 'add'){ $type=intval($_POST['type']); $name=trim($_POST['name']); $appid=trim($_POST['appid']); $appsecret=trim($_POST['appsecret']); $row=$DB->getRow("select * from pre_weixin where name='$name' limit 1"); if($row) exit('{"code":-1,"msg":"名称重复"}'); $row=$DB->getRow("select * from pre_weixin where appid='$appid' limit 1"); if($row) exit('{"code":-1,"msg":"APPID重复"}'); if($DB->insert('weixin', ['type'=>$type, 'name'=>$name, 'appid'=>$appid, 'appsecret'=>$appsecret, 'status'=>1, 'addtime'=>'NOW()']))exit('{"code":0,"msg":"新增公众号/小程序成功!"}'); else exit('{"code":-1,"msg":"新增公众号/小程序失败['.$DB->error().']"}'); }else{ $id=intval($_POST['id']); $type=intval($_POST['type']); $name=trim($_POST['name']); $appid=trim($_POST['appid']); $appsecret=trim($_POST['appsecret']); $row=$DB->getRow("select * from pre_weixin where name='$name' and id<>$id limit 1"); if($row) exit('{"code":-1,"msg":"名称重复"}'); $row=$DB->getRow("select * from pre_weixin where appid='$appid' and id<>$id limit 1"); if($row) exit('{"code":-1,"msg":"APPID重复"}'); if($DB->update('weixin', ['type'=>$type, 'name'=>$name, 'appid'=>$appid, 'appsecret'=>$appsecret], ['id'=>$id])!==false)exit('{"code":0,"msg":"修改公众号/小程序成功!"}'); else exit('{"code":-1,"msg":"修改公众号/小程序失败['.$DB->error().']"}'); } break; case 'testweixin': $id=intval($_POST['id']); $row=$DB->getRow("select * from pre_weixin where id='$id' limit 1"); if(!$row) exit('{"code":-1,"msg":"当前公众号/小程序不存在!"}'); try{ $wechat = new \lib\wechat\WechatAPI($id); $access_token = $wechat->getAccessToken(true); }catch(Exception $e){ exit('{"code":-1,"msg":"'.$e->getMessage().'"}'); } exit('{"code":0,"msg":"接口连接测试成功!"}'); break; case 'getWework': $id=intval($_GET['id']); $row=$DB->getRow("select * from pre_wework where id='$id' limit 1"); if(!$row) exit('{"code":-1,"msg":"当前企业微信不存在!"}'); $result = ['code'=>0,'msg'=>'succ','data'=>$row]; exit(json_encode($result)); break; case 'setWework': $id=intval($_GET['id']); $status=intval($_GET['status']); $row=$DB->getRow("select * from pre_wework where id='$id' limit 1"); if(!$row) exit('{"code":-1,"msg":"当前企业微信不存在!"}'); $sql = "UPDATE pre_wework SET status='$status' WHERE id='$id'"; if($DB->exec($sql))exit('{"code":0,"msg":"修改企业微信成功!"}'); else exit('{"code":-1,"msg":"修改企业微信失败['.$DB->error().']"}'); break; case 'delWework': $id=intval($_GET['id']); $row=$DB->getRow("select * from pre_wework where id='$id' limit 1"); if(!$row) exit('{"code":-1,"msg":"当前企业微信不存在!"}'); if($DB->delete('wework', ['id'=>$id])){ $DB->delete('wxkfaccount', ['wid'=>$id]); exit('{"code":0,"msg":"删除企业微信成功!"}'); }else exit('{"code":-1,"msg":"删除企业微信失败['.$DB->error().']"}'); break; case 'saveWework': if($_POST['action'] == 'add'){ $name=trim($_POST['name']); $appid=trim($_POST['appid']); $appsecret=trim($_POST['appsecret']); $row=$DB->getRow("select * from pre_wework where name='$name' limit 1"); if($row) exit('{"code":-1,"msg":"名称重复"}'); $row=$DB->getRow("select * from pre_wework where appid='$appid' limit 1"); if($row) exit('{"code":-1,"msg":"企业ID重复"}'); if($DB->insert('wework', ['name'=>$name, 'appid'=>$appid, 'appsecret'=>$appsecret, 'status'=>1, 'addtime'=>'NOW()']))exit('{"code":0,"msg":"新增企业微信成功!请点击刷新客服账号数量"}'); else exit('{"code":-1,"msg":"新增企业微信失败['.$DB->error().']"}'); }else{ $id=intval($_POST['id']); $name=trim($_POST['name']); $appid=trim($_POST['appid']); $appsecret=trim($_POST['appsecret']); $row=$DB->getRow("select * from pre_wework where name='$name' and id<>$id limit 1"); if($row) exit('{"code":-1,"msg":"名称重复"}'); $row=$DB->getRow("select * from pre_wework where appid='$appid' and id<>$id limit 1"); if($row) exit('{"code":-1,"msg":"企业ID重复"}'); if($DB->update('wework', ['name'=>$name, 'appid'=>$appid, 'appsecret'=>$appsecret], ['id'=>$id])!==false)exit('{"code":0,"msg":"修改企业微信成功!"}'); else exit('{"code":-1,"msg":"修改企业微信失败['.$DB->error().']"}'); } break; case 'refreshWework': $id=intval($_POST['id']); $row=$DB->getRow("select * from pre_wework where id='$id' limit 1"); if(!$row) exit('{"code":-1,"msg":"当前企业微信不存在!"}'); $wework = new \lib\wechat\WeWorkAPI($id); try{ $account_list = $wework->getKFList(); if(count($account_list) == 0){ exit('{"code":-1,"msg":"没有添加客服账号"}'); } $account_data = $DB->findAll('wxkfaccount', 'id,openkfid', ['wid'=>$id]); foreach($account_list as $account){ $isExsist = false; foreach($account_data as $find){ if($find['openkfid'] == $account['open_kfid']){ $isExsist = true;break; } } if(!$isExsist){ $DB->insert('wxkfaccount', ['wid'=>$id, 'openkfid'=>$account['open_kfid'], 'name'=>$account['name'], 'addtime'=>'NOW()']); } } foreach($account_data as $account){ $isExsist = false; foreach($account_list as $find){ if($find['open_kfid'] == $account['openkfid']){ $isExsist = true;break; } } if(!$isExsist){ $DB->delete('wxkfaccount', ['id'=>$account['id']]); } } exit(json_encode(['code'=>0, 'msg'=>'成功获取到'.count($account_list).'个客服账号'])); }catch(Exception $e){ exit('{"code":-1,"msg":"'.$e->getMessage().'"}'); } break; case 'testWework': $id=intval($_POST['id']); $row=$DB->getRow("select * from pre_wework where id='$id' limit 1"); if(!$row) exit('{"code":-1,"msg":"当前企业微信不存在!"}'); $wework = new \lib\wechat\WeWorkAPI($id); try{ $access_token = $wework->getAccessToken(true); }catch(Exception $e){ exit('{"code":-1,"msg":"'.$e->getMessage().'"}'); } exit('{"code":0,"msg":"接口连接测试成功!"}'); break; default: exit('{"code":-4,"msg":"No Act"}'); break; }