CoolSMS란?
- 카카오 알림톡 및 문자메시지 웹 발송을 지원해주는 REST API 제공 서비스
- 단문, 장문, 포토 메시지 등을 보낼 수 있음
세상에서 가장 안정적이고 빠른 메시지 발송 플랫폼 - 쿨에스엠에스
손쉬운 결제 전용계좌, 신용카드, 계좌이체 등 국내 결제 뿐만 아니라 해용신용카드로 한번의 카드번호 등록으로 자동충전까지 지원합니다. 전용계좌, 신용카드, 계좌이체 등 다양한 결제 방식
coolsms.co.kr
1. 가입후 상단 메뉴에서 개발/연동 → API Key관리 클릭
2. 새로운 API Key 생성
3. 발급받은 API KEY, SECRET 키 저장해두기
[build.gradle] 의존성 주입
implementation 'net.nurigo:sdk:4.3.0'
** Gradle 버전 확인하고 주입하기
[config.properties]
coolsms.apikey="발급 받은 apikey"
coolsms.apisecret="발급 받은 apisecret"
coolsms.fromnumber="등록한 발신번호"
[javaScript]
// 작가 거절
function rejectArtists(memberNo) {
if (!confirm("이 작가를 거절하시겠습니까?")) return;
// 해당 작가의 전화번호를 가져옴 (예시로 임시 전화번호 사용)
// 거절 요청과 문자 전송
fetch(`/manage/reject`, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: memberNo
})
.then((response) => {
if (!response.ok) { throw new Error("거절 실패"); }
return response.text();
})
.then((data) => {
alert(`거절 성공 : ${data}`);
// 문자 전송 호출
sendRejectionMessage(memberNo);
getList(4, page4); // 목록 새로고침
})
.catch(error => alert(`거절 실패 : ${error.message}`));
}
// 문자 전송 함수
function sendRejectionMessage(memberNo){
fetch(`/api/message/send`, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: memberNo
})
.then((response) => {
if (!response.ok) { throw new Error("문자 전송 실패"); }
return response.text();
})
.then((data) => {
alert(`문자 전송 성공: ${data}`);
})
.catch((error) => {
console.error("문자 전송 에러:", error);
alert(`문자 전송 실패: ${error}`);
});
}
[Controller]
package edu.kh.plklj.message.controller;
import java.util.Map;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import edu.kh.plklj.message.service.MessageService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Controller
@RequestMapping("/api/message")
public class MessageController {
private final MessageService messageService;
// 생성자 주입
public MessageController(MessageService messageService) {
this.messageService = messageService;
}
// 문자 전송 API
@PostMapping("/send")
@ResponseBody
public String sendRejectionMessage(@RequestBody int memberNo) {
// 문자 전송
int result = messageService.sendSMS(memberNo); // 문자 전송 서비스 호출
if(result > 0) return "거절 및 문자 전송 성공";
else return "실패";
}
}
[service]
package edu.kh.plklj.message.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Service;
import edu.kh.plklj.main.dto.Member;
import edu.kh.plklj.sms.mapper.SmsMapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import javax.annotation.PostConstruct;
import net.nurigo.sdk.NurigoApp;
import net.nurigo.sdk.message.model.Message;
import net.nurigo.sdk.message.request.SingleMessageSendingRequest;
import net.nurigo.sdk.message.response.SingleMessageSentResponse;
import net.nurigo.sdk.message.service.DefaultMessageService;
@Slf4j
@Service
@PropertySource("classpath:/config.properties")
public class MessageServiceImpl implements MessageService {
@Autowired
private SmsMapper mapper;
@Value("${coolsms.apikey}")
private String apiKey;
@Value("${coolsms.apisecret}")
private String apiSecret;
@Value("${coolsms.fromnumber}")
private String fromNumber;
@Override
public int sendSMS(int memberNo) {
DefaultMessageService messageService = NurigoApp.INSTANCE.initialize(apiKey, apiSecret, "https://api.coolsms.co.kr");
Member member = mapper.getSmsMember(memberNo);
Message message = new Message();
// 발신번호 및 수신번호는 반드시 01012345678 형태로 입력되어야 합니다.
message.setFrom(fromNumber); // 발신 번호
message.setTo(member.getMemberPhone()); // 수신 번호
message.setText(member.getMemberName()+"님의 작가 신청이 승인되지 않아 안내드립니다."); // 메시지 내용
try {
// 메시지 전송
messageService.send(message);
} catch (Exception e) {
e.printStackTrace();
log.info("Failed to send message. Error: " + e.getMessage());
return 0;
}
return 1;
}
}
#결과
