pay/user/transfer_add.php
2025-11-28 10:08:12 +08:00

287 lines
13 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
include("../includes/common.php");
if($islogin2==1){}else exit("<script language='javascript'>window.location.href='./login.php';</script>");
$title='新增代付';
include './head.php';
?>
<div id="content" class="app-content" role="main">
<div class="app-content-body ">
<div class="bg-light lter b-b wrapper-md hidden-print">
<h1 class="m-n font-thin h3">新增代付</h1>
</div>
<div class="wrapper-md control">
<?php if(isset($msg)){?>
<div class="alert alert-info">
<?php echo $msg?>
</div>
<?php }?>
<div class="row">
<div class="col-sm-12 col-md-10 col-lg-8 center-block" style="float: none;">
<?php
if(!$conf['user_transfer']) showmsg('未开启代付功能');
if($conf['settle_type']==1){
$today=date("Y-m-d").' 00:00:00';
$order_today=$DB->getColumn("SELECT SUM(realmoney) from pre_order where uid={$uid} and tid<>2 and status=1 and endtime>='$today'");
if(!$order_today) $order_today = 0;
$enable_money=round($userrow['money']-$order_today,2);
if($enable_money<0)$enable_money=0;
}else{
$enable_money=$userrow['money'];
}
if(!$conf['transfer_rate'])$conf['transfer_rate'] = $conf['settle_rate'];
$app = isset($_GET['app'])?$_GET['app']:'alipay';
if(isset($_POST['submit'])){
if(!checkRefererHost())exit();
$out_biz_no = trim($_POST['out_biz_no']);
$payee_account = htmlspecialchars(trim($_POST['payee_account']));
$payee_real_name = htmlspecialchars(trim($_POST['payee_real_name']));
$money = trim($_POST['money']);
$desc = htmlspecialchars(trim($_POST['desc']));
$pwd = trim($_POST['paypwd']);
$pwdenc = getMd5Pwd($pwd, $userrow['uid']);
if(empty($pwd) || $pwdenc!==$userrow['pwd'])showmsg('登录密码输入错误',3);
if(empty($out_biz_no) || empty($payee_account) || empty($money))showmsg('必填项不能为空',3);
if(strlen($out_biz_no)!=19 || !is_numeric($out_biz_no))showmsg('交易号输入不规范',3);
if($desc && mb_strlen($desc)>32)showmsg('转账备注最多32个字',3);
if(!is_numeric($money) || !preg_match('/^[0-9.]+$/', $money) || $money<=0)showmsg('转账金额输入不规范',3);
$need_money = round($money + $money*$conf['transfer_rate']/100,2);
if($need_money>$enable_money)showmsg('需支付金额大于可转账余额',3);
if($conf['transfer_minmoney']>0 && $money<$conf['transfer_minmoney'])showmsg('单笔最小代付金额限制为'.$conf['transfer_minmoney'].'元',3);
if($conf['transfer_maxmoney']>0 && $money>$conf['transfer_maxmoney'])showmsg('单笔最大代付金额限制为'.$conf['transfer_maxmoney'].'元',3);
if($userrow['settle']==0)showmsg('您的商户出现异常,无法使用代付功能',3);
if($conf['transfer_maxlimit']>0){
$a_count = $DB->getColumn('SELECT count(*) FROM pre_transfer WHERE uid=:uid AND type=:type AND account=:account AND paytime>=:paytime', [':uid'=>$uid, ':type'=>$app, ':account'=>$account, ':paytime'=>date('Y-m-d').' 00:00:00']);
if($a_count >= $conf['transfer_maxlimit']){
showmsg('您今天向该账号的转账次数已达到上限',3);
}
}
if($app=='alipay'){
$channelid = $conf['transfer_alipay'];
}elseif($app=='wxpay'){
$channelid = $conf['transfer_wxpay'];
}elseif($app=='qqpay'){
if (!is_numeric($payee_account) || strlen($payee_account)<6 || strlen($payee_account)>10)showmsg('QQ号码格式错误',3);
$channelid = $conf['transfer_qqpay'];
}elseif($app=='bank'){
$channelid = $conf['transfer_bank'];
}else{
showmsg('参数错误',4);
}
$channel = \lib\Channel::get($channelid, $userrow['channelinfo']);
if(!$channel)showmsg('当前支付通道信息不存在',4);
$result = \lib\Transfer::submit($app, $channel, $out_biz_no, $payee_account, $payee_real_name, $money, $desc);
if($result['code']==0){
$paytime = $result['status'] == 1 ? 'NOW()' : null;
$data = ['biz_no'=>$out_biz_no, 'uid'=>$uid, 'type'=>$app, 'channel'=>$channelid, 'account'=>$payee_account, 'username'=>$payee_real_name, 'money'=>$money, 'costmoney'=>$need_money, 'addtime'=>'NOW()', 'paytime'=>$paytime, 'pay_order_no'=>$result['orderid'], 'status'=>$result['status'], 'desc'=>$desc];
if(isset($result['wxpackage'])) $data['ext'] = $result['wxpackage'];
if($DB->insert('transfer', $data)!==false){
changeUserMoney($uid, $need_money, false, '代付');
}
if($result['status'] == 1){
$result='转账成功!转账单据号:'.$result['orderid'].' 支付时间:'.$result['paydate'];
}elseif(isset($result['wxpackage'])){
$result='提交成功请在付款记录页面扫描二维码确认收款1天内未确认将退还给商家。转账单据号:'.$result['orderid'].' 支付时间:'.$result['paydate'];
}else{
$result='提交成功!转账处理中,请稍后在代付管理页面查看结果。转账单据号:'.$result['orderid'].' 支付时间:'.$result['paydate'];
}
$_SESSION['transfer_desc'] = $desc;
showmsg($result,1,'./transfer.php');
}else{
$result='转账失败,'.$result['msg'];
showmsg($result,4);
}
}
$out_biz_no = date("YmdHis").rand(11111,99999);
$desc = $_SESSION['transfer_desc'];
$copy = [];
if(isset($_GET['copy'])){
$copy = $DB->find('transfer', '*', ['biz_no'=>trim($_GET['copy'])]);
}
?>
<div class="panel panel-default">
<div class="panel-heading font-bold">
新增代付
</div>
<div class="panel-body">
<ul class="nav nav-tabs">
<?php if($conf['transfer_alipay']>0){?><li class="<?php echo $app=='alipay'?'active':null;?>"><a href="?app=alipay">支付宝</a></li><?php }?>
<?php if($conf['transfer_wxpay']>0){?><li class="<?php echo $app=='wxpay'?'active':null;?>"><a href="?app=wxpay">微信</a></li><?php }?>
<?php if($conf['transfer_qqpay']>0){?><li class="<?php echo $app=='qqpay'?'active':null;?>"><a href="?app=qqpay">QQ钱包</a></li><?php }?>
<?php if($conf['transfer_bank']>0){?><li class="<?php echo $app=='bank'?'active':null;?>"><a href="?app=bank">银行卡</a></li><?php }?>
</ul>
<div class="tab-pane active" id="alipay">
<form action="?app=<?php echo $app?>" method="POST" role="form">
<input type="hidden" name="rate" value="<?php echo $conf['transfer_rate']?>"/>
<div class="form-group">
<div class="input-group"><div class="input-group-addon">交易号</div>
<input type="text" name="out_biz_no" value="<?php echo $out_biz_no?>" class="form-control" required/>
</div></div>
<?php if($app=='alipay'){?>
<div class="form-group">
<div class="input-group"><div class="input-group-addon">支付宝账号</div>
<input type="text" name="payee_account" value="<?php echo $copy['account']?>" class="form-control" required placeholder="支付宝登录账号或支付宝UID"/>
</div></div>
<div class="form-group">
<div class="input-group"><div class="input-group-addon">支付宝姓名</div>
<input type="text" name="payee_real_name" value="<?php echo $copy['username']?>" class="form-control" placeholder="不填写则不校验真实姓名"/>
</div></div>
<?php }elseif($app=='wxpay'){?>
<div class="form-group">
<div class="input-group"><div class="input-group-addon">Openid</div>
<input type="text" name="payee_account" value="<?php echo $copy['account']?>" class="form-control" required placeholder="只能填写微信Openid"/>
<div class="input-group-btn"><a id="getopenid" class="btn btn-default">获取</a></div>
</div></div>
<div class="form-group">
<div class="input-group"><div class="input-group-addon">真实姓名</div>
<input type="text" name="payee_real_name" value="<?php echo $copy['username']?>" class="form-control" placeholder="不填写则不校验真实姓名"/>
</div></div>
<?php }elseif($app=='qqpay'){?>
<div class="form-group">
<div class="input-group"><div class="input-group-addon">收款方QQ</div>
<input type="text" name="payee_account" value="<?php echo $copy['account']?>" class="form-control" required/>
</div></div>
<div class="form-group">
<div class="input-group"><div class="input-group-addon">真实姓名</div>
<input type="text" name="payee_real_name" value="<?php echo $copy['username']?>" class="form-control" placeholder="不填写则不校验真实姓名"/>
</div></div>
<?php }elseif($app=='bank'){?>
<div class="form-group">
<div class="input-group"><div class="input-group-addon">银行卡号</div>
<input type="text" name="payee_account" value="<?php echo $copy['account']?>" class="form-control" required placeholder="收款方银行卡号"/>
</div></div>
<div class="form-group">
<div class="input-group"><div class="input-group-addon">姓名</div>
<input type="text" name="payee_real_name" value="<?php echo $copy['username']?>" class="form-control" placeholder="收款方银行账户名称"/>
</div></div>
<?php }?>
<div class="form-group">
<div class="input-group"><div class="input-group-addon">可转账余额</div>
<input type="text" value="<?php echo $enable_money?>" class="form-control" disabled/>
<?php if($conf['recharge']==1){?><div class="input-group-btn"><a href="./recharge.php" class="btn btn-default">充值</a></div><?php }?>
</div></div>
<div class="form-group">
<div class="input-group"><div class="input-group-addon">转账金额</div>
<input type="text" name="money" value="" class="form-control" placeholder="RMB/元" required/>
</div></div>
<div class="form-group">
<div class="input-group"><div class="input-group-addon">需支付金额</div>
<input type="text" name="need" value="" class="form-control" disabled/>
</div></div>
<div class="form-group">
<div class="input-group"><div class="input-group-addon">转账备注</div>
<input type="text" name="desc" value="<?php echo $desc?>" class="form-control" placeholder="选填,默认为:<?php echo $conf['transfer_desc']?>"/>
</div></div>
<div class="form-group">
<div class="input-group"><div class="input-group-addon">验证登录密码</div>
<input type="text" name="paypwd" value="" class="form-control" required/>
</div></div>
<p><input type="submit" name="submit" value="立即转账" class="btn btn-primary form-control"/></p>
</form>
</div>
</div>
<div class="panel-footer">
<h4><span class="glyphicon glyphicon-info-sign"></span>注意事项</h4>
交易号可以防止重复转账,同一个交易号只能提交同一次转账。<br/>
代付手续费是<?php echo $conf['transfer_rate']; ?>%<?php if($conf['transfer_minmoney']>0)echo ',单笔最小代付'.$conf['transfer_minmoney'].'元'; if($conf['transfer_maxmoney']>0)echo ',单笔最大代付'.$conf['transfer_maxmoney'].'元';?>
<?php if($conf['settle_type']==1){?><br/>可转账余额为截止到前一天你的收入+充值的余额。<?php }?>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<?php include 'foot.php';?>
<script src="<?php echo $cdnpublic?>layer/3.1.1/layer.min.js"></script>
<script src="<?php echo $cdnpublic?>jquery.qrcode/1.0/jquery.qrcode.min.js"></script>
<script>
function showneed(){
var money = parseFloat($("input[name='money']").val());
var rate = parseFloat($("input[name='rate']").val());
if(isNaN(money) || isNaN(rate))return;
var need = (money + money * (rate/100)).toFixed(2);
$("input[name='need']").val(need)
}
function checkopenid(){
$.ajax({
type: "GET",
dataType: "json",
url: "ajax.php?act=getopenid",
success: function (data, textStatus) {
if (data.code == 0) {
layer.msg('Openid获取成功');
layer.close($.openidform);
$("input[name='payee_account']").val(data.openid);
}else if($.ostart==true){
setTimeout('checkopenid()', 2000);
}else{
return false;
}
},
error: function (data) {
layer.msg('服务器错误', {icon: 2});
return false;
}
});
}
$(document).ready(function(){
$("input[name='money']").blur(function(){
showneed()
});
$('#getopenid').click(function () {
if ($(this).attr("data-lock") === "true") return;
$(this).attr("data-lock", "true");
$.ajax({
type : "GET",
url : "ajax.php?act=qrcode",
dataType : 'json',
success : function(data) {
$('#getopenid').attr("data-lock", "false");
if(data.code == 0){
$.openidform = layer.open({
type: 1,
title: '请收款方使用微信扫描以下二维码',
skin: 'layui-layer-demo',
anim: 2,
shadeClose: true,
content: '<div id="qrcode" class="list-group-item text-center" style="height:250px"></div>',
success: function(){
$('#qrcode').qrcode({
text: data.url,
width: 230,
height: 230,
foreground: "#000000",
background: "#ffffff",
typeNumber: -1
});
$.ostart = true;
setTimeout('checkopenid()', 2000);
},
end: function(){
$.ostart = false;
}
});
}else{
layer.alert(data.msg, {icon: 0});
}
},
error:function(data){
layer.msg('服务器错误', {icon: 2});
return false;
}
});
});
})
</script>