切换导航条
此项目
正在载入...
登录
李涵
/
integral
·
提交
转到一个项目
GitLab
转到仪表盘
项目
活动
文件
提交
管道
0
构建
0
图表
里程碑
问题
0
合并请求
0
成员
标记
维基
派生
网络
创建新的问题
下载为
邮件补丁
差异文件
浏览文件
作者
lihan
6 years ago
提交
3771afa2dd5aa6259034d6e870f067622408a6a4
1 个父辈
e04d1858
1 个管道 的构建
通过
耗费 1 秒
退货&退款
变更
3
构建
1
隐藏空白字符变更
内嵌
并排对比
正在显示
3 个修改的文件
包含
445 行增加
和
223 行删除
app/admin/controller/ZjOrderController.php
simplewind/extend/Payment.php
simplewind/extend/Refund.php
app/admin/controller/ZjOrderController.php
查看文件 @
3771afa
...
...
@@ -18,128 +18,132 @@ class ZjOrderController extends AdminBaseController
/**
* 订单列表
*/
public
function
index
(){
$where
[
'o.delete_time'
]
=
0
;
$arr
=
[];
$where1
=
[];
if
(
$this
->
request
->
param
()){
$arr
=
input
(
'param.'
);
if
(
!
empty
(
$arr
[
'uid'
])){
$where
[
'o.uid'
]
=
$arr
[
'uid'
];
public
function
index
()
{
$where
[
'o.delete_time'
]
=
0
;
$arr
=
[];
$where1
=
[];
if
(
$this
->
request
->
param
())
{
$arr
=
input
(
'param.'
);
if
(
!
empty
(
$arr
[
'uid'
]))
{
$where
[
'o.uid'
]
=
$arr
[
'uid'
];
}
if
(
!
empty
(
$arr
[
'yi'
])){
$where
[
'o.cid'
]
=
$arr
[
'yi'
];
if
(
!
empty
(
$arr
[
'yi'
]))
{
$where
[
'o.cid'
]
=
$arr
[
'yi'
];
}
if
(
!
empty
(
$arr
[
'er'
])){
$where
[
'o.cids'
]
=
[
'like'
,
'%-'
.
$arr
[
'er'
]
.
'-%'
];
if
(
!
empty
(
$arr
[
'er'
]))
{
$where
[
'o.cids'
]
=
[
'like'
,
'%-'
.
$arr
[
'er'
]
.
'-%'
];
}
if
(
!
empty
(
$arr
[
'step'
])){
$where
[
'o.step'
]
=
$arr
[
'step'
];
if
(
!
empty
(
$arr
[
'step'
]))
{
$where
[
'o.step'
]
=
$arr
[
'step'
];
}
if
(
!
empty
(
$arr
[
'num'
])){
$where
[
'o.order_num'
]
=
$arr
[
'num'
];
if
(
!
empty
(
$arr
[
'num'
]))
{
$where
[
'o.order_num'
]
=
$arr
[
'num'
];
}
if
(
!
empty
(
$arr
[
'name'
])){
$where
[
'o.name'
]
=
$arr
[
'name'
];
if
(
!
empty
(
$arr
[
'name'
]))
{
$where
[
'o.name'
]
=
$arr
[
'name'
];
}
if
(
!
empty
(
$arr
[
'mobile'
])){
$where
[
'o.mobile'
]
=
$arr
[
'mobile'
];
if
(
!
empty
(
$arr
[
'mobile'
]))
{
$where
[
'o.mobile'
]
=
$arr
[
'mobile'
];
}
if
(
!
empty
(
$arr
[
'start_time'
])){
$where
[
'o.create_time'
]
=
[
'egt'
,
strtotime
(
$arr
[
'start_time'
])];
if
(
!
empty
(
$arr
[
'start_time'
]))
{
$where
[
'o.create_time'
]
=
[
'egt'
,
strtotime
(
$arr
[
'start_time'
])];
}
if
(
!
empty
(
$arr
[
'end_time'
])){
$where1
[
'o.create_time'
]
=
[
'elt'
,
strtotime
(
$arr
[
'end_time'
])];
if
(
!
empty
(
$arr
[
'end_time'
]))
{
$where1
[
'o.create_time'
]
=
[
'elt'
,
strtotime
(
$arr
[
'end_time'
])];
}
}
$all
=
Db
::
name
(
'zj_order'
)
->
alias
(
'o'
)
->
join
(
'user u'
,
'o.uid=u.id'
,
'left'
)
->
where
(
$where
)
->
where
(
$where1
)
->
order
(
'create_time'
,
'desc'
)
->
field
(
'o.*,u.user_nickname'
)
->
paginate
(
15
);
$all
=
Db
::
name
(
'zj_order'
)
->
alias
(
'o'
)
->
join
(
'user u'
,
'o.uid=u.id'
,
'left'
)
->
where
(
$where
)
->
where
(
$where1
)
->
order
(
'create_time'
,
'desc'
)
->
field
(
'o.*,u.user_nickname'
)
->
paginate
(
15
);
$all
->
appends
(
$arr
);
//查询商品分类
$cate
=
Db
::
name
(
'zj_category'
)
->
where
([
'delete_time'
=>
'0'
])
->
field
(
'name,id,cid,grade'
)
->
select
()
->
toArray
();
$cate1
=
[];
$cate2
=
[];
foreach
(
$cate
as
$k
=>
$v
){
if
(
$cate
[
$k
][
'grade'
]
==
1
){
$cate1
[
$k
]
=
$cate
[
$k
];
}
else
{
$cate2
[
$k
]
=
$cate
[
$k
];
$cate
=
Db
::
name
(
'zj_category'
)
->
where
([
'delete_time'
=>
'0'
])
->
field
(
'name,id,cid,grade'
)
->
select
()
->
toArray
();
$cate1
=
[];
$cate2
=
[];
foreach
(
$cate
as
$k
=>
$v
)
{
if
(
$cate
[
$k
][
'grade'
]
==
1
)
{
$cate1
[
$k
]
=
$cate
[
$k
];
}
else
{
$cate2
[
$k
]
=
$cate
[
$k
];
}
}
$cate1
=
array_values
(
$cate1
);
$cate2
=
array_values
(
$cate2
);
$cate1
=
array_values
(
$cate1
);
$cate2
=
array_values
(
$cate2
);
$this
->
assign
(
'start_time'
,
!
empty
(
$arr
[
'start_time'
])
?
$arr
[
'start_time'
]
:
''
);
$this
->
assign
(
'end_time'
,
!
empty
(
$arr
[
'end_time'
])
?
$arr
[
'end_time'
]
:
''
);
$this
->
assign
(
'uid'
,
!
empty
(
$arr
[
'uid'
])
?
$arr
[
'uid'
]
:
''
);
$this
->
assign
(
'step'
,
!
empty
(
$arr
[
'step'
])
?
$arr
[
'step'
]
:
''
);
$this
->
assign
(
'num'
,
!
empty
(
$arr
[
'num'
])
?
$arr
[
'num'
]
:
''
);
$this
->
assign
(
'name'
,
!
empty
(
$arr
[
'name'
])
?
$arr
[
'name'
]
:
''
);
$this
->
assign
(
'mobile'
,
!
empty
(
$arr
[
'mobile'
])
?
$arr
[
'mobile'
]
:
''
);
$this
->
assign
(
'yi'
,
!
empty
(
$arr
[
'yi'
])
?
$arr
[
'yi'
]
:
''
);
$this
->
assign
(
'er'
,
!
empty
(
$arr
[
'er'
])
?
$arr
[
'er'
]
:
''
);
$this
->
assign
(
'page'
,
$all
->
render
());
$this
->
assign
(
'all'
,
$all
->
items
());
$this
->
assign
(
'cate1'
,
$cate1
);
$this
->
assign
(
'cate2'
,
$cate2
);
$this
->
assign
(
'uid'
,
!
empty
(
$arr
[
'uid'
])
?
$arr
[
'uid'
]
:
''
);
$this
->
assign
(
'step'
,
!
empty
(
$arr
[
'step'
])
?
$arr
[
'step'
]
:
''
);
$this
->
assign
(
'num'
,
!
empty
(
$arr
[
'num'
])
?
$arr
[
'num'
]
:
''
);
$this
->
assign
(
'name'
,
!
empty
(
$arr
[
'name'
])
?
$arr
[
'name'
]
:
''
);
$this
->
assign
(
'mobile'
,
!
empty
(
$arr
[
'mobile'
])
?
$arr
[
'mobile'
]
:
''
);
$this
->
assign
(
'yi'
,
!
empty
(
$arr
[
'yi'
])
?
$arr
[
'yi'
]
:
''
);
$this
->
assign
(
'er'
,
!
empty
(
$arr
[
'er'
])
?
$arr
[
'er'
]
:
''
);
$this
->
assign
(
'page'
,
$all
->
render
());
$this
->
assign
(
'all'
,
$all
->
items
());
$this
->
assign
(
'cate1'
,
$cate1
);
$this
->
assign
(
'cate2'
,
$cate2
);
return
$this
->
fetch
();
}
/**
* 订单详情
*/
public
function
detail
(){
if
(
$this
->
request
->
param
()){
$id
=
input
(
'param.id'
);
$url
=
input
(
'param.sta'
);
if
(
$url
==
1
){
$url
=
url
(
'index'
);
}
elseif
(
$url
==
2
){
$url
=
url
(
'backlog'
);
public
function
detail
()
{
if
(
$this
->
request
->
param
())
{
$id
=
input
(
'param.id'
);
$url
=
input
(
'param.sta'
);
if
(
$url
==
1
)
{
$url
=
url
(
'index'
);
}
elseif
(
$url
==
2
)
{
$url
=
url
(
'backlog'
);
}
$one
=
Db
::
name
(
'zj_order'
)
->
alias
(
'o'
)
->
join
(
'user u'
,
'o.uid=u.id'
,
'left'
)
->
join
(
'zj_kd k'
,
'o.kid=k.id'
,
'left'
)
->
where
(
'o.id'
,
$id
)
->
field
(
'o.*,u.user_nickname,k.name as kname'
)
->
find
();
$kd
=
Db
::
name
(
'zj_kd'
)
->
select
();
$all
=
Db
::
name
(
'zj_order_goods'
)
->
alias
(
'og'
)
->
join
(
'zj_goods g'
,
'og.gid=g.id'
)
->
where
(
'oid'
,
$id
)
$one
=
Db
::
name
(
'zj_order'
)
->
alias
(
'o'
)
->
join
(
'user u'
,
'o.uid=u.id'
,
'left'
)
->
join
(
'zj_kd k'
,
'o.kid=k.id'
,
'left'
)
->
where
(
'o.id'
,
$id
)
->
field
(
'o.*,u.user_nickname,k.name as kname'
)
->
find
();
$kd
=
Db
::
name
(
'zj_kd'
)
->
select
();
$all
=
Db
::
name
(
'zj_order_goods'
)
->
alias
(
'og'
)
->
join
(
'zj_goods g'
,
'og.gid=g.id'
)
->
where
(
'oid'
,
$id
)
->
field
(
'g.name,og.num'
)
->
select
();
if
(
$one
[
'step'
]
>
2
&&
$one
[
'kid'
]
!=
0
){
$kdgj
=
Db
::
name
(
'zj_kd_order'
)
->
where
([
'kd_num'
=>
$one
[
'kd_num'
]])
->
value
(
'text'
);
$kdgj
=
json_decode
(
$kdgj
,
true
);
$this
->
assign
(
'kdgj'
,
$kdgj
);
if
(
$one
[
'step'
]
>
2
&&
$one
[
'kid'
]
!=
0
)
{
$kdgj
=
Db
::
name
(
'zj_kd_order'
)
->
where
([
'kd_num'
=>
$one
[
'kd_num'
]])
->
value
(
'text'
);
$kdgj
=
json_decode
(
$kdgj
,
true
);
$this
->
assign
(
'kdgj'
,
$kdgj
);
}
$this
->
assign
(
'kd'
,
$kd
);
$this
->
assign
(
'url'
,
$url
);
$this
->
assign
(
'one'
,
$one
);
$this
->
assign
(
'all'
,
$all
);
$this
->
assign
(
'kd'
,
$kd
);
$this
->
assign
(
'url'
,
$url
);
$this
->
assign
(
'one'
,
$one
);
$this
->
assign
(
'all'
,
$all
);
return
$this
->
fetch
();
}
}
/**
* 订单详情修改提交
*/
public
function
detailPost
(){
if
(
$this
->
request
->
param
()){
$param
=
input
(
'param.'
);
$edit
=
Db
::
name
(
'zj_order'
)
->
update
(
$param
);
if
(
$param
[
'step'
]
==
'3'
){
if
(
$param
[
'kid'
]
==
'0'
){
$kds
=
'自提订单'
;
}
else
{
public
function
detailPost
()
{
if
(
$this
->
request
->
param
())
{
$param
=
input
(
'param.'
);
$edit
=
Db
::
name
(
'zj_order'
)
->
update
(
$param
);
if
(
$param
[
'step'
]
==
'3'
)
{
if
(
$param
[
'kid'
]
==
'0'
)
{
$kds
=
'自提订单'
;
}
else
{
//引入快递订阅接口
$kd
=
new
KdnApiController
();
$kds
=
$kd
->
orderTracesSubByJson
(
$param
[
'id'
]);
$kds
=
json_decode
(
$kds
,
true
);
if
(
$kds
[
'Success'
]
==
true
){
$kds
=
'快递状态订阅成功'
;
}
else
{
$kds
=
'快递状态订阅失败'
;
$kd
=
new
KdnApiController
();
$kds
=
$kd
->
orderTracesSubByJson
(
$param
[
'id'
]);
$kds
=
json_decode
(
$kds
,
true
);
if
(
$kds
[
'Success'
]
==
true
)
{
$kds
=
'快递状态订阅成功'
;
}
else
{
$kds
=
'快递状态订阅失败'
;
}
}
}
if
(
empty
(
$edit
)){
$this
->
error
(
'修改失败,'
.
$kds
);
}
else
{
$this
->
success
(
'修改成功,'
.
$kds
);
if
(
empty
(
$edit
))
{
$this
->
error
(
'修改失败,'
.
$kds
);
}
else
{
$this
->
success
(
'修改成功,'
.
$kds
);
}
}
}
...
...
@@ -148,121 +152,128 @@ class ZjOrderController extends AdminBaseController
/**
* 待处理订单列表
*/
public
function
backlog
(){
$where
[
'o.delete_time'
]
=
0
;
$arr
=
[];
$where1
[
'o.step'
]
=
[
'in'
,[
'2'
,
'6'
,
'8'
]];
if
(
$this
->
request
->
param
()){
$arr
=
input
(
'param.'
);
if
(
!
empty
(
$arr
[
'uid'
])){
$where
[
'o.uid'
]
=
$arr
[
'uid'
];
public
function
backlog
()
{
$where
[
'o.delete_time'
]
=
0
;
$arr
=
[];
$where1
[
'o.step'
]
=
[
'in'
,
[
'2'
,
'6'
,
'8'
]];
if
(
$this
->
request
->
param
())
{
$arr
=
input
(
'param.'
);
if
(
!
empty
(
$arr
[
'uid'
]))
{
$where
[
'o.uid'
]
=
$arr
[
'uid'
];
}
if
(
!
empty
(
$arr
[
'step'
])){
$where
[
'o.step'
]
=
$arr
[
'step'
];
if
(
!
empty
(
$arr
[
'step'
]))
{
$where
[
'o.step'
]
=
$arr
[
'step'
];
}
if
(
!
empty
(
$arr
[
'num'
])){
$where
[
'o.order_num'
]
=
$arr
[
'num'
];
if
(
!
empty
(
$arr
[
'num'
]))
{
$where
[
'o.order_num'
]
=
$arr
[
'num'
];
}
if
(
!
empty
(
$arr
[
'name'
])){
$where
[
'o.name'
]
=
$arr
[
'name'
];
if
(
!
empty
(
$arr
[
'name'
]))
{
$where
[
'o.name'
]
=
$arr
[
'name'
];
}
if
(
!
empty
(
$arr
[
'mobile'
])){
$where
[
'o.mobile'
]
=
$arr
[
'mobile'
];
if
(
!
empty
(
$arr
[
'mobile'
]))
{
$where
[
'o.mobile'
]
=
$arr
[
'mobile'
];
}
if
(
!
empty
(
$arr
[
'start_time'
])){
$where
[
'o.create_time'
]
=
[
'egt'
,
strtotime
(
$arr
[
'start_time'
])];
if
(
!
empty
(
$arr
[
'start_time'
]))
{
$where
[
'o.create_time'
]
=
[
'egt'
,
strtotime
(
$arr
[
'start_time'
])];
}
if
(
!
empty
(
$arr
[
'end_time'
])){
$where1
[
'o.create_time'
]
=
[
'elt'
,
strtotime
(
$arr
[
'end_time'
])];
if
(
!
empty
(
$arr
[
'end_time'
]))
{
$where1
[
'o.create_time'
]
=
[
'elt'
,
strtotime
(
$arr
[
'end_time'
])];
}
}
$all
=
Db
::
name
(
'zj_order'
)
->
alias
(
'o'
)
->
join
(
'user u'
,
'o.uid=u.id'
,
'left'
)
->
where
(
$where
)
->
where
(
$where1
)
->
order
(
'create_time'
,
'desc'
)
->
field
(
'o.*,u.user_nickname'
)
->
paginate
(
15
);
$all
=
Db
::
name
(
'zj_order'
)
->
alias
(
'o'
)
->
join
(
'user u'
,
'o.uid=u.id'
,
'left'
)
->
where
(
$where
)
->
where
(
$where1
)
->
order
(
'create_time'
,
'desc'
)
->
field
(
'o.*,u.user_nickname'
)
->
paginate
(
15
);
$all
->
appends
(
$arr
);
$this
->
assign
(
'start_time'
,
!
empty
(
$arr
[
'start_time'
])
?
$arr
[
'start_time'
]
:
''
);
$this
->
assign
(
'end_time'
,
!
empty
(
$arr
[
'end_time'
])
?
$arr
[
'end_time'
]
:
''
);
$this
->
assign
(
'uid'
,
!
empty
(
$arr
[
'uid'
])
?
$arr
[
'uid'
]
:
''
);
$this
->
assign
(
'step'
,
!
empty
(
$arr
[
'step'
])
?
$arr
[
'step'
]
:
''
);
$this
->
assign
(
'num'
,
!
empty
(
$arr
[
'num'
])
?
$arr
[
'num'
]
:
''
);
$this
->
assign
(
'name'
,
!
empty
(
$arr
[
'name'
])
?
$arr
[
'name'
]
:
''
);
$this
->
assign
(
'mobile'
,
!
empty
(
$arr
[
'mobile'
])
?
$arr
[
'mobile'
]
:
''
);
$this
->
assign
(
'page'
,
$all
->
render
());
$this
->
assign
(
'all'
,
$all
->
items
());
$this
->
assign
(
'uid'
,
!
empty
(
$arr
[
'uid'
])
?
$arr
[
'uid'
]
:
''
);
$this
->
assign
(
'step'
,
!
empty
(
$arr
[
'step'
])
?
$arr
[
'step'
]
:
''
);
$this
->
assign
(
'num'
,
!
empty
(
$arr
[
'num'
])
?
$arr
[
'num'
]
:
''
);
$this
->
assign
(
'name'
,
!
empty
(
$arr
[
'name'
])
?
$arr
[
'name'
]
:
''
);
$this
->
assign
(
'mobile'
,
!
empty
(
$arr
[
'mobile'
])
?
$arr
[
'mobile'
]
:
''
);
$this
->
assign
(
'page'
,
$all
->
render
());
$this
->
assign
(
'all'
,
$all
->
items
());
return
$this
->
fetch
();
}
/**
* 订单发货
*/
public
function
fahuo
(){
if
(
$this
->
request
->
param
()){
$param
=
input
(
'param.id'
);
public
function
fahuo
()
{
if
(
$this
->
request
->
param
())
{
$param
=
input
(
'param.id'
);
//获取订单数据
$one
=
Db
::
name
(
'zj_order'
)
->
alias
(
'o'
)
->
join
(
'user u'
,
'o.uid=u.id'
,
'left'
)
->
where
(
'o.id'
,
$param
)
->
field
(
'o.*,u.user_nickname'
)
->
find
();
$one
=
Db
::
name
(
'zj_order'
)
->
alias
(
'o'
)
->
join
(
'user u'
,
'o.uid=u.id'
,
'left'
)
->
where
(
'o.id'
,
$param
)
->
field
(
'o.*,u.user_nickname'
)
->
find
();
//获取快递公司数据
$kd
=
Db
::
name
(
'zj_kd'
)
->
select
();
$kd
=
Db
::
name
(
'zj_kd'
)
->
select
();
//获取订单商品
$all
=
Db
::
name
(
'zj_order_goods'
)
->
alias
(
'og'
)
->
join
(
'zj_goods g'
,
'og.gid=g.id'
)
->
where
(
'oid'
,
$param
)
$all
=
Db
::
name
(
'zj_order_goods'
)
->
alias
(
'og'
)
->
join
(
'zj_goods g'
,
'og.gid=g.id'
)
->
where
(
'oid'
,
$param
)
->
field
(
'g.name,og.num'
)
->
select
();
if
(
$one
[
'step'
]
>
2
)
{
if
(
$one
[
'step'
]
>
2
)
{
echo
"<div style='width: 100%;text-align: center;padding-top: 50px'><p style='font-size: 25px'>订单已发货</p></div>"
;
}
elseif
(
$one
[
'step'
]
==
1
)
{
}
elseif
(
$one
[
'step'
]
==
1
)
{
echo
"<div style='width: 100%;text-align: center;padding-top: 50px'><p style='font-size: 25px'>订单未支付</p></div>"
;
}
else
{
$this
->
assign
(
'kd'
,
$kd
);
$this
->
assign
(
'one'
,
$one
);
$this
->
assign
(
'all'
,
$all
);
}
else
{
$this
->
assign
(
'kd'
,
$kd
);
$this
->
assign
(
'one'
,
$one
);
$this
->
assign
(
'all'
,
$all
);
return
$this
->
fetch
();
}
}
}
/**
* 订单发货提交
*/
public
function
fhPost
(){
if
(
$this
->
request
->
param
()){
$param
=
input
(
'param.'
);
if
(
empty
(
$param
[
'kd_num'
])){
public
function
fhPost
()
{
if
(
$this
->
request
->
param
())
{
$param
=
input
(
'param.'
);
if
(
empty
(
$param
[
'kd_num'
]))
{
$this
->
error
(
'快递单号不能为空'
);
}
$param
[
'step'
]
=
3
;
$edit
=
Db
::
name
(
'zj_order'
)
->
update
(
$param
);
$param
[
'step'
]
=
3
;
$edit
=
Db
::
name
(
'zj_order'
)
->
update
(
$param
);
//引入快递订阅接口
$kd
=
new
KdnApiController
();
$kds
=
$kd
->
orderTracesSubByJson
(
$param
[
'id'
]);
$kds
=
json_decode
(
$kds
,
true
);
if
(
$kds
[
'Success'
]
==
true
){
$kds
=
'快递状态订阅成功'
;
}
else
{
$kds
=
'快递状态订阅失败'
;
$kd
=
new
KdnApiController
();
$kds
=
$kd
->
orderTracesSubByJson
(
$param
[
'id'
]);
$kds
=
json_decode
(
$kds
,
true
);
if
(
$kds
[
'Success'
]
==
true
)
{
$kds
=
'快递状态订阅成功'
;
}
else
{
$kds
=
'快递状态订阅失败'
;
}
if
(
empty
(
$edit
)){
$this
->
error
(
'订单状态更新失败,'
.
$kds
);
}
else
{
$this
->
success
(
'订单状态更新成功,'
.
$kds
);
if
(
empty
(
$edit
))
{
$this
->
error
(
'订单状态更新失败,'
.
$kds
);
}
else
{
$this
->
success
(
'订单状态更新成功,'
.
$kds
);
}
}
}
/**
* 订单退款审核
*/
public
function
check
(){
if
(
$this
->
request
->
param
()){
$param
=
input
(
'param.id'
);
public
function
check
()
{
if
(
$this
->
request
->
param
())
{
$param
=
input
(
'param.id'
);
//获取订单数据
$one
=
Db
::
name
(
'zj_order'
)
->
alias
(
'o'
)
->
join
(
'user u'
,
'o.uid=u.id'
,
'left'
)
->
where
(
'o.id'
,
$param
)
$one
=
Db
::
name
(
'zj_order'
)
->
alias
(
'o'
)
->
join
(
'user u'
,
'o.uid=u.id'
,
'left'
)
->
where
(
'o.id'
,
$param
)
->
field
(
'o.*,u.user_nickname'
)
->
find
();
//获取订单商品
$all
=
Db
::
name
(
'zj_order_goods'
)
->
alias
(
'og'
)
->
join
(
'zj_goods g'
,
'og.gid=g.id'
)
->
where
(
'oid'
,
$param
)
$all
=
Db
::
name
(
'zj_order_goods'
)
->
alias
(
'og'
)
->
join
(
'zj_goods g'
,
'og.gid=g.id'
)
->
where
(
'oid'
,
$param
)
->
field
(
'g.name,g.price,og.num'
)
->
select
();
if
(
$one
[
'step'
]
<
6
)
{
if
(
$one
[
'step'
]
<
6
)
{
echo
"<div style='width: 100%;text-align: center;padding-top: 50px'><p style='font-size: 25px'>订单未退货</p></div>"
;
}
elseif
(
$one
[
'step'
]
>
6
)
{
}
elseif
(
$one
[
'step'
]
>
6
)
{
echo
"<div style='width: 100%;text-align: center;padding-top: 50px'><p style='font-size: 25px'>退款审核通过</p></div>"
;
}
else
{
$this
->
assign
(
'one'
,
$one
);
$this
->
assign
(
'all'
,
$all
);
}
else
{
$this
->
assign
(
'one'
,
$one
);
$this
->
assign
(
'all'
,
$all
);
return
$this
->
fetch
();
}
}
...
...
@@ -271,66 +282,95 @@ class ZjOrderController extends AdminBaseController
/**
* 订单退款审核提交
*/
public
function
checkPost
(){
if
(
$this
->
request
->
param
()){
$param
=
input
(
'param.'
);
public
function
checkPost
()
{
if
(
$this
->
request
->
param
())
{
$param
=
input
(
'param.'
);
//判断审核是否通过
if
(
!
empty
(
$param
[
'sta'
])){
$param
[
'step'
]
=
5
;
if
(
!
empty
(
$param
[
'sta'
]))
{
$param
[
'step'
]
=
5
;
unset
(
$param
[
'sta'
]);
$edit
=
Db
::
name
(
'zj_order'
)
->
update
(
$param
);
}
else
{
$param
[
'step'
]
=
7
;
$edit
=
Db
::
name
(
'zj_order'
)
->
update
(
$param
);
$edit
=
Db
::
name
(
'zj_order'
)
->
update
(
$param
);
}
else
{
$param
[
'step'
]
=
7
;
$edit
=
Db
::
name
(
'zj_order'
)
->
update
(
$param
);
}
if
(
empty
(
$edit
)){
if
(
empty
(
$edit
))
{
$this
->
error
(
'订单状态更新失败'
);
}
else
{
}
else
{
$this
->
success
(
'订单状态更新成功'
);
}
}
}
/**
* 订单退款
*/
public
function
refund
(){
if
(
$this
->
request
->
param
()){
$param
=
input
(
'param.id'
);
public
function
refund
()
{
if
(
$this
->
request
->
param
())
{
$param
=
input
(
'param.id'
);
//获取订单数据
$one
=
Db
::
name
(
'zj_order'
)
->
alias
(
'o'
)
->
join
(
'user u'
,
'o.uid=u.id'
,
'left'
)
->
where
(
'o.id'
,
$param
)
$one
=
Db
::
name
(
'zj_order'
)
->
alias
(
'o'
)
->
join
(
'user u'
,
'o.uid=u.id'
,
'left'
)
->
where
(
'o.id'
,
$param
)
->
field
(
'o.*,u.user_nickname'
)
->
find
();
//获取订单商品
$all
=
Db
::
name
(
'zj_order_goods'
)
->
alias
(
'og'
)
->
join
(
'zj_goods g'
,
'og.gid=g.id'
)
->
where
(
'oid'
,
$param
)
$all
=
Db
::
name
(
'zj_order_goods'
)
->
alias
(
'og'
)
->
join
(
'zj_goods g'
,
'og.gid=g.id'
)
->
where
(
'oid'
,
$param
)
->
field
(
'g.name,g.price,og.num'
)
->
select
();
if
(
$one
[
'step'
]
>
8
)
{
if
(
$one
[
'step'
]
>
8
)
{
echo
"<div style='width: 100%;text-align: center;padding-top: 50px'><p style='font-size: 25px'>订单已退款</p></div>"
;
}
elseif
(
$one
[
'step'
]
<
8
)
{
}
elseif
(
$one
[
'step'
]
<
8
)
{
echo
"<div style='width: 100%;text-align: center;padding-top: 50px'><p style='font-size: 25px'>订单状态错误</p></div>"
;
}
else
{
$this
->
assign
(
'one'
,
$one
);
$this
->
assign
(
'all'
,
$all
);
}
else
{
$this
->
assign
(
'one'
,
$one
);
$this
->
assign
(
'all'
,
$all
);
return
$this
->
fetch
();
}
}
}
/**
* 订单退款提交
*/
public
function
refundPost
(){
if
(
$this
->
request
->
param
()){
$param
=
input
(
'param.'
);
if
(
$param
[
'tui'
]
<=
0
){
$this
->
error
(
'退款金额需大于0'
);
public
function
refundPost
()
{
if
(
$this
->
request
->
param
())
{
$param
=
input
(
'param.'
);
if
(
Db
::
name
(
'zj_order'
)
->
where
([
'id'
=>
$param
[
'id'
]])
->
value
(
'step'
)
==
8
)
{
if
(
$param
[
'tui'
]
<=
0
)
{
$this
->
error
(
'退款金额需大于0'
);
}
$param
[
'step'
]
=
9
;
unset
(
$param
[
'tui'
]);
//删除无用数据
$return
=
$this
->
wxRefund
(
$param
[
'id'
],
1
);
var_dump
(
$return
);
exit
();
$edit
=
Db
::
name
(
'zj_order'
)
->
update
(
$param
);
if
(
empty
(
$edit
))
{
$this
->
error
(
'订单退款失败'
);
}
else
{
$this
->
success
(
'订单退款成功'
);
}
}
else
{
$this
->
error
(
'非法操作'
);
}
}
}
$param
[
'step'
]
=
9
;
unset
(
$param
[
'tui'
]);
//删除无用数据
$edit
=
Db
::
name
(
'zj_order'
)
->
update
(
$param
);
if
(
empty
(
$edit
)){
$this
->
error
(
'订单退款失败'
);
}
else
{
$this
->
success
(
'订单退款成功'
);
private
function
wxRefund
(
$oid
,
$refundFee
)
{
$info
=
Db
::
name
(
'zj_order'
)
->
field
(
'order_num,whole,whole_num,out_trade_no,step'
)
->
where
([
'id'
=>
$oid
])
->
find
();
if
(
$info
[
'step'
]
==
8
)
{
$totalFee
=
$info
[
'whole'
]
-
$info
[
'whole_num'
];
if
(
$refundFee
>
$totalFee
)
{
$this
->
error
(
'退款金额不能大于实际支付金额'
);
}
else
{
require_once
EXTEND_PATH
.
'/Refund.php'
;
$refund
=
new
\Refund
(
$info
[
'out_trade_no'
],
$totalFee
,
$info
[
'order_num'
],
$refundFee
);
$refund
->
refund
();
}
}
else
{
$this
->
error
(
'非法操作'
);
}
}
...
...
simplewind/extend/Payment.php
查看文件 @
3771afa
<?php
class
Payment
{
class
Payment
{
protected
$attach
;
protected
$openid
;
protected
$body
;
protected
$total_fee
;
function
__construct
(
$attach
=
null
,
$openid
=
null
,
$body
=
null
,
$total_fee
=
null
)
{
function
__construct
(
$attach
=
null
,
$openid
=
null
,
$body
=
null
,
$total_fee
=
null
)
{
$this
->
attach
=
$attach
;
$this
->
openid
=
$openid
;
$this
->
body
=
$body
;
...
...
@@ -18,19 +20,21 @@ class Payment {
* 对外暴露的支付接口
* @return array
*/
public
function
pay
()
{
public
function
pay
()
{
return
$this
->
weixinPay
();
}
private
function
weixinPay
()
{
private
function
weixinPay
()
{
//统一下单接口
$unifiedorder
=
$this
->
unifiedorder
();
$parameters
=
array
(
'appId'
=>
config
(
'AppID'
),
'appId'
=>
config
(
'AppID'
),
'timeStamp'
=>
''
.
time
()
.
''
,
//时间戳
'nonceStr'
=>
$this
->
createNoncestr
(),
//随机串
'package'
=>
'prepay_id='
.
$unifiedorder
[
'prepay_id'
],
//数据包
'signType'
=>
'MD5'
//签名方式
'nonceStr'
=>
$this
->
createNoncestr
(),
//随机串
'package'
=>
'prepay_id='
.
$unifiedorder
[
'prepay_id'
],
//数据包
'signType'
=>
'MD5'
//签名方式
);
//签名
$parameters
[
'paySign'
]
=
$this
->
getSign
(
$parameters
);
...
...
@@ -38,20 +42,21 @@ class Payment {
}
//统一下单接口
private
function
unifiedorder
()
{
private
function
unifiedorder
()
{
$url
=
'https://api.mch.weixin.qq.com/pay/unifiedorder'
;
$parameters
=
array
(
'appid'
=>
config
(
'AppID'
),
'mch_id'
=>
config
(
'MchId'
),
'nonce_str'
=>
$this
->
createNoncestr
(),
'body'
=>
$this
->
body
,
'out_trade_no'
=>
config
(
'MchId'
)
.
time
(),
'total_fee'
=>
$this
->
total_fee
,
'spbill_create_ip'
=>
'114.215.223.17'
,
//终端IP
'notify_url'
=>
'http://integral.w.bronet.cn/pay/Pay/notify'
,
'openid'
=>
$this
->
openid
,
'trade_type'
=>
'JSAPI'
,
//交易类型
'attach'
=>
$this
->
attach
'appid'
=>
config
(
'AppID'
),
'mch_id'
=>
config
(
'MchId'
),
'nonce_str'
=>
$this
->
createNoncestr
(),
'body'
=>
$this
->
body
,
'out_trade_no'
=>
config
(
'MchId'
)
.
time
(),
'total_fee'
=>
$this
->
total_fee
,
'spbill_create_ip'
=>
'114.215.223.17'
,
//终端IP
'notify_url'
=>
'http://integral.w.bronet.cn/pay/Pay/notify'
,
'openid'
=>
$this
->
openid
,
'trade_type'
=>
'JSAPI'
,
//交易类型
'attach'
=>
$this
->
attach
);
//统一下单签名
$parameters
[
'sign'
]
=
$this
->
getSign
(
$parameters
);
...
...
@@ -61,7 +66,8 @@ class Payment {
}
//作用:生成签名
private
function
getSign
(
$Obj
)
{
private
function
getSign
(
$Obj
)
{
foreach
(
$Obj
as
$k
=>
$v
)
{
$Parameters
[
$k
]
=
$v
;
}
...
...
@@ -77,7 +83,8 @@ class Payment {
return
$result_
;
}
private
static
function
postXmlCurl
(
$xml
,
$url
,
$second
=
30
)
{
private
static
function
postXmlCurl
(
$xml
,
$url
,
$second
=
30
)
{
$ch
=
curl_init
();
//设置超时
curl_setopt
(
$ch
,
CURLOPT_TIMEOUT
,
$second
);
...
...
@@ -108,7 +115,8 @@ class Payment {
}
//数组转换成xml
private
function
arrayToXml
(
$arr
)
{
private
function
arrayToXml
(
$arr
)
{
$xml
=
"<root>"
;
foreach
(
$arr
as
$key
=>
$val
)
{
if
(
is_array
(
$val
))
{
...
...
@@ -123,7 +131,8 @@ class Payment {
//xml转换成数组
private
function
xmlToArray
(
$xml
)
{
private
function
xmlToArray
(
$xml
)
{
//禁止引用外部xml实体
libxml_disable_entity_loader
(
true
);
$xmlstring
=
simplexml_load_string
(
$xml
,
'SimpleXMLElement'
,
LIBXML_NOCDATA
);
...
...
@@ -132,7 +141,8 @@ class Payment {
}
//作用:产生随机字符串,不长于32位
private
function
createNoncestr
(
$length
=
32
)
{
private
function
createNoncestr
(
$length
=
32
)
{
$chars
=
"abcdefghijklmnopqrstuvwxyz0123456789"
;
$str
=
""
;
for
(
$i
=
0
;
$i
<
$length
;
$i
++
)
{
...
...
@@ -142,7 +152,8 @@ class Payment {
}
///作用:格式化参数,签名过程需要使用
private
function
formatBizQueryParaMap
(
$paraMap
,
$urlencode
)
{
private
function
formatBizQueryParaMap
(
$paraMap
,
$urlencode
)
{
$buff
=
""
;
ksort
(
$paraMap
);
foreach
(
$paraMap
as
$k
=>
$v
)
{
...
...
@@ -151,31 +162,32 @@ class Payment {
}
$buff
.=
$k
.
"="
.
$v
.
"&"
;
}
$reqPar
=
''
;
$reqPar
=
''
;
if
(
strlen
(
$buff
)
>
0
)
{
$reqPar
=
substr
(
$buff
,
0
,
strlen
(
$buff
)
-
1
);
}
return
$reqPar
;
}
public
function
handleNotify
()
{
public
function
handleNotify
()
{
//$postXml = $GLOBALS["HTTP_RAW_POST_DATA"]; //接收微信参数
$postXml
=
file_get_contents
(
"php://input"
);
$postXml
=
file_get_contents
(
"php://input"
);
cache
(
'xml'
,
$postXml
);
if
(
empty
(
$postXml
))
{
return
false
;
}
else
{
}
else
{
$data
=
$this
->
xmlToArray
(
$postXml
);
if
(
$data
[
'return_code'
]
==
'SUCCESS'
&&
$data
[
'result_code'
]
==
'SUCCESS'
)
{
if
(
$data
[
'return_code'
]
==
'SUCCESS'
&&
$data
[
'result_code'
]
==
'SUCCESS'
)
{
$data
=
(
array
)
simplexml_load_string
(
$postXml
,
'SimpleXMLElement'
,
LIBXML_NOCDATA
);
$signA
=
"appid="
.
$data
[
'appid'
]
.
"&attach="
.
$data
[
'attach'
]
.
"&bank_type="
.
$data
[
'bank_type'
]
.
"&cash_fee="
.
$data
[
'cash_fee'
]
.
"&fee_type="
.
$data
[
'fee_type'
]
.
"&is_subscribe="
.
$data
[
'is_subscribe'
]
.
"&mch_id="
.
$data
[
'mch_id'
]
.
"&nonce_str="
.
$data
[
'nonce_str'
]
.
"&openid="
.
$data
[
'openid'
]
.
"&out_trade_no="
.
$data
[
'out_trade_no'
]
.
"&result_code="
.
$data
[
'result_code'
]
.
"&return_code="
.
$data
[
'return_code'
]
.
"&time_end="
.
$data
[
'time_end'
]
.
"&total_fee="
.
$data
[
'total_fee'
]
.
"&trade_type="
.
$data
[
'trade_type'
]
.
"&transaction_id="
.
$data
[
'transaction_id'
]
.
"&key="
.
config
(
'Key'
);
$signA
=
"appid="
.
$data
[
'appid'
]
.
"&attach="
.
$data
[
'attach'
]
.
"&bank_type="
.
$data
[
'bank_type'
]
.
"&cash_fee="
.
$data
[
'cash_fee'
]
.
"&fee_type="
.
$data
[
'fee_type'
]
.
"&is_subscribe="
.
$data
[
'is_subscribe'
]
.
"&mch_id="
.
$data
[
'mch_id'
]
.
"&nonce_str="
.
$data
[
'nonce_str'
]
.
"&openid="
.
$data
[
'openid'
]
.
"&out_trade_no="
.
$data
[
'out_trade_no'
]
.
"&result_code="
.
$data
[
'result_code'
]
.
"&return_code="
.
$data
[
'return_code'
]
.
"&time_end="
.
$data
[
'time_end'
]
.
"&total_fee="
.
$data
[
'total_fee'
]
.
"&trade_type="
.
$data
[
'trade_type'
]
.
"&transaction_id="
.
$data
[
'transaction_id'
]
.
"&key="
.
config
(
'Key'
);
$sign
=
strtoupper
(
MD5
(
$signA
));
if
(
$sign
==
$data
[
'sign'
])
{
if
(
$sign
==
$data
[
'sign'
])
{
return
$data
;
}
else
{
}
else
{
return
false
;
}
}
else
{
}
else
{
return
false
;
}
}
...
...
simplewind/extend/Refund.php
0 → 100644
查看文件 @
3771afa
<?php
class
Refund
{
protected
$SSLCERT_PATH
=
'cert/apiclient_cert.pem'
;
//证书路径
protected
$SSLKEY_PATH
=
'cert/apiclient_key.pem'
;
//证书路径
function
__construct
(
$outTradeNo
,
$totalFee
,
$outRefundNo
,
$refundFee
)
{
//初始化退款类需要的变量
$this
->
outTradeNo
=
$outTradeNo
;
$this
->
totalFee
=
$totalFee
;
$this
->
outRefundNo
=
$outRefundNo
;
$this
->
refundFee
=
$refundFee
;
}
public
function
refund
()
{
//对外暴露的退款接口
$result
=
$this
->
wxrefundapi
();
return
$result
;
}
private
function
wxrefundapi
()
{
//通过微信api进行退款流程
$parma
=
array
(
'appid'
=>
config
(
'AppID'
),
'mch_id'
=>
config
(
'MchId'
),
'nonce_str'
=>
$this
->
createNoncestr
(),
'out_refund_no'
=>
$this
->
outRefundNo
,
'out_trade_no'
=>
$this
->
outTradeNo
,
'total_fee'
=>
$this
->
totalFee
,
'refund_fee'
=>
$this
->
refundFee
,
'op_user_id'
=>
config
(
'MchId'
)
);
$parma
[
'sign'
]
=
$this
->
getSign
(
$parma
);
$xmldata
=
$this
->
arrayToXml
(
$parma
);
$xmlresult
=
$this
->
postXmlSSLCurl
(
$xmldata
,
'https://api.mch.weixin.qq.com/secapi/pay/refund'
);
$result
=
$this
->
xmlToArray
(
$xmlresult
);
//print_r($result);
return
$result
;
}
//需要使用证书的请求
function
postXmlSSLCurl
(
$xml
,
$url
,
$second
=
30
)
{
$ch
=
curl_init
();
//超时时间
curl_setopt
(
$ch
,
CURLOPT_TIMEOUT
,
$second
);
//这里设置代理,如果有的话
//curl_setopt($ch,CURLOPT_PROXY, '8.8.8.8');
//curl_setopt($ch,CURLOPT_PROXYPORT, 8080);
curl_setopt
(
$ch
,
CURLOPT_URL
,
$url
);
curl_setopt
(
$ch
,
CURLOPT_SSL_VERIFYPEER
,
FALSE
);
curl_setopt
(
$ch
,
CURLOPT_SSL_VERIFYHOST
,
FALSE
);
//设置header
curl_setopt
(
$ch
,
CURLOPT_HEADER
,
FALSE
);
//要求结果为字符串且输出到屏幕上
curl_setopt
(
$ch
,
CURLOPT_RETURNTRANSFER
,
TRUE
);
//设置证书
//使用证书:cert 与 key 分别属于两个.pem文件
//默认格式为PEM,可以注释
curl_setopt
(
$ch
,
CURLOPT_SSLCERTTYPE
,
'PEM'
);
curl_setopt
(
$ch
,
CURLOPT_SSLCERT
,
$this
->
SSLCERT_PATH
);
//默认格式为PEM,可以注释
curl_setopt
(
$ch
,
CURLOPT_SSLKEYTYPE
,
'PEM'
);
curl_setopt
(
$ch
,
CURLOPT_SSLKEY
,
$this
->
SSLKEY_PATH
);
//post提交方式
curl_setopt
(
$ch
,
CURLOPT_POST
,
true
);
curl_setopt
(
$ch
,
CURLOPT_POSTFIELDS
,
$xml
);
$data
=
curl_exec
(
$ch
);
//返回结果
if
(
$data
)
{
curl_close
(
$ch
);
return
$data
;
}
else
{
$error
=
curl_errno
(
$ch
);
echo
"curl出错,错误码:
$error
"
.
"<br>"
;
curl_close
(
$ch
);
return
false
;
}
}
//作用:产生随机字符串,不长于32位
private
function
createNoncestr
(
$length
=
32
)
{
$chars
=
"abcdefghijklmnopqrstuvwxyz0123456789"
;
$str
=
""
;
for
(
$i
=
0
;
$i
<
$length
;
$i
++
)
{
$str
.=
substr
(
$chars
,
mt_rand
(
0
,
strlen
(
$chars
)
-
1
),
1
);
}
return
$str
;
}
//作用:生成签名
private
function
getSign
(
$Obj
)
{
foreach
(
$Obj
as
$k
=>
$v
)
{
$Parameters
[
$k
]
=
$v
;
}
//签名步骤一:按字典序排序参数
ksort
(
$Parameters
);
$String
=
$this
->
formatBizQueryParaMap
(
$Parameters
,
false
);
//签名步骤二:在string后加入KEY
$String
=
$String
.
"&key="
.
$this
->
key
;
//签名步骤三:MD5加密
$String
=
md5
(
$String
);
//签名步骤四:所有字符转为大写
$result_
=
strtoupper
(
$String
);
return
$result_
;
}
///作用:格式化参数,签名过程需要使用
private
function
formatBizQueryParaMap
(
$paraMap
,
$urlencode
)
{
$buff
=
""
;
ksort
(
$paraMap
);
foreach
(
$paraMap
as
$k
=>
$v
)
{
if
(
$urlencode
)
{
$v
=
urlencode
(
$v
);
}
$buff
.=
$k
.
"="
.
$v
.
"&"
;
}
$reqPar
;
if
(
strlen
(
$buff
)
>
0
)
{
$reqPar
=
substr
(
$buff
,
0
,
strlen
(
$buff
)
-
1
);
}
return
$reqPar
;
}
//数组转换成xml
private
function
arrayToXml
(
$arr
)
{
$xml
=
"<root>"
;
foreach
(
$arr
as
$key
=>
$val
)
{
if
(
is_array
(
$val
))
{
$xml
.=
"<"
.
$key
.
">"
.
arrayToXml
(
$val
)
.
"</"
.
$key
.
">"
;
}
else
{
$xml
.=
"<"
.
$key
.
">"
.
$val
.
"</"
.
$key
.
">"
;
}
}
$xml
.=
"</root>"
;
return
$xml
;
}
//xml转换成数组
private
function
xmlToArray
(
$xml
)
{
//禁止引用外部xml实体
libxml_disable_entity_loader
(
true
);
$xmlstring
=
simplexml_load_string
(
$xml
,
'SimpleXMLElement'
,
LIBXML_NOCDATA
);
$val
=
json_decode
(
json_encode
(
$xmlstring
),
true
);
return
$val
;
}
}
\ No newline at end of file
...
...
请
注册
或
登录
后发表评论