Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
飞鱼0526
ShopXO
提交
5252d731
ShopXO
项目概览
飞鱼0526
/
ShopXO
与 Fork 源项目一致
Fork自
纵之格 / ShopXO
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
ShopXO
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
5252d731
编写于
9月 23, 2020
作者:
D
devil
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
iepay支付优化
上级
d6717189
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
110 addition
and
7 deletion
+110
-7
application/service/OrderCurrencyService.php
application/service/OrderCurrencyService.php
+18
-4
extend/payment/IEPayAliPay.php
extend/payment/IEPayAliPay.php
+26
-1
extend/payment/IEPayWeixin.php
extend/payment/IEPayWeixin.php
+66
-2
未找到文件。
application/service/OrderCurrencyService.php
浏览文件 @
5252d731
...
...
@@ -59,14 +59,28 @@ class OrderCurrencyService
* @version 1.0.0
* @date 2020-09-17
* @desc description
* @param [array|int] $order_ids [订单id]
* @param [array|int] $order_value [订单id或者编号]
* @param [string] $order_key [订单主键字段名称(order_id|order_no)(默认order_id)]
* @return [array] [货币数据、参数是多个id则返回二维数组,一个id则返回一维数组]
*/
public
static
function
OrderCurrencyGroupList
(
$order_
ids
)
public
static
function
OrderCurrencyGroupList
(
$order_
value
,
$order_key
=
'order_id'
)
{
$data
=
Db
::
name
(
'OrderCurrency'
)
->
where
([
'order_id'
=>
$order_ids
])
->
select
();
// 是否订单编号
if
(
$order_key
==
'order_no'
)
{
// 数组读取多个id,则读取单个订单id
if
(
is_array
(
$order_value
))
{
$order_value
=
Db
::
name
(
'OrderCurrency'
)
->
where
([
'order_no'
=>
$order_value
])
->
column
(
'id'
);
}
else
{
$order_value
=
Db
::
name
(
'OrderCurrency'
)
->
where
([
'order_no'
=>
$order_value
])
->
value
(
'id'
);
}
}
// 数据处理
$data
=
Db
::
name
(
'OrderCurrency'
)
->
where
([
'order_id'
=>
$order_value
])
->
select
();
$result
=
[];
if
(
!
empty
(
$data
)
&&
is_array
(
$order_
ids
)
&&
count
(
$order_ids
)
>
1
)
if
(
!
empty
(
$data
)
&&
is_array
(
$order_
value
)
&&
count
(
$order_value
)
>
1
)
{
foreach
(
$data
as
$v
)
{
...
...
extend/payment/IEPayAliPay.php
浏览文件 @
5252d731
...
...
@@ -331,12 +331,37 @@ class IEPayAliPay
return
DataReturn
(
$ret
,
-
1
);
}
// 退款金额
$refund_price
=
$params
[
'refund_price'
];
// 金额转换
if
(
isset
(
$this
->
config
[
'is_reverse_price'
])
&&
$this
->
config
[
'is_reverse_price'
]
==
1
)
{
// 获取订单信息
$log_data
=
\
app\service\PayLogService
::
PayLogList
([
'where'
=>
[
'log_no'
=>
$params
[
'order_no'
]]]);
if
(
$log_data
[
'code'
]
==
0
&&
!
empty
(
$log_data
[
'data'
])
&&
!
empty
(
$log_data
[
'data'
][
0
])
&&
!
empty
(
$log_data
[
'data'
][
0
][
'business_list'
])
&&
count
(
$log_data
[
'data'
][
0
][
'business_list'
])
==
1
)
{
switch
(
$log_data
[
'data'
][
0
][
'business_type'
])
{
// 订单
case
\
app\service\OrderService
::
$business_type_name
:
// 获取订单汇率
$currency_data
=
\
app\service\OrderCurrencyService
::
OrderCurrencyGroupList
(
$log_data
[
'data'
][
0
][
'business_list'
][
0
][
'business_id'
]);
if
(
isset
(
$currency_data
[
'currency_rate'
])
&&
$currency_data
[
'currency_rate'
]
>
0
)
{
$refund_price
/=
$currency_data
[
'currency_rate'
];
}
break
;
}
}
}
// 远程查询支付状态
$parameter
=
[
'mid'
=>
$this
->
config
[
'mid'
],
'pay_type'
=>
$this
->
GetPayType
(
$params
[
'client_type'
]),
'out_trade_no'
=>
$params
[
'order_no'
],
'refund_amount'
=>
(
int
)
((
$params
[
'refund_price'
]
*
1000
)
/
10
),
'refund_amount'
=>
(
int
)
((
PriceNumberFormat
(
$refund_price
)
*
1000
)
/
10
),
'version'
=>
'v1'
,
];
...
...
extend/payment/IEPayWeixin.php
浏览文件 @
5252d731
...
...
@@ -349,11 +349,50 @@ class IEPayWeixin
$data
[
'buyer_user'
]
=
$data
[
'pay_type'
];
// 支付平台 - 用户
$data
[
'out_trade_no'
]
=
$data
[
'out_trade_no'
];
// 本系统发起支付的 - 订单号
$data
[
'subject'
]
=
isset
(
$data
[
'order_status'
])
?
'状态:'
.
$data
[
'order_status'
]
:
''
;
// 本系统发起支付的 - 商品名称
$data
[
'pay_price'
]
=
$
data
[
'total_fee'
]
/
100
;
// 本系统发起支付的 - 总价
$data
[
'pay_price'
]
=
$
this
->
RespondReversePrice
(
$data
[
'out_trade_no'
],
$data
[
'total_fee'
])
;
// 本系统发起支付的 - 总价
return
$data
;
}
/**
* 金额转换
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-09-23
* @desc description
* @param [string] $out_trade_no [支付日志订单号]
* @param [float] $total_fee [平台返回的支付金额]
*/
private
function
RespondReversePrice
(
$out_trade_no
,
$total_fee
)
{
$total_fee
/=
100
;
// 金额转换
if
(
isset
(
$this
->
config
[
'is_reverse_price'
])
&&
$this
->
config
[
'is_reverse_price'
]
==
1
)
{
// 获取订单信息
$log_data
=
\
app\service\PayLogService
::
PayLogList
([
'where'
=>
[
'log_no'
=>
$out_trade_no
]]);
if
(
$log_data
[
'code'
]
==
0
&&
!
empty
(
$log_data
[
'data'
])
&&
!
empty
(
$log_data
[
'data'
][
0
])
&&
!
empty
(
$log_data
[
'data'
][
0
][
'business_list'
])
&&
count
(
$log_data
[
'data'
][
0
][
'business_list'
])
==
1
)
{
switch
(
$log_data
[
'data'
][
0
][
'business_type'
])
{
// 订单
case
\
app\service\OrderService
::
$business_type_name
:
// 获取订单汇率
$currency_data
=
\
app\service\OrderCurrencyService
::
OrderCurrencyGroupList
(
$log_data
[
'data'
][
0
][
'business_list'
][
0
][
'business_id'
]);
if
(
isset
(
$currency_data
[
'currency_rate'
])
&&
$currency_data
[
'currency_rate'
]
>
0
)
{
$total_fee
*=
$currency_data
[
'currency_rate'
];
}
break
;
}
}
}
return
PriceNumberFormat
(
$total_fee
);
}
/**
* 退款处理
* @author Devil
...
...
@@ -394,12 +433,37 @@ class IEPayWeixin
return
DataReturn
(
$ret
,
-
1
);
}
// 退款金额
$refund_price
=
$params
[
'refund_price'
];
// 金额转换
if
(
isset
(
$this
->
config
[
'is_reverse_price'
])
&&
$this
->
config
[
'is_reverse_price'
]
==
1
)
{
// 获取订单信息
$log_data
=
\
app\service\PayLogService
::
PayLogList
([
'where'
=>
[
'log_no'
=>
$params
[
'order_no'
]]]);
if
(
$log_data
[
'code'
]
==
0
&&
!
empty
(
$log_data
[
'data'
])
&&
!
empty
(
$log_data
[
'data'
][
0
])
&&
!
empty
(
$log_data
[
'data'
][
0
][
'business_list'
])
&&
count
(
$log_data
[
'data'
][
0
][
'business_list'
])
==
1
)
{
switch
(
$log_data
[
'data'
][
0
][
'business_type'
])
{
// 订单
case
\
app\service\OrderService
::
$business_type_name
:
// 获取订单汇率
$currency_data
=
\
app\service\OrderCurrencyService
::
OrderCurrencyGroupList
(
$log_data
[
'data'
][
0
][
'business_list'
][
0
][
'business_id'
]);
if
(
isset
(
$currency_data
[
'currency_rate'
])
&&
$currency_data
[
'currency_rate'
]
>
0
)
{
$refund_price
/=
$currency_data
[
'currency_rate'
];
}
break
;
}
}
}
// 远程查询支付状态
$parameter
=
[
'mid'
=>
$this
->
config
[
'mid'
],
'pay_type'
=>
$this
->
GetPayType
(
$params
[
'client_type'
]),
'out_trade_no'
=>
$params
[
'order_no'
],
'refund_amount'
=>
(
int
)
((
$params
[
'refund_price'
]
*
1000
)
/
10
),
'refund_amount'
=>
(
int
)
((
PriceNumberFormat
(
$refund_price
)
*
1000
)
/
10
),
'version'
=>
'v1'
,
];
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录