diff --git a/app/Http/Controllers/ESign/EsignApiController.php b/app/Http/Controllers/ESign/EsignApiController.php index 5a1554b9..bdde9e24 100644 --- a/app/Http/Controllers/ESign/EsignApiController.php +++ b/app/Http/Controllers/ESign/EsignApiController.php @@ -970,6 +970,12 @@ private function sendAlimtalk( $barobill = app(BarobillService::class); $barobill->setServerMode($member->server_mode ?? 'production'); + // 카카오톡 채널 목록에서 발신프로필 키(SenderID) 조회 + $senderId = $this->getKakaotalkSenderId($barobill, $member->biz_no); + if (! $senderId) { + return ['success' => false, 'channel' => 'alimtalk', 'error' => '등록된 카카오톡 채널이 없습니다']; + } + $signUrl = config('app.url').'/esign/sign/'.$signer->access_token; $expires = $contract->expires_at?->format('Y-m-d H:i') ?? '없음'; @@ -985,7 +991,7 @@ private function sendAlimtalk( $result = $barobill->sendATKakaotalkEx( corpNum: $member->biz_no, - senderId: '', + senderId: $senderId, templateName: $templateName, receiverName: $signer->name, receiverNum: preg_replace('/[^0-9]/', '', $signer->phone), @@ -1024,6 +1030,45 @@ private function sendAlimtalk( } } + /** + * 바로빌 카카오톡 채널 목록에서 발신프로필 키(ChannelId) 조회 + */ + private function getKakaotalkSenderId(BarobillService $barobill, string $bizNo): ?string + { + $result = $barobill->getKakaotalkChannels($bizNo); + + if (! ($result['success'] ?? false) || empty($result['data'])) { + return null; + } + + $data = $result['data']; + + // 바로빌 응답 형식에 따라 채널 목록 파싱 + if (is_array($data) && isset($data[0])) { + $channels = $data; + } elseif (is_object($data) && isset($data->KakaotalkChannel)) { + $channels = is_array($data->KakaotalkChannel) + ? $data->KakaotalkChannel + : [$data->KakaotalkChannel]; + } elseif (is_array($data) && isset($data['KakaotalkChannel'])) { + $channels = is_array($data['KakaotalkChannel']) + ? $data['KakaotalkChannel'] + : [$data['KakaotalkChannel']]; + } else { + $channels = [$data]; + } + + $channel = $channels[0] ?? null; + + if (! $channel) { + return null; + } + + return is_array($channel) + ? ($channel['ChannelId'] ?? null) + : ($channel->ChannelId ?? null); + } + /** * PDF 다운로드 */