- 按 docs/renew-code-comment.md 将 PHP 文件头改为带边框的 Author 注释\n- 注释中的 crmeb.com 替换为 uj345.cn(代码字符串中的外链未改)\n- 新增 docs/renew-code-comment.md 说明 Made-with: Cursor
64 lines
1.7 KiB
PHP
64 lines
1.7 KiB
PHP
<?php
|
|
// +----------------------------------------------------------------------
|
|
// | Author: ScottPan Team
|
|
// +----------------------------------------------------------------------
|
|
|
|
namespace crmeb\services\wechat\v3pay;
|
|
|
|
|
|
use crmeb\exceptions\PayException;
|
|
use crmeb\services\wechat\config\V3PaymentConfig;
|
|
use Psr\SimpleCache\InvalidArgumentException;
|
|
use think\facade\Cache;
|
|
|
|
/**
|
|
* Class Certficates
|
|
* @package crmeb\services\easywechat\v3pay
|
|
* @property V3PaymentConfig $config
|
|
*/
|
|
trait Certficates
|
|
{
|
|
|
|
/**
|
|
* @param string|null $key
|
|
* @return array|mixed|null
|
|
* @throws InvalidArgumentException
|
|
*/
|
|
public function getCertficatescAttr(string $key = null)
|
|
{
|
|
$driver = Cache::store('file');
|
|
$cacheKey = '_wx_v3' . $this->config->serialNo;
|
|
if ($driver->has($cacheKey)) {
|
|
$res = $driver->get($cacheKey);
|
|
if ($key && $res) {
|
|
return $res[$key] ?? null;
|
|
} else {
|
|
return $res;
|
|
}
|
|
}
|
|
$certficates = $this->getCertficates();
|
|
$driver->set($cacheKey, $certficates, 3600 * 24 * 30);
|
|
if ($key && $certficates) {
|
|
return $certficates[$key] ?? null;
|
|
}
|
|
return $certficates;
|
|
}
|
|
|
|
/**
|
|
* get certficates.
|
|
*
|
|
* @return array
|
|
*/
|
|
public function getCertficates()
|
|
{
|
|
$response = $this->request('v3/certificates', 'GET', [], false);
|
|
if (isset($response['code'])) {
|
|
throw new PayException($response['message']);
|
|
}
|
|
$certificates = $response['data'][0];
|
|
$certificates['certificates'] = $this->decrypt($certificates['encrypt_certificate']);
|
|
unset($certificates['encrypt_certificate']);
|
|
return $certificates;
|
|
}
|
|
}
|