Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
jcy2004x
ShopXO
提交
ab6dcf85
ShopXO
项目概览
jcy2004x
/
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,发现更多精彩内容 >>
提交
ab6dcf85
编写于
7月 31, 2019
作者:
D
devil_gong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
pay debug
上级
cd255212
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
59 addition
and
150 deletion
+59
-150
extend/payment/PayEase.php
extend/payment/PayEase.php
+59
-150
未找到文件。
extend/payment/PayEase.php
浏览文件 @
ab6dcf85
...
@@ -107,36 +107,6 @@ class PayEase
...
@@ -107,36 +107,6 @@ class PayEase
'rows'
=>
6
,
'rows'
=>
6
,
'message'
=>
'请填写首信易公钥'
,
'message'
=>
'请填写首信易公钥'
,
],
],
[
'element'
=>
'select'
,
'placeholder'
=>
'收银台类型'
,
'is_multiple'
=>
0
,
'element_data'
=>
[
[
'value'
=>
'STANDARD'
,
'name'
=>
'标准版'
],
[
'value'
=>
'DECLARE'
,
'name'
=>
'申报版'
],
[
'value'
=>
'CUSTOMS'
,
'name'
=>
'海淘版按照收银台类型值判断'
],
[
'value'
=>
'DECLARE'
,
'name'
=>
'需要同时提交身份信息和贸易 背景。STANDARD 不需要提交身份信息和 贸易背景。CUSTOMS 同申报版相似,区 别在于可不传银行卡号'
],
],
'name'
=>
'cashierVersion'
,
'title'
=>
'收银台类型'
,
'is_required'
=>
0
,
'message'
=>
'请选择收银台类型'
,
],
[
'element'
=>
'select'
,
'placeholder'
=>
'贸易背景'
,
'is_multiple'
=>
0
,
'element_data'
=>
[
[
'value'
=>
'GOODSTRADE'
,
'name'
=>
'货物贸易'
],
[
'value'
=>
'PLANETICKET'
,
'name'
=>
'机票'
],
[
'value'
=>
'HOTELACCOMMODATIO'
,
'name'
=>
'酒店'
],
[
'value'
=>
'STUDYABROAD'
,
'name'
=>
' 留学'
]
],
'name'
=>
'forUse'
,
'title'
=>
'贸易背景'
,
'is_required'
=>
0
,
'message'
=>
'请选择贸易背景'
,
],
];
];
return
[
return
[
...
@@ -175,8 +145,6 @@ class PayEase
...
@@ -175,8 +145,6 @@ class PayEase
'requestId'
=>
$params
[
'order_no'
]
.
GetNumberCode
(
6
),
'requestId'
=>
$params
[
'order_no'
]
.
GetNumberCode
(
6
),
'notifyUrl'
=>
$params
[
'notify_url'
],
'notifyUrl'
=>
$params
[
'notify_url'
],
'callbackUrl'
=>
$params
[
'call_back_url'
],
'callbackUrl'
=>
$params
[
'call_back_url'
],
'cashierVersion'
=>
$this
->
config
[
'cashierVersion'
],
'forUse'
=>
$this
->
config
[
'forUse'
],
];
];
$payer
=
[
$payer
=
[
'idType'
=>
'IDCARD'
,
'idType'
=>
'IDCARD'
,
...
@@ -195,21 +163,15 @@ class PayEase
...
@@ -195,21 +163,15 @@ class PayEase
$public_key
=
ROOT
.
'rsakeys/server.cer'
;
$public_key
=
ROOT
.
'rsakeys/server.cer'
;
$str
=
$this
->
buildJson
(
$private_key
,
$this
->
config
[
'password'
],
$data
);
$str
=
$this
->
buildJson
(
$private_key
,
$this
->
config
[
'password'
],
$data
);
$date
=
$this
->
creatdate
(
$str
,
$public_key
);
$date
=
$this
->
creatdate
(
$str
,
$public_key
);
//print_r($str);die;
$url
=
'https://apis.5upay.com/onlinePay/order'
;
$url
=
'https://apis.5upay.com/onlinePay/order'
;
$ret
=
$this
->
execute
(
return
$this
->
execute
(
$private_key
,
$private_key
,
$this
->
config
[
'password'
],
$this
->
config
[
'password'
],
$public_key
,
$public_key
,
$url
,
$url
,
$date
$date
);
);
echo
'<pre>'
;
print_r
(
$ret
);
die
;
return
100
;
}
}
/**
/**
...
@@ -223,8 +185,8 @@ class PayEase
...
@@ -223,8 +185,8 @@ class PayEase
*/
*/
public
function
Respond
(
$params
=
[])
public
function
Respond
(
$params
=
[])
{
{
file_put_contents
(
ROOT
.
'eeeeeeee.txt'
,
json_encode
(
$params
));
//die;
//
file_put_contents(ROOT.'eeeeeeee.txt', json_encode($params));//die;
file_put_contents
(
ROOT
.
'hhhhhhhh.txt'
,
json_encode
(
$_SERVER
));
//
file_put_contents(ROOT.'hhhhhhhh.txt', json_encode($_SERVER));
// 同步返回,直接进入订单详情页面
// 同步返回,直接进入订单详情页面
if
(
substr
(
CurrentScriptName
(),
-
20
)
==
'_payease_respond.php'
&&
empty
(
$params
[
'hmac'
])
&&
!
empty
(
$params
[
'requestId'
]))
if
(
substr
(
CurrentScriptName
(),
-
20
)
==
'_payease_respond.php'
&&
empty
(
$params
[
'hmac'
])
&&
!
empty
(
$params
[
'requestId'
]))
...
@@ -234,20 +196,22 @@ class PayEase
...
@@ -234,20 +196,22 @@ class PayEase
$params
=
json_decode
(
'{"data":"B4BOlE8TEk7gvKRzzF+sVlxbXN6GHkFn0taferJCsP1b43xszuEzPRTAsWlm3ziiMAEYWYsNme2RtWAXYgiJPAW2Q0u8+LYZKvsHyVlSZB4C6e13CumLk2\/fAUcsLZ\/pUGvIidQOAkxwD5Rz7HqzyAnFSx+nSJxDbxJt8WQk6dAHXMqzm4VpSXpPgQkrfdr2sAw9xPMS5O5NiQlXyqjWwm5NY8UG5SjyBuYO6JGRlObzTw6hyAzjnEG3Yqp0YAuO2D6vFdgj6QgWIKeTeJWljXyidCxe\/u3wmko1lTnQg2vTweEEeUb5iGXLvg47w0A2BWlWqsw6SaCNYEblW8nJoH6RfcGMX05GDhBLTAW1uApMrzn80opmm79YlrQgiEdkFkfjT4Y2Ho3obN\/\/EeRl3bi9S72UaaiSAOdWh+3+bwJSPv1jcUDr2eqMrTlkfj+aHDltlu328lP9wtt9q4fnZ1Rz3gXDEUHHEF2zMNyjQCDIukIC8ZtVafDG6ZSl1pYPejOYj56a4W4TAliCIz6LtvYK4HwQuW+X0L5DBEUE4c94CuDiCzYW6TpGIhLMHpIq\/\/dDxnWlGL3ntX9YgLgDZmpoXQxogJb4ZIrbiqZm5Z90ZihYuNXdviTvYFSMtN6plzbT7WM3GbVqwiDayUnTbFSb7TlL6EOjQ6FGev6\/C12WItN8i9QDp+KwgH02FOgD9NXJmoEC3z3JJfYdFhwH1z19Sdcx2vhTdr\/F0yZS5egXgLUAx7g0ZNKaTgncyf7a5mK\/wR+9i398QWd5Cbr+\/oOzh8Z\/jA2dY2mTSkJYXPh8QV4kVxt7mijNnjnuM0nkxXBCL4bDePr9FiuEjdH2MAK4Se656+MT9Gqpi8td8Waql2750vvZQrJlGn6aKs\/orIxiySLa8e1oxlNvLcLByd4PZ9rZbyhIqA4GpgYFAxxtWbDSeLYmvc6PSKYMHWUo"}'
,
true
);
// $params = json_decode('{"data":"GwrbZZFVl2cVM9G5ACPr+b8RhiZgQkLtC5xHdYwkqEOwMDhUD+wzoeWoVj3swTJ0Q36JNCtjPRZ8TPYe5SkPuo261i\/i\/gzbgrGO1QZxxrqYCMEmLHj3dajdXu2+FZsW4AyIxgpsp0CJ3HQBezmRiKzG4rYZvMDXUgIBArT8T9bcl3HySzyfLovtAWw8jwC2MPYi8d1nsHKEP3uB5NPCA2y\/vXMt0iq2xGNlgVFD0OVk2RkADDYmPxZFH+cH1LH0mX2+Fe5Ga2\/KbUQlR7HTeAkxK1w5sHvzdBK5vtbWJD4vF\/XaNsTuJk4QIw12LtZHGeUNUeWa900CMMt+Jy3DbxnIRutQhudBB7KEFUDlcIWGDBhyikZyMzUWG1CZrbWyih3u6Pv3jgFjHXE0v8kvazWueumV2+\/MfOUYIs8Ax8QVnZVWBYggR3ZpwIQTayjoSLGtQOtvcHUJux\/K6TzRq8xXwVZnqy+yxQArIL4lbfdyEB6TDhQGLsykqwI9b5OhBpj83PQhhHljUhcGkPMgjME1KWL\/JayoS1m+MvYV\/f8K1bphFd4RIf5KxiEkjCeLYXlXC24Eu8V89F6RcVKZE8mZAFaoS7hFISWncTVhZQEAeqbrDl6cPk2CvGbmfJY1DLVDka+ueyl6hqaCtWjTB9D9UH5kh7sCr4WOD9XgHYMw1Kariju9BvUr7f6mhvLGWvFJj8qFejCe2a4\/CbHikmGedljz6EqjU3Op3o6eTe1PyHvXrKktdFWE6yV+VrHBlY9wEHk6fT32ovUkMbCvNX8liRgYaEJX4qtPmvsPs8gSQ0dMplccYGsHclzWTW5TC56CzjOp7pGujHZJ4kVsEIxLpDQDFV9AlxC\/4aNQPNisGv9rBmJ7gxITfrquOpaScAeCSjaTsEj4MS2OE89gAkZ+0YepULRV5F3C+pTWUYtHXam9BL6\/56oj6F\/oL0te"}', true);
// $_SERVER['HTTP_ENCRYPTKEY'] = 'gQ3QJ98euDJGQOI9UshCfcayWZwKO8OkPREZTVlTTQ4uz6cjTRvhQbvh0dgaPAGZcmHoC4wt0EAlzOCXiF7v+ipMKradhshfJhgOvXJrFJ8Hq7/vHzCCHm7Myqe8U00N20Gs/PJERMsZES3dYM1hlcK8jLBD/okWh2UJW8ocbZiR6hjs3jCzGC/tqv9A1VZi50A5/hnv9CXW2PFppTtZ6wSTVazp0+bAscqquqwABh21HTj65Kkv98OArF7fxeLS2LUPF6HkgkFS4711wcSXplvcssa+gecZ4Z9BVz4JmWKsvLCFoOIg3gwRcPRBdfSTw2tENDVxtKWC+1g6XpBxew==';
// $_SERVER['HTTP_MERCHANTID'] = '890000593';
// 异步处理
// 异步处理
$private_key
=
ROOT
.
'rsakeys/client.pfx'
;
$private_key
=
ROOT
.
'rsakeys/client.pfx'
;
$public_key
=
ROOT
.
'rsakeys/test.cer'
;
$public_key
=
ROOT
.
'rsakeys/test.cer'
;
$params
[
'encryptKey'
]
=
isset
(
$_SERVER
[
'HTTP_ENCRYPTKEY'
])
?
$_SERVER
[
'HTTP_ENCRYPTKEY'
]
:
''
;
$params
[
'encryptKey'
]
=
isset
(
$_SERVER
[
'HTTP_ENCRYPTKEY'
])
?
$_SERVER
[
'HTTP_ENCRYPTKEY'
]
:
''
;
$params
[
'merchantId'
]
=
isset
(
$_SERVER
[
'HTTP_MERCHANTID'
])
?
$_SERVER
[
'HTTP_MERCHANTID'
]
:
''
;
$params
[
'merchantId'
]
=
isset
(
$_SERVER
[
'HTTP_MERCHANTID'
])
?
$_SERVER
[
'HTTP_MERCHANTID'
]
:
''
;
$
data
=
$this
->
NotifyCheckHmac
(
$private_key
,
$params
,
$public_key
,
$this
->
config
[
'password'
]);
$
ret
=
$this
->
NotifyCheckHmac
(
$private_key
,
$params
,
$public_key
,
$this
->
config
[
'password'
]);
var_dump
(
$data
);
die
;
// 支付状态
// 支付状态
if
(
isset
(
$
data
[
'status'
])
&&
$data
[
'status'
]
==
'SUCCESS'
)
if
(
isset
(
$
ret
[
'code'
])
&&
$ret
[
'code'
]
==
0
&&
isset
(
$ret
[
'data'
][
'status'
])
&&
$ret
[
'data'
]
[
'status'
]
==
'SUCCESS'
)
{
{
$data
[
'out_trade_no'
]
=
$order_no
;
return
DataReturn
(
'支付成功'
,
0
,
$this
->
ReturnData
(
$ret
[
'data'
]));
return
DataReturn
(
'支付成功'
,
0
,
$this
->
ReturnData
(
$data
));
}
}
return
DataReturn
(
'支付失败'
,
-
100
);
return
DataReturn
(
'支付失败'
,
-
100
);
...
@@ -263,7 +227,6 @@ var_dump($data);die;
...
@@ -263,7 +227,6 @@ var_dump($data);die;
*/
*/
private
function
ReturnData
(
$data
)
private
function
ReturnData
(
$data
)
{
{
print_r
(
$data
);
die
;
// 参数处理
// 参数处理
$out_trade_no
=
substr
(
$data
[
'requestId'
],
0
,
strlen
(
$data
[
'requestId'
])
-
6
);
$out_trade_no
=
substr
(
$data
[
'requestId'
],
0
,
strlen
(
$data
[
'requestId'
])
-
6
);
...
@@ -317,47 +280,21 @@ var_dump($data);die;
...
@@ -317,47 +280,21 @@ var_dump($data);die;
*/
*/
public
function
checkHmac
(
$private_key
,
$public_key
,
$data
,
$password
)
public
function
checkHmac
(
$private_key
,
$public_key
,
$data
,
$password
)
{
{
$aeskey
=
$this
->
rsaPrivateDecode
(
$data
,
$private_key
,
$password
);
$aeskey
=
$this
->
rsaPrivateDecode
(
$data
,
$private_key
,
$password
);
$encrypt_str
=
$this
->
aesDesc
(
$data
,
$aeskey
);
$encrypt_str
=
$this
->
aesDesc
(
$data
,
$aeskey
);
/*
* 去除空值的元素
*/
function
clearBlank
(
$arr
)
{
return
$arr
;
function
odd
(
$var
)
{
return
(
$var
<>
''
);
//return true or false
}
return
(
array_filter
(
$arr
,
"odd"
));
}
function
array_remove_empty
(
&
$arr
,
$trim
=
true
){
foreach
(
$arr
as
$key
=>
$value
)
{
if
(
is_array
(
$value
))
{
array_remove_empty
(
$arr
[
$key
]);
}
else
{
$value
=
trim
(
$value
);
if
(
$value
==
''
)
{
unset
(
$arr
[
$key
]);
}
elseif
(
$trim
)
{
$arr
[
$key
]
=
$value
;
}
}
}
}
$encrypt_str
=
clearBlank
(
$encrypt_str
);
return
$this
->
hmacSign
(
$encrypt_str
,
$public_key
);
return
$this
->
hmacSign
(
$encrypt_str
,
$public_key
);
}
}
public
function
execute
(
$private_key
,
$password
,
$public_key
,
$url
,
$param
)
public
function
execute
(
$private_key
,
$password
,
$public_key
,
$url
,
$param
)
{
{
$data
=
$this
->
httpRequestPost
(
$url
,
$param
,
$public_key
,
$password
,
$private_key
);
$ret
=
$this
->
httpRequestPost
(
$url
,
$param
,
$public_key
,
$password
,
$private_key
);
$this
->
handle
(
$data
);
if
(
$ret
[
'code'
]
!=
0
)
return
$data
;
{
return
$ret
;
}
$this
->
handle
(
$ret
[
'data'
]);
return
$ret
;
}
}
public
function
handle
(
$data
=
array
())
public
function
handle
(
$data
=
array
())
...
@@ -373,14 +310,11 @@ var_dump($data);die;
...
@@ -373,14 +310,11 @@ var_dump($data);die;
print_r
(
$img
);
print_r
(
$img
);
}
else
if
(
isset
(
$data
[
'status'
])
&&
$data
[
'status'
]
==
'CANCEL'
){
}
else
if
(
isset
(
$data
[
'status'
])
&&
$data
[
'status'
]
==
'CANCEL'
){
return
$data
;
return
DataReturn
(
'处理失败'
,
-
1
,
$data
)
;
}
else
if
(
isset
(
$data
[
'status'
])
&&
$data
[
'status'
]
==
'INIT'
){
}
else
if
(
isset
(
$data
[
'status'
])
&&
$data
[
'status'
]
==
'INIT'
){
return
$data
;
return
DataReturn
(
'处理失败'
,
-
1
,
$data
)
;
}
else
{
}
else
{
return
array
(
return
DataReturn
(
'响应错误'
,
-
1
);
'error_description'
=>
'Response Error'
,
'responseData'
=>
$data
);
}
}
}
}
...
@@ -407,22 +341,16 @@ var_dump($data);die;
...
@@ -407,22 +341,16 @@ var_dump($data);die;
$responseText
=
curl_exec
(
$curl
);
$responseText
=
curl_exec
(
$curl
);
if
(
curl_errno
(
$curl
)
||
$responseText
===
false
)
{
if
(
curl_errno
(
$curl
)
||
$responseText
===
false
)
{
curl_close
(
$curl
);
curl_close
(
$curl
);
throw
new
InvalidRequestException
(
array
(
return
DataReturn
(
'请求错误'
,
-
1
);
'error_description'
=>
'Request Error'
));
}
}
curl_close
(
$curl
);
curl_close
(
$curl
);
preg_match_all
(
'/(encryptKey|merchantId|data"):(\s+|")([^"\s]+)/s'
,
$responseText
,
$m
);
preg_match_all
(
'/(encryptKey|merchantId|data"):(\s+|")([^"\s]+)/s'
,
$responseText
,
$m
);
list
(
$encryptKey
,
$merchantId
,
$data
)
=
$m
[
3
];
list
(
$encryptKey
,
$merchantId
,
$data
)
=
$m
[
3
];
$responsedata
=
array
(
"data"
=>
$data
,
"encryptKey"
=>
$encryptKey
,
"merchantId"
=>
$merchantId
);
$responsedata
=
array
(
"data"
=>
$data
,
"encryptKey"
=>
$encryptKey
,
"merchantId"
=>
$merchantId
);
if
(
$responsedata
[
'merchantId'
]
==
null
){
if
(
$responsedata
[
'merchantId'
]
==
null
){
throw
new
InvalidRequestException
(
array
(
return
DataReturn
(
'请求错误'
,
-
1
);
'error_description'
=>
'Request error'
,
'responseData'
=>
$responseText
));
}
}
$date
=
$this
->
checkHmac
(
$private_key
,
$public_key
,
$responsedata
,
$password
);
return
$this
->
checkHmac
(
$private_key
,
$public_key
,
$responsedata
,
$password
);
return
$date
;
}
}
...
@@ -437,7 +365,7 @@ var_dump($data);die;
...
@@ -437,7 +365,7 @@ var_dump($data);die;
foreach
(
$para
as
$k
=>
$var
){
foreach
(
$para
as
$k
=>
$var
){
if
(
is_scalar
(
$var
)
&&
$var
!==
''
&&
$var
!==
null
){
if
(
is_scalar
(
$var
)
&&
$var
!==
''
&&
$var
!==
null
){
$data
[
$k
]
=
$var
;
$data
[
$k
]
=
$var
;
}
else
if
(
is_object
(
$var
)
&&
$var
instanceof
AbstractModel
){
}
else
if
(
is_object
(
$var
)){
$data
[
$k
]
=
array_filter
((
array
)
$var
);
$data
[
$k
]
=
array_filter
((
array
)
$var
);
}
else
if
(
is_array
(
$var
)){
}
else
if
(
is_array
(
$var
)){
$data
[
$k
]
=
array_filter
(
$var
);
$data
[
$k
]
=
array_filter
(
$var
);
...
@@ -645,14 +573,25 @@ var_dump($data);die;
...
@@ -645,14 +573,25 @@ var_dump($data);die;
ksort
(
$encrypt_str
);
ksort
(
$encrypt_str
);
$hmacSource
=
''
;
$hmacSource
=
''
;
foreach
(
$encrypt_str
as
$key
=>
$value
){
foreach
(
$encrypt_str
as
$key
=>
$value
){
if
(
$value
==
''
)
{
continue
;
}
if
(
is_array
(
$value
))
{
if
(
is_array
(
$value
))
{
ksort
(
$value
);
ksort
(
$value
);
foreach
(
$value
as
$key2
=>
$value2
)
{
foreach
(
$value
as
$key2
=>
$value2
)
{
if
(
$value2
==
''
)
{
continue
;
}
if
(
is_object
(
$value2
))
{
if
(
is_object
(
$value2
))
{
$value2
=
array_filter
((
array
)
$value2
);
$value2
=
array_filter
((
array
)
$value2
);
ksort
(
$value2
);
ksort
(
$value2
);
foreach
(
$value2
as
$oKey
=>
$oValue
)
{
foreach
(
$value2
as
$oKey
=>
$oValue
)
{
if
(
$oValue
==
''
)
{
continue
;
}
$oValue
.
=
'#'
;
$oValue
.
=
'#'
;
$hmacSource
.
=
trim
(
$oValue
);
$hmacSource
.
=
trim
(
$oValue
);
...
@@ -660,10 +599,18 @@ var_dump($data);die;
...
@@ -660,10 +599,18 @@ var_dump($data);die;
}
else
if
(
is_array
(
$value2
)){
}
else
if
(
is_array
(
$value2
)){
ksort
(
$value2
);
ksort
(
$value2
);
foreach
(
$value2
as
$key3
=>
$value3
)
{
foreach
(
$value2
as
$key3
=>
$value3
)
{
if
(
$value3
==
''
)
{
continue
;
}
if
(
is_object
(
$value3
))
{
if
(
is_object
(
$value3
))
{
$value3
=
array_filter
((
array
)
$value3
);
$value3
=
array_filter
((
array
)
$value3
);
ksort
(
$value3
);
ksort
(
$value3
);
foreach
(
$value3
as
$oKey
=>
$oValue
)
{
foreach
(
$value3
as
$oKey
=>
$oValue
)
{
if
(
$oValue
==
''
)
{
continue
;
}
$oValue
.
=
'#'
;
$oValue
.
=
'#'
;
$hmacSource
.
=
trim
(
$oValue
);
$hmacSource
.
=
trim
(
$oValue
);
}
}
...
@@ -685,33 +632,13 @@ var_dump($data);die;
...
@@ -685,33 +632,13 @@ var_dump($data);die;
$sourceHmac
=
sha1
(
$hmacSource
,
true
);
$sourceHmac
=
sha1
(
$hmacSource
,
true
);
$hh
=
$this
->
rsaPubilcSign
(
$sourceHmac
,
$path
,
$hmac
);
$hh
=
$this
->
rsaPubilcSign
(
$sourceHmac
,
$path
,
$hmac
);
if
(
$hh
==
0
||
$hh
==-
1
){
if
(
$hh
==
0
||
$hh
==-
1
){
throw
new
HmacVerifyException
(
array
(
return
DataReturn
(
'HMAC验证错误'
,
-
1
);
'error_description'
=>
'hmac validation error'
));
}
}
return
$encrypt_str
;
return
DataReturn
(
'校验成功'
,
0
,
$encrypt_str
)
;
}
}
public
function
NotifyHandle
(
$data
=
array
())
{
if
(
$data
[
'status'
]
==
'SUCCESS'
){
//成功时相关处理代码
echo
"SUCCESS"
;
//打印出 SUCCESS 表示收到通知
}
elseif
(
$data
[
'status'
]
==
'FAILED'
||
$data
[
'status'
]
==
'CANCEL'
){
//失败时相关处理代码
//订单取消
}
elseif
(
$data
[
'status'
]
==
'INIT'
){
//待处理状态下相关处理代码
}
else
{
throw
new
InvalidResponseException
(
array
(
'error_description'
=>
'notify response error'
,
'responseData'
=>
$data
));
}
}
/**
/**
* hmac 验证
* hmac 验证
* @return mixed
* @return mixed
...
@@ -731,36 +658,6 @@ var_dump($data);die;
...
@@ -731,36 +658,6 @@ var_dump($data);die;
$encrypt_str
=
openssl_decrypt
(
$date
,
"AES-128-ECB"
,
$screct_key
);
$encrypt_str
=
openssl_decrypt
(
$date
,
"AES-128-ECB"
,
$screct_key
);
$encrypt_str
=
preg_replace
(
'/[\x00-\x1F]/'
,
''
,
$encrypt_str
);
$encrypt_str
=
preg_replace
(
'/[\x00-\x1F]/'
,
''
,
$encrypt_str
);
$encrypt_str
=
json_decode
(
$encrypt_str
,
true
);
$encrypt_str
=
json_decode
(
$encrypt_str
,
true
);
var_dump
(
$encrypt_str
);
die
;
/*
* 去除空值的元素
*/
function
clearBlank
(
$arr
)
{
function
odd
(
$var
)
{
return
(
$var
<>
''
);
//return true or false
}
return
empty
(
$arr
)
?
''
:
(
array_filter
(
$arr
,
"odd"
));
}
function
array_remove_empty
(
&
$arr
,
$trim
=
true
){
foreach
(
$arr
as
$key
=>
$value
)
{
if
(
is_array
(
$value
))
{
array_remove_empty
(
$arr
[
$key
]);
}
else
{
$value
=
trim
(
$value
);
if
(
$value
==
''
)
{
unset
(
$arr
[
$key
]);
}
elseif
(
$trim
)
{
$arr
[
$key
]
=
$value
;
}
}
}
}
// $encrypt_str = clearBlank($encrypt_str);
var_dump
(
$encrypt_str
);
die
;
if
(
empty
(
$encrypt_str
[
'hmac'
])){
if
(
empty
(
$encrypt_str
[
'hmac'
])){
return
DataReturn
(
'HMAC验证错误'
,
-
1
);
return
DataReturn
(
'HMAC验证错误'
,
-
1
);
...
@@ -771,13 +668,25 @@ var_dump($encrypt_str);die;
...
@@ -771,13 +668,25 @@ var_dump($encrypt_str);die;
ksort
(
$encrypt_str
);
ksort
(
$encrypt_str
);
$hmacSource
=
''
;
$hmacSource
=
''
;
foreach
(
$encrypt_str
as
$key
=>
$value
){
foreach
(
$encrypt_str
as
$key
=>
$value
){
if
(
$value
==
''
)
{
continue
;
}
if
(
is_array
(
$value
))
{
if
(
is_array
(
$value
))
{
ksort
(
$value
);
ksort
(
$value
);
foreach
(
$value
as
$key2
=>
$value2
)
{
foreach
(
$value
as
$key2
=>
$value2
)
{
if
(
$value2
==
''
)
{
continue
;
}
if
(
is_array
(
$value2
))
{
if
(
is_array
(
$value2
))
{
$value2
=
array_filter
((
array
)
$value2
);
$value2
=
array_filter
((
array
)
$value2
);
ksort
(
$value2
);
ksort
(
$value2
);
foreach
(
$value2
as
$oKey
=>
$oValue
)
{
foreach
(
$value2
as
$oKey
=>
$oValue
)
{
if
(
$oValue
==
''
)
{
continue
;
}
$oValue
.
=
'#'
;
$oValue
.
=
'#'
;
$hmacSource
.
=
trim
(
$oValue
);
$hmacSource
.
=
trim
(
$oValue
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录