feat: [esign] 완료 알림톡 템플릿 2종 선택 및 버튼 URL 도메인 치환
- 발송 UI에 서명 요청 + 완료 알림톡 템플릿 각각 선택 가능 - 선택한 완료 템플릿명을 DB에 저장하여 서명 완료 시 사용 - 버튼 URL 도메인을 현재 환경의 app.url로 자동 치환 (개발/운영 환경 대응)
This commit is contained in:
@@ -754,7 +754,8 @@ private function sendCompletionAlimtalk(EsignContract $contract, EsignSigner $si
|
||||
return ['success' => false, 'channel' => 'alimtalk', 'error' => '등록된 카카오톡 채널이 없습니다'];
|
||||
}
|
||||
|
||||
$templateName = $this->resolveTemplateName('전자계약_완료');
|
||||
$templateName = $contract->completion_template_name
|
||||
?: $this->resolveTemplateName('전자계약_완료');
|
||||
$documentUrl = config('app.url').'/esign/sign/'.$signer->access_token.'/api/document';
|
||||
$signUrl = config('app.url').'/esign/sign/'.$signer->access_token;
|
||||
$completedAt = $contract->completed_at?->format('Y-m-d H:i') ?? now()->format('Y-m-d H:i');
|
||||
@@ -807,6 +808,20 @@ private function sendCompletionAlimtalk(EsignContract $contract, EsignSigner $si
|
||||
}
|
||||
unset($btn);
|
||||
|
||||
// 버튼 URL 도메인을 현재 환경의 도메인으로 치환
|
||||
$appHost = parse_url(config('app.url'), PHP_URL_HOST);
|
||||
foreach ($buttons as &$btn) {
|
||||
foreach (['Url1', 'Url2'] as $urlKey) {
|
||||
if (! empty($btn[$urlKey])) {
|
||||
$parsed = parse_url($btn[$urlKey]);
|
||||
if (isset($parsed['host']) && $parsed['host'] !== $appHost) {
|
||||
$btn[$urlKey] = str_replace($parsed['host'], $appHost, $btn[$urlKey]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
unset($btn);
|
||||
|
||||
$receiverNum = preg_replace('/[^0-9]/', '', $signer->phone);
|
||||
|
||||
Log::info('E-Sign 완료 알림톡 발송 시도', [
|
||||
|
||||
Reference in New Issue
Block a user