仓库初始化
This commit is contained in:
96
extend/Yzh/NotifyClient.php
Normal file
96
extend/Yzh/NotifyClient.php
Normal file
@@ -0,0 +1,96 @@
|
||||
<?php
|
||||
|
||||
namespace Yzh;
|
||||
|
||||
use Yzh\Exception\RunTimeException;
|
||||
use Yzh\Model\Notify\NotifyRequest;
|
||||
use Yzh\Model\Notify\NotifyResponse;
|
||||
|
||||
class NotifyClient extends BaseClient
|
||||
{
|
||||
/**
|
||||
* 异步回调验签和解密
|
||||
* @param NotifyRequest $request
|
||||
* @return NotifyResponse
|
||||
* @throws RunTimeException
|
||||
* @deprecated
|
||||
*/
|
||||
public function verifyAndDescrype($request)
|
||||
{
|
||||
return $this->_verifyAndDecrypt($request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 异步回调验签和解密
|
||||
* @param NotifyRequest $request
|
||||
* @return NotifyResponse
|
||||
* @throws RunTimeException
|
||||
*/
|
||||
public function verifyAndDecrypt($request)
|
||||
{
|
||||
return $this->_verifyAndDecrypt($request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 异步回调验签和解密
|
||||
* @param NotifyRequest $request
|
||||
* @return NotifyResponse
|
||||
* @throws RunTimeException
|
||||
*/
|
||||
private function _verifyAndDecrypt($request)
|
||||
{
|
||||
$response = new NotifyResponse();
|
||||
|
||||
if ($this->sign_type == Config::SIGN_TYPE_RSA) {
|
||||
if (!$this->verifyRSA($request)) {
|
||||
$response->setSignRes(false);
|
||||
return $response;
|
||||
}
|
||||
$response->setSignRes(true);
|
||||
} else {
|
||||
if (!$this->verifyHmac($request)) {
|
||||
$response->setSignRes(false);
|
||||
return $response;
|
||||
}
|
||||
$response->setSignRes(true);
|
||||
}
|
||||
|
||||
$decryptRes = $this->des->decrypt($request->getData());
|
||||
if ($decryptRes == null) {
|
||||
$response->setDecryptRes(false);
|
||||
return $response;
|
||||
}
|
||||
|
||||
$response->setDecryptRes(true);
|
||||
$response->setData($decryptRes);
|
||||
return $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* 异步回调验签
|
||||
* @param NotifyRequest $request
|
||||
* @return bool
|
||||
*/
|
||||
public function verifyRSA($request)
|
||||
{
|
||||
return $this->rsa->verify($this->getPain($request), $request->getSign());
|
||||
}
|
||||
|
||||
public function verifyHmac($request)
|
||||
{
|
||||
return $this->hmac->verify($this->getPain($request), $request->getSign());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param NotifyRequest $request
|
||||
*/
|
||||
public function getPain($request)
|
||||
{
|
||||
return join("", array(
|
||||
"data=", $request->getData(),
|
||||
"&mess=", $request->getMess(),
|
||||
"×tamp=", $request->getTimestamp(),
|
||||
"&key=", $this->app_key
|
||||
));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user