From 5a299ad20f32e0d31d5eba7497b9441c7f679b2a 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 07:45:24 +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=EC=9D=98=20#{=ED=86=A0=ED=81=B0}=20?= =?UTF-8?q?=EB=B3=80=EC=88=98=EB=A5=BC=20=EC=8B=A4=EC=A0=9C=20access=5Ftok?= =?UTF-8?q?en=EC=9C=BC=EB=A1=9C=20=EC=B9=98=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/ESign/EsignApiController.php | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/ESign/EsignApiController.php b/app/Http/Controllers/ESign/EsignApiController.php index 1b604efe..8e1905ff 100644 --- a/app/Http/Controllers/ESign/EsignApiController.php +++ b/app/Http/Controllers/ESign/EsignApiController.php @@ -1061,12 +1061,25 @@ private function sendAlimtalk( : " 안녕하세요, {$signer->name}님. \n 전자계약 서명 요청이 도착했습니다.\n\n ■ 계약명: {$contract->title}\n ■ 서명 기한: {$expires}\n\n 아래 버튼을 눌러 계약서를 확인하고 서명해 주세요."; } - // 등록된 버튼 URL을 그대로 사용 (동적 URL 사용 시 템플릿 불일치 오류) + // 버튼 URL의 #{토큰} 변수를 실제 access_token으로 치환 $buttons = ! empty($templateButtons) ? $templateButtons : [ ['Name' => '계약서 확인하기', 'ButtonType' => 'WL', - 'Url1' => 'https://mng.codebridge-x.com', 'Url2' => 'https://mng.codebridge-x.com'], + 'Url1' => $signUrl, 'Url2' => $signUrl], ]; + 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]) + ); + } + } + } + unset($btn); + $receiverNum = preg_replace('/[^0-9]/', '', $signer->phone); \Log::info('E-Sign 알림톡 발송 시도', [