fix: [esign] 알림톡 발신프로필 키(SenderID) 조회 로직 추가

- senderId를 빈 문자열로 보내던 것을 바로빌 채널 목록에서 ChannelId 조회 후 전달
- 바로빌 API 오류 -24005 해결
This commit is contained in:
김보곤
2026-02-24 00:55:32 +09:00
parent 748a9d1807
commit 6e043b9539

View File

@@ -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 다운로드
*/