You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.1 KiB
67 lines
2.1 KiB
<?php
|
|
/**
|
|
* +----------------------------------------------------------------------
|
|
* | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
|
* +----------------------------------------------------------------------
|
|
* | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved.
|
|
* +----------------------------------------------------------------------
|
|
* | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
|
* +----------------------------------------------------------------------
|
|
* | Author: CRMEB Team <admin@crmeb.com>
|
|
* +----------------------------------------------------------------------
|
|
*/
|
|
|
|
namespace crmeb\services\easywechat\v3pay;
|
|
|
|
|
|
use crmeb\exceptions\PayException;
|
|
use crmeb\services\CacheService;
|
|
|
|
/**
|
|
* Class Certficates
|
|
* @package crmeb\services\easywechat\v3pay
|
|
*/
|
|
trait Certficates
|
|
{
|
|
|
|
/**
|
|
* @param string|null $key
|
|
* @return array|mixed|null
|
|
* @throws \Psr\SimpleCache\InvalidArgumentException
|
|
*/
|
|
public function getCertficatescAttr(string $key = null)
|
|
{
|
|
$cacheKey = '_wx_v3' . $this->app['config']['v3_payment']['serial_no'];
|
|
if (CacheService::has($cacheKey)) {
|
|
$res = CacheService::get($cacheKey);
|
|
if ($key && $res) {
|
|
return $res[$key] ?? null;
|
|
} else {
|
|
return $res;
|
|
}
|
|
}
|
|
$certficates = $this->getCertficates();
|
|
CacheService::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;
|
|
}
|
|
}
|
|
|