Files
kiri-wchat/qq/Notify.php
T

95 lines
2.1 KiB
PHP
Raw Permalink Normal View History

2019-10-25 15:20:09 +08:00
<?php
2020-03-05 12:41:49 +08:00
namespace wchat\qq;
2019-10-25 15:20:09 +08:00
2020-08-10 11:19:52 +08:00
use Exception;
2020-03-05 12:41:49 +08:00
use wchat\common\Help;
2019-10-25 15:20:09 +08:00
2020-08-10 11:17:42 +08:00
/**
* Class Notify
* @package wchat\qq
*/
2019-11-11 18:14:47 +08:00
class Notify extends SmallProgram
2019-10-25 15:20:09 +08:00
{
2023-12-12 15:35:37 +08:00
public mixed $appid = null;
public mixed $mch_id = null;
public mixed $nonce_str = null;
public mixed $sign = null;
public mixed $device_info = null;
public mixed $trade_type = null;
public mixed $trade_state = null;
public mixed $bank_type = null;
public mixed $fee_type = null;
public mixed $total_fee = null;
public mixed $cash_fee = null;
public mixed $coupon_fee = null;
public mixed $transaction_id = null;
public mixed $out_trade_no = null;
public mixed $attach = null;
public mixed $time_end = null;
public mixed $openid = null;
2019-10-25 15:20:09 +08:00
2023-12-12 15:35:37 +08:00
/**
* @return bool
* 判断是否完成支付
*/
public function isSuccess(): bool
{
return $this->trade_state === 'SUCCESS';
}
2019-10-25 15:20:09 +08:00
2023-12-12 15:35:37 +08:00
/**
* @param array $params
* @return $this
* @throws
*/
public function setPayNotifyData(array $params): static
{
if (!$this->validation($params)) {
throw new Exception('签名错误!');
}
foreach ($params as $key => $val) {
$this->$key = $val;
}
return $this;
}
2019-10-25 15:20:09 +08:00
2023-12-12 15:35:37 +08:00
public function __set(string $name, $value): void
{
if (property_exists($this, $name)) {
$this->{$name} = $value;
}
}
2022-09-09 16:42:55 +08:00
2023-12-12 15:35:37 +08:00
/**
* @param array $params
* @return bool
*/
public function validation(array $params): bool
{
$sign = $params['sign'];
unset($params['sign']);
2019-10-25 15:20:09 +08:00
2023-12-12 15:35:37 +08:00
$signType = $this->payConfig->getSignType();
$privateKey = $this->payConfig->pay->qq->mchSecret;
$nowSign = Help::sign($params, $privateKey, $signType);
if ($sign === $nowSign) {
return true;
}
return false;
}
2019-10-25 15:20:09 +08:00
2023-12-12 15:35:37 +08:00
/**
* @return null
*/
public function getAppid(): mixed
{
return $this->appid;
}
2019-10-25 15:20:09 +08:00
2020-08-10 11:17:42 +08:00
2019-10-25 15:20:09 +08:00
}