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; } } }