Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
starsw001
ShopXO
提交
888ade73
ShopXO
项目概览
starsw001
/
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,发现更多精彩内容 >>
提交
888ade73
编写于
9月 25, 2020
作者:
D
devil
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
iepay支付优化
上级
8e57c932
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
6 addition
and
188 deletion
+6
-188
extend/payment/IEPayAliPay.php
extend/payment/IEPayAliPay.php
+3
-94
extend/payment/IEPayWeixin.php
extend/payment/IEPayWeixin.php
+3
-94
未找到文件。
extend/payment/IEPayAliPay.php
浏览文件 @
888ade73
...
...
@@ -80,18 +80,6 @@ class IEPayAliPay
'is_required'
=>
0
,
'message'
=>
'请填写密钥'
,
],
[
'element'
=>
'select'
,
'title'
=>
'支付金额转换'
,
'desc'
=>
'默认否(将金额转为原始汇率的金额、仅单个订单发起支付的时候有效)'
,
'message'
=>
'请选择订单金额转换'
,
'name'
=>
'is_reverse_price'
,
'is_multiple'
=>
0
,
'element_data'
=>
[
[
'value'
=>
0
,
'name'
=>
'否'
],
[
'value'
=>
1
,
'name'
=>
'是'
],
],
],
];
return
[
...
...
@@ -123,22 +111,6 @@ class IEPayAliPay
return
DataReturn
(
'支付缺少配置'
,
-
1
);
}
// 金额转换
if
(
isset
(
$this
->
config
[
'is_reverse_price'
])
&&
$this
->
config
[
'is_reverse_price'
]
==
1
&&
!
empty
(
$params
[
'business_ids'
])
&&
is_array
(
$params
[
'business_ids'
])
&&
count
(
$params
[
'business_ids'
])
==
1
&&
!
empty
(
$params
[
'business_type'
]))
{
switch
(
$params
[
'business_type'
])
{
// 订单
case
'system-order'
:
$currency_data
=
\
app\service\OrderCurrencyService
::
OrderCurrencyGroupList
(
$params
[
'business_ids'
][
0
]);
if
(
isset
(
$currency_data
[
'currency_rate'
])
&&
$currency_data
[
'currency_rate'
]
>
0
)
{
$params
[
'total_price'
]
/=
$currency_data
[
'currency_rate'
];
}
break
;
}
}
// 支付参数
$parameter
=
[
'mid'
=>
$this
->
config
[
'mid'
],
...
...
@@ -256,50 +228,11 @@ class IEPayAliPay
$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'
]
=
$
this
->
RespondReversePrice
(
$data
[
'out_trade_no'
],
$data
[
'total_fee'
]);
// 本系统发起支付的 - 总价
$data
[
'pay_price'
]
=
$
data
[
'total_fee'
]
/
100
;
// 本系统发起支付的 - 总价
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
...
...
@@ -340,37 +273,13 @@ 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
)
((
PriceNumberFormat
(
$refund_price
)
*
1000
)
/
10
),
'refund_amount'
=>
(
int
)
((
$params
[
'refund_price'
]
*
1000
)
/
10
),
'refund_charge_fee'
=>
'TRUE'
,
'version'
=>
'v1'
,
];
...
...
extend/payment/IEPayWeixin.php
浏览文件 @
888ade73
...
...
@@ -90,18 +90,6 @@ class IEPayWeixin
'is_required'
=>
0
,
'message'
=>
'请填写微信分配的小程序ID'
,
],
[
'element'
=>
'select'
,
'title'
=>
'支付金额转换'
,
'desc'
=>
'默认否(将金额转为原始汇率的金额、仅单个订单发起支付的时候有效)'
,
'message'
=>
'请选择订单金额转换'
,
'name'
=>
'is_reverse_price'
,
'is_multiple'
=>
0
,
'element_data'
=>
[
[
'value'
=>
0
,
'name'
=>
'否'
],
[
'value'
=>
1
,
'name'
=>
'是'
],
],
],
];
return
[
...
...
@@ -133,22 +121,6 @@ class IEPayWeixin
return
DataReturn
(
'支付缺少配置'
,
-
1
);
}
// 金额转换
if
(
isset
(
$this
->
config
[
'is_reverse_price'
])
&&
$this
->
config
[
'is_reverse_price'
]
==
1
&&
!
empty
(
$params
[
'business_ids'
])
&&
is_array
(
$params
[
'business_ids'
])
&&
count
(
$params
[
'business_ids'
])
==
1
&&
!
empty
(
$params
[
'business_type'
]))
{
switch
(
$params
[
'business_type'
])
{
// 订单
case
'system-order'
:
$currency_data
=
\
app\service\OrderCurrencyService
::
OrderCurrencyGroupList
(
$params
[
'business_ids'
][
0
]);
if
(
isset
(
$currency_data
[
'currency_rate'
])
&&
$currency_data
[
'currency_rate'
]
>
0
)
{
$params
[
'total_price'
]
/=
$currency_data
[
'currency_rate'
];
}
break
;
}
}
// 支付参数
$parameter
=
[
'mid'
=>
$this
->
config
[
'mid'
],
...
...
@@ -358,50 +330,11 @@ 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'
]
=
$
this
->
RespondReversePrice
(
$data
[
'out_trade_no'
],
$data
[
'total_fee'
])
;
// 本系统发起支付的 - 总价
$data
[
'pay_price'
]
=
$
data
[
'total_fee'
]
/
100
;
// 本系统发起支付的 - 总价
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
...
...
@@ -442,37 +375,13 @@ 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
)
((
PriceNumberFormat
(
$refund_price
)
*
1000
)
/
10
),
'refund_amount'
=>
(
int
)
((
$params
[
'refund_price'
]
*
1000
)
/
10
),
'refund_charge_fee'
=>
'TRUE'
,
'version'
=>
'v1'
,
];
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录