fix: [esign] 알림톡 발송 상세 로깅 추가 및 전달 결과 확인, SMS 폴백 제거
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user