diff --git a/app/Http/Controllers/ESign/EsignApiController.php b/app/Http/Controllers/ESign/EsignApiController.php index 15089440..005ae234 100644 --- a/app/Http/Controllers/ESign/EsignApiController.php +++ b/app/Http/Controllers/ESign/EsignApiController.php @@ -1047,7 +1047,7 @@ private function sendAlimtalk( $expires = $contract->expires_at?->format('Y-m-d H:i') ?? '없음'; if (! $templateName) { - $templateName = $isReminder ? '전자계약_리마인드' : '전자계약_서명요청'; + $templateName = $this->resolveTemplateName($isReminder ? '전자계약_리마인드' : '전자계약_서명요청'); } // 등록된 템플릿 본문 + 버튼 정보 조회 (정확한 포맷 유지) @@ -1208,6 +1208,14 @@ private function getKakaotalkChannelId(BarobillService $barobill, string $bizNo) * * @return array{content: string|null, buttons: array} */ + /** + * 환경별 알림톡 템플릿명 반환 (운영: 원본, 개발: _DEV 접미사) + */ + private function resolveTemplateName(string $baseName): string + { + return $baseName.(app()->environment('production') ? '' : '_DEV'); + } + private function getTemplateData(BarobillService $barobill, string $bizNo, string $channelId, string $templateName): array { $empty = ['content' => null, 'buttons' => []]; diff --git a/app/Http/Controllers/ESign/EsignPublicController.php b/app/Http/Controllers/ESign/EsignPublicController.php index 192fecb2..6a86563f 100644 --- a/app/Http/Controllers/ESign/EsignPublicController.php +++ b/app/Http/Controllers/ESign/EsignPublicController.php @@ -483,7 +483,8 @@ public function submitSignature(Request $request, string $token): JsonResponse if ($channelId) { // 템플릿 본문 + 버튼 조회 - $tplData = $this->getTemplateData($barobill, $member->biz_no, $channelId, '전자계약_서명요청'); + $nextTemplateName = $this->resolveTemplateName('전자계약_서명요청'); + $tplData = $this->getTemplateData($barobill, $member->biz_no, $channelId, $nextTemplateName); $tplMessage = $tplData['content'] ? str_replace( ['#{이름}', '#{계약명}', '#{기한}'], @@ -513,7 +514,7 @@ public function submitSignature(Request $request, string $token): JsonResponse corpNum: $member->biz_no, senderId: $member->barobill_id, yellowId: $channelId, - templateName: '전자계약_서명요청', + templateName: $nextTemplateName, receiverName: $nextSigner->name, receiverNum: preg_replace('/[^0-9]/', '', $nextSigner->phone), title: '', @@ -753,7 +754,7 @@ private function sendCompletionAlimtalk(EsignContract $contract, EsignSigner $si return ['success' => false, 'channel' => 'alimtalk', 'error' => '등록된 카카오톡 채널이 없습니다']; } - $templateName = '전자계약_완료'; + $templateName = $this->resolveTemplateName('전자계약_완료'); $documentUrl = config('app.url').'/esign/sign/'.$signer->access_token.'/api/document'; $signUrl = config('app.url').'/esign/sign/'.$signer->access_token; $completedAt = $contract->completed_at?->format('Y-m-d H:i') ?? now()->format('Y-m-d H:i'); @@ -974,6 +975,14 @@ private function getTemplateData(BarobillService $barobill, string $bizNo, strin return $empty; } + /** + * 환경별 알림톡 템플릿명 반환 (운영: 원본, 개발: _DEV 접미사) + */ + private function resolveTemplateName(string $baseName): string + { + return $baseName.(app()->environment('production') ? '' : '_DEV'); + } + private function findSigner(string $token): ?EsignSigner { $signer = EsignSigner::withoutGlobalScopes()