fix: [esign] 알림톡 발신프로필 키(SenderID) 조회 로직 추가
- senderId를 빈 문자열로 보내던 것을 바로빌 채널 목록에서 ChannelId 조회 후 전달 - 바로빌 API 오류 -24005 해결
This commit is contained in:
@@ -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 다운로드
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user