代码拉取完成,页面将自动刷新
同步操作将从 小脉/PHP电商收付通 V3版本SDK 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
<?php
include_once('WxPayv3Exception.php');
include_once('Signs.php');
class Cert{
/**
* [certificates 保存获取的平台证书,且返回证书的序列号serial_no] 缓存一天时间
* @return string serial_no证书的序列号
*/
public static function certificates()
{
if (file_exists(getcwd() . '/vendor/wechat3/cert/serial_no.txt')) {
if ($serial_nos = file_get_contents(getcwd() . '/vendor/wechat3/cert/serial_no.txt')) {
if ($serial_nos) {
$serial_nos = json_decode($serial_nos,true);
if (time() < $serial_nos['time']) { //如果 1天缓存未过期,直接使用。
return $serial_nos['serial_no'];
}
}
}
}
$url = 'https://api.mch.weixin.qq.com/v3/certificates';
$r = Signs::_Getresponse($url);
$r = json_decode($r, true);
if (isset($r['code'])) {
return $r;
}
$r = $r['data'];
if (is_array($r)) {
$associatedData = $r[0]['encrypt_certificate']['associated_data'];
$nonceStr = $r[0]['encrypt_certificate']['nonce'];
$ciphertext = $r[0]['encrypt_certificate']['ciphertext'];
try {
$data1 = Signs::decryptToString($associatedData, $nonceStr, $ciphertext);
$serial_no = $r[0]['serial_no'];
file_put_contents(getcwd() . '/vendor/wechat3/cert/'.'apiclient_'.date('Ymd').'_cert'.'.pem', $data1);
unset($serial_nos);
$serial_nos = [
'time' => time() + 24 * 3600,
'serial_no' => $serial_no
];
file_put_contents(getcwd() . '/vendor/wechat3/cert/serial_no.txt', json_encode($serial_nos));
} catch (WxPayv3Exception $th) {
throw $th;
}
}
return $serial_no;
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。