From 169d649ee6e3ebc59b03237945f97de1db375a39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Thu, 26 Feb 2026 08:30:57 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20[esign]=20=EC=95=8C=EB=A6=BC=ED=86=A1=20?= =?UTF-8?q?=EB=B2=84=ED=8A=BC=20URL=20=EB=8F=84=EB=A9=94=EC=9D=B8=EC=9D=84?= =?UTF-8?q?=20APP=5FURL=EB=A1=9C=20=EC=B9=98=ED=99=98=20(=EA=B0=9C?= =?UTF-8?q?=EB=B0=9C/=EC=9A=B4=EC=98=81=20=ED=99=98=EA=B2=BD=20=EB=8C=80?= =?UTF-8?q?=EC=9D=91)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/ESign/EsignApiController.php | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/ESign/EsignApiController.php b/app/Http/Controllers/ESign/EsignApiController.php index 8e1905ff..37f6e86f 100644 --- a/app/Http/Controllers/ESign/EsignApiController.php +++ b/app/Http/Controllers/ESign/EsignApiController.php @@ -1067,14 +1067,24 @@ private function sendAlimtalk( 'Url1' => $signUrl, 'Url2' => $signUrl], ]; + $appUrl = rtrim(config('app.url'), '/'); + foreach ($buttons as &$btn) { foreach (['Url1', 'Url2'] as $urlKey) { if (! empty($btn[$urlKey])) { - $btn[$urlKey] = str_replace( - ['#{토큰}', '#{%ED%86%A0%ED%81%B0}', urlencode('#{토큰}')], - [$signer->access_token, $signer->access_token, $signer->access_token], - urldecode($btn[$urlKey]) + $url = urldecode($btn[$urlKey]); + + // #{토큰} 변수를 실제 access_token으로 치환 + $url = str_replace( + ['#{토큰}', '#{%ED%86%A0%ED%81%B0}'], + [$signer->access_token, $signer->access_token], + $url ); + + // 도메인을 현재 서버의 APP_URL로 치환 (개발/운영 환경 대응) + $url = preg_replace('#^https?://[^/]+#', $appUrl, $url); + + $btn[$urlKey] = $url; } } }