Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
ldy
/
payment
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 1f0aaaa5
authored
Sep 15, 2020
by
赵成彬(PHP)
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
1 parent
d6992397
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
60 additions
and
31 deletions
src/Notify/LTFNotify.php
src/Notify/LTFNotify.php
View file @
1f0aaaa
...
@@ -5,7 +5,7 @@ namespace Payment\Notify;
...
@@ -5,7 +5,7 @@ namespace Payment\Notify;
use
Payment\Common\LTFConfig
;
use
Payment\Common\LTFConfig
;
use
Payment\Common\PayException
;
use
Payment\Common\PayException
;
use
Payment\Config
;
use
Payment\Config
;
use
Payment\Utils\
DataParser
;
use
Payment\Utils\
ArrayUtil
;
class
LTFNotify
extends
NotifyStrategy
{
class
LTFNotify
extends
NotifyStrategy
{
...
@@ -31,13 +31,19 @@ class LTFNotify extends NotifyStrategy{
...
@@ -31,13 +31,19 @@ class LTFNotify extends NotifyStrategy{
* @return array|false
* @return array|false
*/
*/
public
function
getNotifyData
(){
public
function
getNotifyData
(){
$params
=
[];
$params
=
array
();
$data
=
$_POST
[
'req'
]
??
file_get_contents
(
'php://input'
);
if
(
empty
(
$data
))
return
false
;
//支持直接读取input流
$params
=
DataParser
::
toArray
(
urldecode
(
$data
));
$data
=
@
file_get_contents
(
'php://input'
);
if
(
empty
(
$params
)
||
count
(
$params
)
<
1
)
return
false
;
if
(
!
empty
(
$data
)){
foreach
(
$params
as
$key
=>
&
$value
)
$value
=
is_array
(
$value
)
&&
empty
(
$value
)
?
''
:
$value
;
$inputArray
=
json_decode
(
$data
,
true
);
unset
(
$value
);
$params
=
array_merge
(
$params
,
$inputArray
);
}
if
(
count
(
$params
)
<
1
){
//如果参数为空,则不进行处理
return
false
;
}
debug
(
"-----LTF__NOTIFY"
.
json_encode
(
$params
),
'info'
);
return
$params
;
return
$params
;
// TODO: Implement getNotifyData() method.
// TODO: Implement getNotifyData() method.
}
}
...
@@ -48,48 +54,71 @@ class LTFNotify extends NotifyStrategy{
...
@@ -48,48 +54,71 @@ class LTFNotify extends NotifyStrategy{
*
*
* @param array $data 由 $this->getNotifyData() 返回的数据
* @param array $data 由 $this->getNotifyData() 返回的数据
* @return boolean
* @return boolean
* @throws \Exception
*/
*/
public
function
checkNotifyData
(
array
$data
){
public
function
checkNotifyData
(
array
$data
){
if
(
$data
[
'code'
]
!=
'SUCCESS'
)
return
false
;
if
(
$data
[
'code'
]
!=
'SUCCESS'
)
return
false
;
return
$this
->
verifySign
(
$data
);
return
$this
->
verifySign
(
$data
);
// TODO: Implement checkNotifyData() method.
// TODO: Implement checkNotifyData() method.
}
}
/**
/**
* 检查数据是否被篡改过
* 检查数据是否被篡改过
*
* @param array $retData
* @param array $retData
* @return bool
* @return bool
* @throws \Exception
*/
*/
protected
function
verifySign
(
array
$retData
)
protected
function
verifySign
(
array
$retData
){
{
$retSign
=
$retData
[
'sign'
];
$retSign
=
$retData
[
'sign'
]
??
''
;
$data
=
ArrayUtil
::
removeKeys
(
$retData
,
[
'sign'
]);
return
true
;
$values
=
[
'return_code'
=>
$data
[
'code'
],
'return_msg'
=>
$data
[
'msg'
],
'out_trade_no'
=>
$data
[
'outTradeNo'
],
'transaction_id'
=>
$data
[
'transactionId'
],
'pay_type'
=>
$data
[
'payType'
],
'total_fee'
=>
$data
[
'totalAmount'
],
'user_id'
=>
$data
[
'buyerId'
],
'out_transaction_id'
=>
$data
[
'outTransactionId'
],
];
$values
=
ArrayUtil
::
paraFilter
(
$values
);
// $values = ArrayUtil::arraySort($values);
$signStr
=
ArrayUtil
::
createLinkstring
(
$values
);
switch
(
$this
->
config
->
signType
){
case
'MD5'
:
$sign
=
md5
(
$signStr
);
break
;
default
:
$sign
=
''
;
}
return
strtoupper
(
$sign
)
===
strtoupper
(
$retSign
);
}
}
/**
/**
* 向客户端返回必要的数据
* 向客户端返回必要的数据
*
*
* @param array $data
回调机构返回的回调通知数据
* @param array $data
* @return
array|false
* @return
void
*/
*/
protected
function
getRetData
(
array
$data
){
protected
function
getRetData
(
array
$data
){
// TODO: Implement getRetData() method.
// TODO: Implement getRetData() method.
if
(
$this
->
config
->
returnRaw
)
return
array_merge
(
$data
,
[
'channel'
=>
Config
::
LTF_CHARGE
]);
$retData
=
[
$retData
=
[
'ins_cd'
=>
$data
[
'ins_cd'
],
//机构号
'return_code'
=>
$data
[
'code'
],
'mchnt_cd'
=>
$data
[
'mchnt_cd'
],
//商户号
'return_msg'
=>
$data
[
'msg'
],
'term_id'
=>
$data
[
'term_id'
]
??
''
,
//终端号
'out_trade_no'
=>
$data
[
'outTradeNo'
],
'user_id'
=>
$data
[
'user_id'
]
??
''
,
//用户在商户的id
'transaction_id'
=>
$data
[
'transactionId'
],
'buyer_id'
=>
$data
[
'reserved_buyer_logon_id'
]
??
''
,
//买家在渠道登录账号
'pay_type'
=>
$data
[
'payType'
],
'pay_time'
=>
date
(
'Y-m-d H:i:s'
,
strtotime
(
$data
[
'txn_fin_ts'
])),
//支付完成时间
'total_fee'
=>
$data
[
'totalAmount'
],
'amount'
=>
$data
[
'order_amt'
],
//订单金额
'user_id'
=>
$data
[
'buyerId'
],
'amount_settle'
=>
$data
[
'settle_order_amt'
],
//应结订单金额
'out_transaction_id'
=>
$data
[
'outTransactionId'
],
'transaction_id'
=>
$data
[
'transaction_id'
]
??
''
,
//渠道交易流水号
'pay_time'
=>
$data
[
'payTime'
],
'order_no'
=>
$data
[
'mchnt_order_no'
]
??
''
,
//商户订单号, 商户系统内部的订单号
'channel'
=>
Config
::
LTF_CHARGE
,
'return_param'
=>
$data
[
'reserved_addn_inf'
]
??
''
,
//附加数据
'channel'
=>
Config
::
WX_CHARGE
,
//通道
];
];
return
$retData
;
return
$retData
;
}
}
...
@@ -101,7 +130,7 @@ class LTFNotify extends NotifyStrategy{
...
@@ -101,7 +130,7 @@ class LTFNotify extends NotifyStrategy{
* @return mixed
* @return mixed
*/
*/
protected
function
replyNotify
(
$flag
,
$msg
=
'OK'
){
protected
function
replyNotify
(
$flag
,
$msg
=
'OK'
){
return
(
$flag
?
1
:
0
);
return
(
$flag
?
true
:
false
);
// TODO: Implement replyNotify() method.
// TODO: Implement replyNotify() method.
}
}
}
}
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment