|
|
<?php
|
|
|
include("../includes/common.php");
|
|
|
if($islogin==1){}else exit("<script language='javascript'>window.location.href='./login.php';</script>");
|
|
|
$act=isset($_GET['act'])?daddslashes($_GET['act']):null;
|
|
|
|
|
|
if(!checkRefererHost())exit('{"code":403}');
|
|
|
|
|
|
@header('Content-Type: application/json; charset=UTF-8');
|
|
|
|
|
|
switch($act){
|
|
|
case 'settleList':
|
|
|
$sql=" 1=1";
|
|
|
if(isset($_POST['batch']) && !empty($_POST['batch'])) {
|
|
|
$batch = daddslashes($_POST['batch']);
|
|
|
$sql.=" AND `batch`='$batch'";
|
|
|
}
|
|
|
if(isset($_POST['uid']) && !empty($_POST['uid'])) {
|
|
|
$uid = intval($_POST['uid']);
|
|
|
$sql.=" AND `uid`='$uid'";
|
|
|
}
|
|
|
if(isset($_POST['type']) && !empty($_POST['type'])) {
|
|
|
$type = intval($_POST['type']);
|
|
|
$sql.=" AND `type`='$type'";
|
|
|
}
|
|
|
if(isset($_POST['dstatus']) && $_POST['dstatus']>-1) {
|
|
|
$dstatus = intval($_POST['dstatus']);
|
|
|
$sql.=" AND `status`={$dstatus}";
|
|
|
}
|
|
|
if(isset($_POST['value']) && !empty($_POST['value'])) {
|
|
|
$value = daddslashes($_POST['value']);
|
|
|
$sql.=" AND (`account` like '%{$value}%' OR `username` like '%{$value}%')";
|
|
|
}
|
|
|
$offset = intval($_POST['offset']);
|
|
|
$limit = intval($_POST['limit']);
|
|
|
$total = $DB->getColumn("SELECT count(*) from pre_settle WHERE{$sql}");
|
|
|
$list = $DB->getAll("SELECT * FROM pre_settle WHERE{$sql} order by id desc limit $offset,$limit");
|
|
|
|
|
|
exit(json_encode(['total'=>$total, 'rows'=>$list]));
|
|
|
break;
|
|
|
|
|
|
case 'create_batch':
|
|
|
$count=$DB->getColumn("SELECT count(*) from pre_settle where status=0");
|
|
|
if($count==0)exit('{"code":-1,"msg":"当前不存在待结算的记录"}');
|
|
|
$batch=date("Ymd").rand(111,999);
|
|
|
$allmoney = 0;
|
|
|
$rs=$DB->query("SELECT * from pre_settle where status=0");
|
|
|
while($row = $rs->fetch())
|
|
|
{
|
|
|
$DB->exec("UPDATE pre_settle SET batch='$batch',status=2 WHERE id='{$row['id']}'");
|
|
|
$allmoney+=$row['realmoney'];
|
|
|
}
|
|
|
$DB->insert('batch', ['batch'=>$batch, 'allmoney'=>$allmoney, 'count'=>$count, 'time'=>'NOW()', 'status'=>0]);
|
|
|
|
|
|
exit(json_encode(['code'=>0, 'msg'=>'succ', 'batch'=>$batch, 'count'=>$count, 'allmoney'=>$allmoney]));
|
|
|
break;
|
|
|
case 'complete_batch':
|
|
|
$batch=trim($_POST['batch']);
|
|
|
$DB->exec("UPDATE pre_settle SET status=1 WHERE batch='$batch'");
|
|
|
exit('{"code":0,"msg":"succ"}');
|
|
|
break;
|
|
|
case 'setSettleStatus':
|
|
|
$id=intval($_GET['id']);
|
|
|
$status=intval($_GET['status']);
|
|
|
if($status==4){
|
|
|
if($DB->exec("DELETE FROM pre_settle WHERE id='$id'"))
|
|
|
exit('{"code":200}');
|
|
|
else
|
|
|
exit('{"code":400,"msg":"删除记录失败!['.$DB->error().']"}');
|
|
|
}else{
|
|
|
if($status==1){
|
|
|
$sql = "update pre_settle set status='$status',endtime='$date',result=NULL where id='$id'";
|
|
|
|
|
|
$row = $DB->find('settle', 'uid,money,realmoney,account', ['id'=>$id]);
|
|
|
\lib\MsgNotice::send('settle', $row['uid'], ['money'=>$row['money'], 'realmoney'=>$row['realmoney'], 'time'=>date('Y-m-d H:i:s'), 'account'=>$row['account']]);
|
|
|
}else{
|
|
|
$sql = "update pre_settle set status='$status',endtime=NULL where id='$id'";
|
|
|
}
|
|
|
if($DB->exec($sql)!==false)
|
|
|
exit('{"code":200}');
|
|
|
else
|
|
|
exit('{"code":400,"msg":"修改记录失败!['.$DB->error().']"}');
|
|
|
}
|
|
|
break;
|
|
|
case 'opslist':
|
|
|
$status=$_POST['status'];
|
|
|
$checkbox=$_POST['checkbox'];
|
|
|
$i=0;
|
|
|
foreach($checkbox as $id){
|
|
|
if($status==4){
|
|
|
$sql = "DELETE FROM pre_settle WHERE id='$id'";
|
|
|
}elseif($status==1){
|
|
|
$sql = "update pre_settle set status='$status',endtime='$date',result=NULL where id='$id'";
|
|
|
}else{
|
|
|
$sql = "update pre_settle set status='$status',endtime=NULL where id='$id'";
|
|
|
}
|
|
|
$DB->exec($sql);
|
|
|
$i++;
|
|
|
}
|
|
|
exit('{"code":0,"msg":"成功改变'.$i.'条记录状态"}');
|
|
|
break;
|
|
|
case 'settle_result':
|
|
|
$id=intval($_POST['id']);
|
|
|
$row=$DB->getRow("select result from pre_settle where id='$id' limit 1");
|
|
|
if(!$row)
|
|
|
exit('{"code":-1,"msg":"当前结算记录不存在!"}');
|
|
|
$result = ['code'=>0,'msg'=>'succ','result'=>$row['result']];
|
|
|
exit(json_encode($result));
|
|
|
break;
|
|
|
case 'settle_setresult':
|
|
|
$id=intval($_POST['id']);
|
|
|
$result=trim($_POST['result']);
|
|
|
$row=$DB->getRow("select * from pre_settle where id='$id' limit 1");
|
|
|
if(!$row)
|
|
|
exit('{"code":-1,"msg":"当前结算记录不存在!"}');
|
|
|
$sds = $DB->exec("UPDATE pre_settle SET result='$result' WHERE id='$id'");
|
|
|
if($sds!==false)
|
|
|
exit('{"code":0,"msg":"修改成功!"}');
|
|
|
else
|
|
|
exit('{"code":-1,"msg":"修改失败!'.$DB->error().'"}');
|
|
|
break;
|
|
|
case 'settle_info':
|
|
|
$id=intval($_GET['id']);
|
|
|
$rows=$DB->getRow("select * from pre_settle where id='$id' limit 1");
|
|
|
if(!$rows)
|
|
|
exit('{"code":-1,"msg":"当前结算记录不存在!"}');
|
|
|
$data = '<div class="form-group"><div class="input-group"><div class="input-group-addon">结算方式</div><select class="form-control" id="pay_type" default="'.$rows['type'].'">'.($conf['settle_alipay']?'<option value="1">支付宝</option>':null).''.($conf['settle_wxpay']?'<option value="2">微信</option>':null).''.($conf['settle_qqpay']?'<option value="3">QQ钱包</option>':null).''.($conf['settle_bank']?'<option value="4">银行卡</option>':null).'</select></div></div>';
|
|
|
$data .= '<div class="form-group"><div class="input-group"><div class="input-group-addon">结算账号</div><input type="text" id="pay_account" value="'.$rows['account'].'" class="form-control" required/></div></div>';
|
|
|
$data .= '<div class="form-group"><div class="input-group"><div class="input-group-addon">真实姓名</div><input type="text" id="pay_name" value="'.$rows['username'].'" class="form-control" required/></div></div>';
|
|
|
$data .= '<input type="submit" id="save" onclick="saveInfo('.$id.')" class="btn btn-primary btn-block" value="保存">';
|
|
|
$result=array("code"=>0,"msg"=>"succ","data"=>$data,"pay_type"=>$rows['type']);
|
|
|
exit(json_encode($result));
|
|
|
break;
|
|
|
case 'settle_save':
|
|
|
$id=intval($_POST['id']);
|
|
|
$pay_type=intval($_POST['pay_type']);
|
|
|
$pay_account=htmlspecialchars(trim($_POST['pay_account']));
|
|
|
$pay_name=htmlspecialchars(trim($_POST['pay_name']));
|
|
|
$data = ['type'=>$pay_type, 'account'=>$pay_account, 'username'=>$pay_name];
|
|
|
if($DB->update('settle', $data, ['id'=>$id])!==false)
|
|
|
exit('{"code":0,"msg":"修改记录成功!"}');
|
|
|
else
|
|
|
exit('{"code":-1,"msg":"修改记录失败!'.$DB->error().'"}');
|
|
|
break;
|
|
|
case 'paypwd_check':
|
|
|
if(isset($_SESSION['paypwd']) && $_SESSION['paypwd']==$conf['admin_paypwd'])
|
|
|
exit('{"code":0,"msg":"ok"}');
|
|
|
else
|
|
|
exit('{"code":-1,"msg":"error"}');
|
|
|
break;
|
|
|
case 'paypwd_input':
|
|
|
$paypwd=trim($_POST['paypwd']);
|
|
|
if(!$conf['admin_paypwd'])exit('{"code":-1,"msg":"你还未设置支付密码"}');
|
|
|
if($paypwd == $conf['admin_paypwd']){
|
|
|
$_SESSION['paypwd'] = $paypwd;
|
|
|
exit('{"code":0,"msg":"ok"}');
|
|
|
}else{
|
|
|
exit('{"code":-1,"msg":"支付密码错误!"}');
|
|
|
}
|
|
|
break;
|
|
|
case 'paypwd_reset':
|
|
|
unset($_SESSION['paypwd']);
|
|
|
exit('{"code":0,"msg":"ok"}');
|
|
|
break;
|
|
|
|
|
|
case 'transfer':
|
|
|
$id = isset($_POST['id'])?intval($_POST['id']):exit('{"code":-1,"msg":"ID不能为空"}');
|
|
|
$type = isset($_POST['type'])?intval($_POST['type']):exit('{"code":-1,"msg":"type不能为空"}');
|
|
|
|
|
|
$payee_err_code = [
|
|
|
'PAYEE_NOT_EXIST','PAYEE_ACCOUNT_STATUS_ERROR','CARD_BIN_ERROR','PAYEE_CARD_INFO_ERROR','PERM_AML_NOT_REALNAME_REV','PAYEE_USER_INFO_ERROR','PAYEE_ACC_OCUPIED','PERMIT_NON_BANK_LIMIT_PAYEE','PAYEE_TRUSTEESHIP_ACC_OVER_LIMIT','PAYEE_ACCOUNT_NOT_EXSIT','PAYEE_USERINFO_STATUS_ERROR','TRUSTEESHIP_RECIEVE_QUOTA_LIMIT','EXCEED_LIMIT_UNRN_DM_AMOUNT','INVALID_CARDNO','RELEASE_USER_FORBBIDEN_RECIEVE','PAYEE_USER_TYPE_ERROR','PAYEE_NOT_RELNAME_CERTIFY','PERMIT_LIMIT_PAYEE',
|
|
|
|
|
|
'OPENID_ERROR','NAME_MISMATCH','V2_ACCOUNT_SIMPLE_BAN','MONEY_LIMIT','EXCEED_PAYEE_ACCOUNT_LIMIT','PAYEE_ACCOUNT_ABNORMAL','APPID_OR_OPENID_ERR',
|
|
|
|
|
|
'REALNAME_CHECK_ERROR','RE_USER_NAME_CHECK_ERROR','ERR_TJ_BLACK','USER_FROZEN','TRANSFER_FAIL','TRANSFER_FEE_LIMIT_ERROR',
|
|
|
|
|
|
'ACCOUNT_FROZEN','REAL_NAME_CHECK_FAIL','NAME_NOT_CORRECT','OPENID_INVALID','TRANSFER_QUOTA_EXCEED','DAY_RECEIVED_QUOTA_EXCEED','MONTH_RECEIVED_QUOTA_EXCEED','DAY_RECEIVED_COUNT_EXCEED','ID_CARD_NOT_CORRECT','ACCOUNT_NOT_EXIST','TRANSFER_RISK','REALNAME_ACCOUNT_RECEIVED_QUOTA_EXCEED','RECEIVE_ACCOUNT_NOT_PERMMIT','PAYEE_ACCOUNT_ABNORMAL','BLOCK_B2C_USERLIMITAMOUNT_BSRULE_MONTH','BLOCK_B2C_USERLIMITAMOUNT_MONTH',
|
|
|
];
|
|
|
|
|
|
if(!isset($_SESSION['paypwd']) || $_SESSION['paypwd']!==$conf['admin_paypwd'])exit('{"code":-1,"msg":"支付密码错误,请返回重新进入该页面"}');
|
|
|
|
|
|
$row=$DB->getRow("SELECT * FROM pre_settle WHERE id='{$id}' limit 1");
|
|
|
if(!$row)exit('{"code":-1,"msg":"记录不存在"}');
|
|
|
if($row['type']!=$type)exit('{"code":-1,"msg":"转账类型不正确"}');
|
|
|
|
|
|
if($row['transfer_status']==1)exit('{"code":0,"ret":2,"result":"转账订单号:'.$row['transfer_result'].' 支付时间:'.$row['transfer_date'].'"}');
|
|
|
|
|
|
if($type == 1){
|
|
|
$app = 'alipay';
|
|
|
$channel = \lib\Channel::get($conf['transfer_alipay']);
|
|
|
}elseif($type == 2){
|
|
|
$app = 'wxpay';
|
|
|
$channel = \lib\Channel::get($conf['transfer_wxpay']);
|
|
|
}elseif($type == 3){
|
|
|
$app = 'qqpay';
|
|
|
$channel = \lib\Channel::get($conf['transfer_qqpay']);
|
|
|
}elseif($type == 4){
|
|
|
$app = 'bank';
|
|
|
$channel = \lib\Channel::get($conf['transfer_bank']);
|
|
|
}
|
|
|
if(!$channel)exit('{"code":-1,"msg":"当前支付通道信息不存在"}');
|
|
|
|
|
|
$out_biz_no = date("Ymd").'000'.$id;
|
|
|
$result = \lib\Transfer::submit($app, $channel, $out_biz_no, $row['account'], $row['username'], $row['realmoney']);
|
|
|
|
|
|
if($result['code']==0){
|
|
|
$data['code']=0;
|
|
|
$data['ret']=1;
|
|
|
$data['result']='转账订单号:'.$result['orderid'].' 支付时间:'.$result['paydate'];
|
|
|
$DB->update('settle', ['status'=>1, 'endtime'=>'NOW()', 'transfer_status'=>1, 'transfer_result'=>$result["orderid"], 'transfer_date'=>$result["paydate"]], ['id'=>$id]);
|
|
|
|
|
|
\lib\MsgNotice::send('settle', $row['uid'], ['money'=>$row['money'], 'realmoney'=>$row['realmoney'], 'time'=>date('Y-m-d H:i:s'), 'account'=>$row['account']]);
|
|
|
} else {
|
|
|
if(in_array($result['errcode'], $payee_err_code)){
|
|
|
$data['code']=0;
|
|
|
$data['ret']=0;
|
|
|
$data['result']='转账失败 '.$result['msg'];
|
|
|
$DB->update('settle', ['status'=>3, 'result'=>$result["msg"], 'transfer_status'=>2, 'transfer_result'=>$data['result']], ['id'=>$id]);
|
|
|
}else{
|
|
|
$data['code']=-1;
|
|
|
$data['msg']=$result['msg'];
|
|
|
}
|
|
|
}
|
|
|
exit(json_encode($data));
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
exit('{"code":-4,"msg":"No Act"}');
|
|
|
break;
|
|
|
} |