|
|
<?php
|
|
|
include("../includes/common.php");
|
|
|
if($islogin2==1){}else exit("<script language='javascript'>window.location.href='./login.php';</script>");
|
|
|
$title='订单记录';
|
|
|
include './head.php';
|
|
|
?>
|
|
|
<?php
|
|
|
|
|
|
$type_select = '<option value="0">所有支付方式</option>';
|
|
|
$rs = $DB->getAll("SELECT * FROM pre_type WHERE status=1 ORDER BY id ASC");
|
|
|
foreach($rs as $row){
|
|
|
$type_select .= '<option value="'.$row['id'].'">'.$row['showname'].'</option>';
|
|
|
}
|
|
|
unset($rs);
|
|
|
|
|
|
?>
|
|
|
<style>
|
|
|
|
|
|
|
|
|
.dates{max-width: 120px;}
|
|
|
.fixed-table-toolbar,.fixed-table-pagination{padding: 15px;}
|
|
|
</style>
|
|
|
<link href="../assets/css/datepicker.css" rel="stylesheet">
|
|
|
<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="panel panel-default">
|
|
|
<div class="panel-heading font-bold">
|
|
|
<h3 class="panel-title">订单记录</h3>
|
|
|
</div>
|
|
|
|
|
|
<form onsubmit="return searchSubmit()" method="GET" class="form-inline" id="searchToolbar">
|
|
|
<div class="form-group">
|
|
|
<select class="form-control" name="type">
|
|
|
<option value="1">系统订单号</option>
|
|
|
<option value="2">商户订单号</option>
|
|
|
<option value="3">商品名称</option>
|
|
|
<option value="4">商品金额</option>
|
|
|
<option value="5">实付金额</option>
|
|
|
<option value="6">网站域名</option>
|
|
|
</select>
|
|
|
</div>
|
|
|
<div class="form-group" id="searchword">
|
|
|
<input type="text" class="form-control" name="kw" placeholder="搜索内容" style="min-width: 300px;">
|
|
|
</div>
|
|
|
<div class="input-group input-daterange">
|
|
|
<input type="text" id="starttime" name="starttime" class="form-control dates" placeholder="开始日期" autocomplete="off" title="留空则不限时间范围">
|
|
|
<span class="input-group-addon" onclick="$('#starttime').val('');$('#endtime').val('');" title="清除"><i class="fa fa-chevron-right"></i></span>
|
|
|
<input type="text" id="endtime" name="endtime" class="form-control dates" placeholder="结束日期" autocomplete="off" title="留空则不限时间范围">
|
|
|
</div>
|
|
|
<div class="form-group">
|
|
|
<select name="paytype" class="form-control"><?php echo $type_select?></select>
|
|
|
</div>
|
|
|
<div class="form-group">
|
|
|
<select name="dstatus" class="form-control"><option value="-1">全部状态</option><option value="0">状态未支付</option><option value="1">状态已支付</option><option value="2">状态已退款</option><option value="3">状态已冻结</option></select>
|
|
|
</div>
|
|
|
<button class="btn btn-primary" type="submit"><i class="fa fa-search"></i> 搜索</button>
|
|
|
<a href="javascript:searchClear()" class="btn btn-default"><i class="fa fa-refresh"></i> 重置</a>
|
|
|
</form>
|
|
|
<table id="listTable">
|
|
|
</table>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<a style="display: none;" href="" id="vurl" rel="noreferrer" target="_blank"></a>
|
|
|
<?php include 'foot.php';?>
|
|
|
<script src="<?php echo $cdnpublic?>layer/3.1.1/layer.min.js"></script>
|
|
|
<script src="<?php echo $cdnpublic?>bootstrap-datepicker/1.9.0/js/bootstrap-datepicker.min.js"></script>
|
|
|
<script src="<?php echo $cdnpublic?>bootstrap-datepicker/1.9.0/locales/bootstrap-datepicker.zh-CN.min.js"></script>
|
|
|
<script src="<?php echo $cdnpublic?>bootstrap-table/1.20.2/bootstrap-table.min.js"></script>
|
|
|
<script src="<?php echo $cdnpublic?>bootstrap-table/1.20.2/extensions/page-jump-to/bootstrap-table-page-jump-to.min.js"></script>
|
|
|
<script src="../assets/js/custom.js"></script>
|
|
|
<script>
|
|
|
var is_user_refund = '<?php echo $conf['user_refund']?>';
|
|
|
$(document).ready(function(){
|
|
|
updateToolbar();
|
|
|
const defaultPageSize = 20;
|
|
|
const pageNumber = typeof window.$_GET['pageNumber'] != 'undefined' ? parseInt(window.$_GET['pageNumber']) : 1;
|
|
|
const pageSize = typeof window.$_GET['pageSize'] != 'undefined' ? parseInt(window.$_GET['pageSize']) : defaultPageSize;
|
|
|
|
|
|
$("#listTable").bootstrapTable({
|
|
|
url: 'ajax2.php?act=orderList',
|
|
|
pageNumber: pageNumber,
|
|
|
pageSize: pageSize,
|
|
|
classes: 'table table-striped table-hover table-bordered',
|
|
|
columns: [
|
|
|
{
|
|
|
field: 'trade_no',
|
|
|
title: '系统订单号/商户订单号',
|
|
|
formatter: function(value, row, index) {
|
|
|
return '<a href="javascript:showOrder(\''+value+'\')" title="点击查看详情">'+value+'</a></b><br/>'+row.out_trade_no;
|
|
|
}
|
|
|
},
|
|
|
{
|
|
|
field: 'name',
|
|
|
title: '商品名称'
|
|
|
},
|
|
|
{
|
|
|
field: 'money',
|
|
|
title: '商品金额',
|
|
|
formatter: function(value, row, index) {
|
|
|
return '¥<b>'+value+'</b>';
|
|
|
}
|
|
|
},
|
|
|
{
|
|
|
field: 'typename',
|
|
|
title: '支付方式',
|
|
|
formatter: function(value, row, index) {
|
|
|
return value ? '<b><img src="/assets/icon/'+value+'.ico" width="16" onerror="this.style.display=\'none\'">'+row.typeshowname+'</b>' : '';
|
|
|
}
|
|
|
},
|
|
|
{
|
|
|
field: 'addtime',
|
|
|
title: '创建时间/完成时间',
|
|
|
formatter: function(value, row, index) {
|
|
|
return value+'<br/>'+(row.endtime??' ');
|
|
|
}
|
|
|
},
|
|
|
{
|
|
|
field: 'status',
|
|
|
title: '支付状态',
|
|
|
formatter: function(value, row, index) {
|
|
|
if(value == '1'){
|
|
|
return '<font color=green>已支付</font>';
|
|
|
}else if(value == '2'){
|
|
|
return '<font color=red>已退款</font>';
|
|
|
}else if(value == '3'){
|
|
|
return '<font color=red>已冻结</font>';
|
|
|
}else if(value == '4'){
|
|
|
return '<font color=orange>预授权</font>';
|
|
|
}else{
|
|
|
return '<font color=blue>未支付</font>';
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
{
|
|
|
field: '',
|
|
|
title: '操作',
|
|
|
formatter: function(value, row, index) {
|
|
|
var html = '<a href="./record.php?type=3&kw='+row.trade_no+'" class="btn btn-info btn-xs">明细</a> <a href="javascript:callnotify(\''+row.trade_no+'\')" class="btn btn-success btn-xs">补单</a>';
|
|
|
if(is_user_refund=='1' && row.status=='1'){
|
|
|
html += ' <a href="javascript:refund(\''+row.trade_no+'\')" class="btn btn-danger btn-xs">退款</a>';
|
|
|
}
|
|
|
return html;
|
|
|
}
|
|
|
},
|
|
|
],
|
|
|
});
|
|
|
|
|
|
$('.input-datepicker, .input-daterange').datepicker({
|
|
|
format: 'yyyy-mm-dd',
|
|
|
autoclose: true,
|
|
|
clearBtn: true,
|
|
|
language: 'zh-CN'
|
|
|
});
|
|
|
})
|
|
|
|
|
|
function callnotify(trade_no){
|
|
|
var ii = layer.load(2, {shade:[0.1,'#fff']});
|
|
|
$.ajax({
|
|
|
type : 'POST',
|
|
|
url : 'ajax2.php?act=notify',
|
|
|
data : {trade_no:trade_no},
|
|
|
dataType : 'json',
|
|
|
success : function(data) {
|
|
|
layer.close(ii);
|
|
|
if(data.code == 0){
|
|
|
$("#vurl").attr("href",data.url);
|
|
|
document.getElementById("vurl").click();
|
|
|
listTable();
|
|
|
}else{
|
|
|
layer.alert(data.msg);
|
|
|
}
|
|
|
},
|
|
|
error:function(data){
|
|
|
layer.msg('服务器错误');
|
|
|
}
|
|
|
});
|
|
|
return false;
|
|
|
}
|
|
|
function callreturn(trade_no){
|
|
|
var ii = layer.load(2, {shade:[0.1,'#fff']});
|
|
|
$.ajax({
|
|
|
type : 'POST',
|
|
|
url : 'ajax2.php?act=notify',
|
|
|
data : {trade_no:trade_no,isreturn:1},
|
|
|
dataType : 'json',
|
|
|
success : function(data) {
|
|
|
layer.close(ii);
|
|
|
if(data.code == 0){
|
|
|
$("#vurl").attr("href",data.url);
|
|
|
document.getElementById("vurl").click();
|
|
|
listTable();
|
|
|
}else{
|
|
|
layer.alert(data.msg);
|
|
|
}
|
|
|
},
|
|
|
error:function(data){
|
|
|
layer.msg('服务器错误');
|
|
|
}
|
|
|
});
|
|
|
return false;
|
|
|
}
|
|
|
function refund(trade_no) {
|
|
|
var ii = layer.load(2, {shade:[0.1,'#fff']});
|
|
|
$.ajax({
|
|
|
type : 'POST',
|
|
|
url : 'ajax2.php?act=refund_query',
|
|
|
data : {trade_no:trade_no},
|
|
|
dataType : 'json',
|
|
|
success : function(data) {
|
|
|
layer.close(ii);
|
|
|
if(data.code == 0){
|
|
|
layer.open({
|
|
|
area: ['360px'],
|
|
|
title: '退款确认',
|
|
|
content: '<p>此操作将直接原路退款该订单,每个订单只能操作一次退款,退款金额不能大于订单金额。</p><div class="form-group"><div class="input-group"><div class="input-group-addon">退款金额</div><input type="text" class="form-control" name="refund2" value="'+data.money+'" placeholder="请输入退款金额" autocomplete="off"/></div></div><div class="form-group"><div class="input-group"><div class="input-group-addon">登录密码</div><input type="text" class="form-control" name="paypwd" value="" placeholder="请输入用户登录密码" autocomplete="off"/></div></div>',
|
|
|
yes: function(){
|
|
|
var money = $("input[name='refund2']").val();
|
|
|
var paypwd = $("input[name='paypwd']").val();
|
|
|
if(money == '' || paypwd == ''){
|
|
|
layer.alert('金额或密码不能为空');return;
|
|
|
}
|
|
|
var ii = layer.load(2, {shade:[0.1,'#fff']});
|
|
|
$.ajax({
|
|
|
type : 'POST',
|
|
|
url : 'ajax2.php?act=refund_submit',
|
|
|
data : {trade_no:trade_no, money:money, pwd:paypwd},
|
|
|
dataType : 'json',
|
|
|
success : function(data) {
|
|
|
layer.close(ii);
|
|
|
if(data.code == 0){
|
|
|
layer.alert(data.msg, {icon:1}, function(){ layer.closeAll();searchSubmit(); });
|
|
|
}else{
|
|
|
layer.alert(data.msg, {icon:7});
|
|
|
}
|
|
|
},
|
|
|
error:function(data){
|
|
|
layer.close(ii);
|
|
|
layer.msg('服务器错误');
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
}else{
|
|
|
layer.alert(data.msg, {icon:7});
|
|
|
}
|
|
|
},
|
|
|
error:function(data){
|
|
|
layer.close(ii);
|
|
|
layer.msg('服务器错误');
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
function showOrder(trade_no) {
|
|
|
var ii = layer.load(2, {shade:[0.1,'#fff']});
|
|
|
var status = ['<span class="label label-primary">未支付</span>','<span class="label label-success">已支付</span>','<span class="label label-red">已退款</span>'];
|
|
|
$.ajax({
|
|
|
type : 'GET',
|
|
|
url : 'ajax2.php?act=order&trade_no='+trade_no,
|
|
|
dataType : 'json',
|
|
|
success : function(data) {
|
|
|
layer.close(ii);
|
|
|
if(data.code == 0){
|
|
|
var data = data.data;
|
|
|
var item = '<table class="table table-condensed table-hover" id="orderItem">';
|
|
|
item += '<tr><td colspan="6" style="text-align:center" class="orderTitle"><b>订单信息</b></td></tr>';
|
|
|
item += '<tr class="orderTitle"><td class="info" class="orderTitle">系统订单号</td><td colspan="5" class="orderContent">'+data.trade_no+'</td></tr>';
|
|
|
item += '<tr><td class="info" class="orderTitle">商户订单号</td><td colspan="5" class="orderContent">'+data.out_trade_no+'</td></tr>';
|
|
|
item += '<tr><td class="info" class="orderTitle">接口订单号</td><td colspan="5" class="orderContent">'+data.api_trade_no+'</td></tr>';
|
|
|
item += '</tr><tr><td class="info" class="orderTitle">支付方式</td><td colspan="5" class="orderContent">'+data.typename+'</td></tr>';
|
|
|
item += '</tr><tr><td class="info" class="orderTitle">商品名称</td><td colspan="5" class="orderContent">'+data.name+'</td></tr>';
|
|
|
item += '</tr><tr><td class="info" class="orderTitle">订单金额</td><td colspan="5" class="orderContent">'+data.money+'</td></tr>';
|
|
|
item += '</tr><tr><td class="info" class="orderTitle">实际支付金额</td><td colspan="5" class="orderContent">'+data.realmoney+'</td></tr>';
|
|
|
item += '</tr><tr><td class="info" class="orderTitle">商户分成金额</td><td colspan="5" class="orderContent">'+data.getmoney+'</td></tr>';
|
|
|
item += '</tr><tr><td class="info" class="orderTitle">创建时间</td><td colspan="5" class="orderContent">'+data.addtime+'</td></tr>';
|
|
|
item += '</tr><tr><td class="info" class="orderTitle">完成时间</td><td colspan="5" class="orderContent">'+data.endtime+'</td></tr>';
|
|
|
item += '</tr><tr><td class="info" class="orderTitle" title="只有在官方通道支付完成后才能显示">支付账号</td><td colspan="5" class="orderContent">'+data.buyer+'</td></tr>';
|
|
|
item += '</tr><tr><td class="info" class="orderTitle">网站域名</td><td colspan="5" class="orderContent"><a href="http://'+data.domain+'" target="_blank" rel="noreferrer">'+data.domain+'</a></td></tr>';
|
|
|
item += '</tr><tr><td class="info" class="orderTitle">支付IP</td><td colspan="5" class="orderContent"><a href="https://m.ip138.com/iplookup.asp?ip='+data.ip+'" target="_blank" rel="noreferrer">'+data.ip+'</a></td></tr>';
|
|
|
item += '<tr><td class="info" class="orderTitle">扩展参数</td><td colspan="5" class="orderContent">'+data.param+'</td></tr>';
|
|
|
item += '<tr><td class="info" class="orderTitle">订单状态</td><td colspan="5" class="orderContent">'+status[data.status]+'</td></tr>';
|
|
|
if(data.status>0){
|
|
|
item += '<tr><td class="info" class="orderTitle">通知状态</td><td colspan="5" class="orderContent">'+(data.notify==0?'<span class="label label-success">通知成功</span>':'<span class="label label-danger">通知失败</span>(已通知'+data.notify+'次)')+'</td></tr>';
|
|
|
}
|
|
|
item += '<tr><td colspan="6" style="text-align:center" class="orderTitle"><b>订单操作</b></td></tr>';
|
|
|
item += '<tr><td colspan="6"><a href="javascript:callnotify(\''+data.trade_no+'\')" class="btn btn-xs btn-default">重新通知(异步)</a> <a href="javascript:callreturn(\''+data.trade_no+'\')" class="btn btn-xs btn-default">重新通知(同步)</a></td></tr>';
|
|
|
item += '</table>';
|
|
|
var area = [$(window).width() > 480 ? '480px' : '100%'];
|
|
|
layer.open({
|
|
|
type: 1,
|
|
|
area: area,
|
|
|
title: '订单详细信息',
|
|
|
skin: 'layui-layer-rim',
|
|
|
content: item
|
|
|
});
|
|
|
}else{
|
|
|
layer.alert(data.msg);
|
|
|
}
|
|
|
},
|
|
|
error:function(data){
|
|
|
layer.msg('服务器错误');
|
|
|
return false;
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
</script> |