PayEnum::WECHAT_PAY])->findOrEmpty()->toArray(); //判断是否已经存在证书文件夹,不存在则新建 if (!file_exists(app()->getRootPath() . 'runtime/cert')) { mkdir(app()->getRootPath() . 'runtime/cert', 0775, true); } //写入文件 $apiclientCert = $pay['config']['apiclient_cert'] ?? ''; $apiclientKey = $pay['config']['apiclient_key'] ?? ''; $plaformCert = $pay['config']['platform_certs'] ?? ''; $certPath = app()->getRootPath() . 'runtime/cert/' . md5($apiclientCert) . '.pem'; $keyPath = app()->getRootPath() . 'runtime/cert/' . md5($apiclientKey) . '.pem'; $plaformCertPath = app()->getRootPath() . 'runtime/cert/' . md5($plaformCert) . '.pem'; if (!empty($apiclientCert) && !file_exists($certPath)) { static::setCert($certPath, trim($apiclientCert)); } if (!empty($apiclientKey) && !file_exists($keyPath)) { static::setCert($keyPath, trim($apiclientKey)); } if (!empty($plaformCert) && !file_exists($plaformCertPath)) { static::setCert($plaformCertPath, trim($plaformCert)); } return [ // 服务商商户号 'mch_id' => $pay['config']['mch_id'] ?? '', // 商户证书 'private_key' => $keyPath, 'certificate' => $certPath, // 平台证书 'platform_certs' => $plaformCertPath, // v3 API 秘钥 'secret_key' => '1A1233CFB69D7F27211E36AFF9EC373A', // v2 API 秘钥 // 'v2_secret_key' => $pay['config']['pay_sign_key'] ?? '', 'notify_url' => $notifyUrl, 'http' => [ 'throw' => true, // 状态码非 200、300 时是否抛出异常,默认为开启 'timeout' => 5.0, ] ]; } /** * @notes 临时写入证书 * @param $path * @param $cert * @author 段誉 * @date 2023/2/27 15:48 */ public static function setCert($path, $cert) { $fopenPath = fopen($path, 'w'); fwrite($fopenPath, $cert); fclose($fopenPath); } }