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

191 lines
9.4 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");
$title='转账付款';
include './head.php';
if($islogin==1){}else exit("<script language='javascript'>window.location.href='./login.php';</script>");
?>
<div class="container" style="padding-top:70px;">
<div class="col-xs-12 col-sm-10 col-lg-8 center-block" style="float: none;">
<?php
$app = isset($_GET['app'])?$_GET['app']:'alipay';
if($app=='alipay'){
$default_channel = $conf['transfer_alipay'];
}elseif($app=='wxpay'){
$default_channel = $conf['transfer_wxpay'];
}elseif($app=='qqpay'){
$default_channel = $conf['transfer_qqpay'];
}elseif($app=='bank'){
$default_channel = $conf['transfer_bank'];
}else{
showmsg('参数错误',4);
}
if(isset($_POST['submit'])){
if(!checkRefererHost())exit();
$out_biz_no = trim($_POST['out_biz_no']);
if(!isset($_POST['paypwd']) || $_POST['paypwd']!==$conf['admin_paypwd'])showmsg('支付密码错误',3);
$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']));
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);
if ($app=='qqpay' && (!is_numeric($payee_account) || strlen($payee_account)<6 || strlen($payee_account)>10))showmsg('QQ号码格式错误',3);
$channelid = isset($_POST['channel'])?$_POST['channel']:$default_channel;
$channel = \lib\Channel::get($channelid);
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'=>0, 'type'=>$app, 'channel'=>$channelid, 'account'=>$payee_account, 'username'=>$payee_real_name, 'money'=>$money, 'costmoney'=>$money, 'addtime'=>'NOW()', 'paytime'=>$paytime, 'pay_order_no'=>$result['orderid'], 'status'=>$result['status'], 'desc'=>$desc];
if(isset($result['wxpackage'])) $data['ext'] = $result['wxpackage'];
$DB->insert('transfer', $data);
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'];
}
showmsg($result,1,'./transfer.php');
}else{
$result='转账失败:'.$result['msg'];
showmsg($result,4);
}
}
$out_biz_no = date("YmdHis").rand(11111,99999);
$channel_select = $DB->getAll("SELECT id,name,plugin FROM pre_channel WHERE plugin IN (SELECT name FROM pre_plugin WHERE transtypes LIKE '%".$app."%')");
$copy = [];
if(isset($_GET['copy'])){
$copy = $DB->find('transfer', '*', ['biz_no'=>trim($_GET['copy'])]);
}
?>
<div class="panel panel-primary">
<div class="panel-heading"><h3 class="panel-title">转账付款</h3></div>
<div class="panel-body">
<ul class="nav nav-tabs">
<li class="<?php echo $app=='alipay'?'active':null;?>"><a href="?app=alipay">支付宝</a></li><li class="<?php echo $app=='wxpay'?'active':null;?>"><a href="?app=wxpay">微信</a></li><li class="<?php echo $app=='qqpay'?'active':null;?>"><a href="?app=qqpay">QQ钱包</a></li><li class="<?php echo $app=='bank'?'active':null;?>"><a href="?app=bank">银行卡</a></li>
</ul>
<div class="tab-pane active" id="alipay">
<form action="?app=<?php echo $app?>" method="POST" role="form">
<input type="hidden" name="type" value="<?php echo $app?>"/>
<div class="form-group">
<div class="input-group"><div class="input-group-addon">通道选择</div>
<select name="channel" class="form-control" default="<?php echo $default_channel?>">
<?php foreach($channel_select as $channel){echo '<option value="'.$channel['id'].'">'.$channel['name'].''.($channel['id']==$default_channel?'(默认)':'').'</option>';} ?>
</select>
</div></div>
<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或支付宝Openid"/>
</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 href="./gettoken.php?app=wechat" 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" 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="desc" value="" class="form-control" placeholder="可留空,默认为:<?php echo $app=='alipay'?$conf['transfer_name']:$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>
<p><a href="javascript:balanceQuery()" class="btn btn-block btn-default">查询账户余额</a></p>
</form>
</div>
</div>
<div class="panel-footer">
<span class="glyphicon glyphicon-info-sign"></span> 交易号可以防止重复转账,同一个交易号只能提交同一次转账。<br/>
<a href="./set.php?mod=account">修改支付密码</a>
</div>
</div>
</div>
</div>
<script src="<?php echo $cdnpublic?>jquery-cookie/1.4.1/jquery.cookie.min.js"></script>
<script src="<?php echo $cdnpublic?>layer/3.1.1/layer.min.js"></script>
<script>
var items = $("select[default]");
for (i = 0; i < items.length; i++) {
$(items[i]).val($(items[i]).attr("default")||0);
}
function balanceQuery(){
var type = $("input[name=type]").val();
var channel = $("select[name=channel]").val();
if(channel == ''){
layer.alert('请先选择通道');return;
}
var ii = layer.load(2, {shade:[0.1,'#fff']});
$.ajax({
type : 'POST',
url : 'ajax_transfer.php?act=balance_query',
dataType : 'json',
data : {type: type, channel: channel},
success : function(data) {
layer.close(ii);
if(data.code == 0){
if(data.msg){
layer.alert(data.msg);
}else{
layer.alert('账户可用余额:'+data.amount+'元');
}
}else{
if(data.msg.indexOf('插件方法不存在')>-1) data.msg = '该通道不支持查询账户余额';
layer.alert(data.msg, {icon: 2})
}
},
error:function(data){
layer.close(ii);
layer.msg('服务器错误');
}
});
}
</script>