Files
baodev0andClaude Sonnet 5.5 b44a88bb52 feat(service): huỷ dịch vụ, SSL, đổi mật khẩu hosting, lịch sử thanh toán theo hình thức
- Lịch sử thanh toán hoá đơn trả thêm `method` (tự động gia hạn / số dư / admin / chuyển khoản / hoàn tiền), bỏ đuôi `(method)` khỏi ghi chú
- `DnsServer::panelUrl()` = https://<domain>/ dùng cho email cấp hosting và nút Plesk của khách
- Order item trả thêm `uuid`/`type` của dịch vụ để FE dẫn tới trang quản lý
- Yêu cầu huỷ dịch vụ, chứng chỉ SSL, lịch sử gia hạn, đổi mật khẩu hosting cho khách

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-28 16:40:24 +07:00

26 lines
664 B
PHP

<?php
namespace App\Support;
use RuntimeException;
class ResponseCipher
{
public static function encrypt(?string $value): ?string
{
if ($value === null || $value === '') {
return $value;
}
$key = (string) config('services.client_api.response_key');
if (!preg_match('/^[a-fA-F0-9]{64}$/', $key)) {
throw new RuntimeException('CLIENT_RESPONSE_KEY must be a 64-character hex string');
}
$iv = random_bytes(12);
$ciphertext = openssl_encrypt($value, 'aes-256-gcm', hex2bin($key), OPENSSL_RAW_DATA, $iv, $tag);
return base64_encode($iv . $ciphertext . $tag);
}
}