fix: [esign] 알림톡 발송 상세 로깅 추가 및 전달 결과 확인, SMS 폴백 제거

This commit is contained in:
김보곤
2026-02-24 18:33:37 +09:00
parent cd339ca17a
commit 7cf1f20fdb

View File

@@ -1045,15 +1045,28 @@ private function sendAlimtalk(
$templateContent
);
} else {
// 템플릿 조회 실패 하드코딩 폴백
\Log::warning('E-Sign 알림톡: 템플릿 내용 조회 실패, 하드코딩 폴백 사용', [
'template_name' => $templateName,
'channel_id' => $channelId,
]);
$message = $isReminder
? "안녕하세요, {$signer->name}님.\n아직 서명이 완료되지 않은 전자계약이 있습니다.\n\n ■ 계약명: {$contract->title}\n ■ 서명 기한: {$expires}\n\n 기한 내에 서명을 완료해 주세요."
: " 안녕하세요, {$signer->name}님. \n 전자계약 서명 요청이 도착했습니다.\n\n ■ 계약명: {$contract->title}\n ■ 서명 기한: {$expires}\n\n 아래 버튼을 눌러 계약서를 확인하고 서명해 주세요.";
}
$smsMessage = $smsFallback
? "[SAM] {$signer->name}님, 전자계약 서명 요청이 도착했습니다. {$signUrl}"
: '';
$receiverNum = preg_replace('/[^0-9]/', '', $signer->phone);
\Log::info('E-Sign 알림톡 발송 시도', [
'contract_id' => $contract->id,
'signer_id' => $signer->id,
'sender_id' => $member->barobill_id,
'yellow_id' => $channelId,
'template_name' => $templateName,
'template_from_api' => (bool) $templateContent,
'receiver_num' => $receiverNum,
'message_length' => mb_strlen($message),
'sign_url' => $signUrl,
]);
$result = $barobill->sendATKakaotalkEx(
corpNum: $member->biz_no,
@@ -1061,7 +1074,7 @@ private function sendAlimtalk(
yellowId: $channelId,
templateName: $templateName,
receiverName: $signer->name,
receiverNum: preg_replace('/[^0-9]/', '', $signer->phone),
receiverNum: $receiverNum,
title: '',
message: $message,
buttons: [
@@ -1072,9 +1085,40 @@ private function sendAlimtalk(
'Url2' => $signUrl,
],
],
smsMessage: $smsMessage,
);
// 발송 접수 후 결과 확인 (SendKey 반환 시)
if (($result['success'] ?? false) && ! empty($result['data']) && is_string($result['data'])) {
$sendKey = $result['data'];
\Log::info('E-Sign 알림톡 접수 성공', [
'contract_id' => $contract->id,
'send_key' => $sendKey,
]);
// 3초 후 전달 결과 확인
sleep(3);
$sendResult = $barobill->getSendKakaotalk($member->biz_no, $sendKey);
$resultData = $sendResult['data'] ?? null;
$resultCode = is_object($resultData) ? ($resultData->ResultCode ?? null) : ($resultData['ResultCode'] ?? null);
$resultMsg = is_object($resultData) ? ($resultData->ResultMessage ?? null) : ($resultData['ResultMessage'] ?? null);
\Log::info('E-Sign 알림톡 전달 결과', [
'contract_id' => $contract->id,
'send_key' => $sendKey,
'result_code' => $resultCode,
'result_message' => $resultMsg,
]);
// ResultCode 1 = 성공, 그 외 = 실패
if ($resultCode !== null && $resultCode != 1) {
return [
'success' => false,
'channel' => 'alimtalk',
'error' => "카카오톡 전달 실패: {$resultMsg} (코드: {$resultCode})",
];
}
}
if (! ($result['success'] ?? false)) {
\Log::warning('E-Sign 알림톡 발송 실패', [
'contract_id' => $contract->id,