항해 99 최종 프로젝트를 진행 중 Nice API와 같은 인증 서비스를 도입하고 싶었으나, 사업자 등록이 필요하다는 답변을 받고 차선책으로 이메일 찾기 기능의 인증 수단으로서 사용하였습니다.
Old-Version Java SDK 2.~ 의 레퍼런스는 많았지만
최신 버전인 4.3은 레퍼런스를 찾을 수 없어서 coolSMS에서 제공해준 예제 코드를 바탕으로 작성했습니다.
coolsms-java-examples
https://github.com/coolsms/coolsms-java-examples
이 글이 누군가에게 도움이 될 수 있길 바랍니다.
coolSMS는 한 건당 20P(충전 포인트), 첫 가입시 300P를 지급해준다.
implementation 'net.nurigo:sdk:4.3.0'
coolsms:
api:
key: "your API Key"
secret: "your API Secret"
coolsms.api.key="your API Key"
coolsms.api.secret="your API Secret"
@Component
public class SmsUtil {
@Value("${coolsms.api.key}")
private String apiKey;
@Value("${coolsms.api.secret}")
private String apiSecretKey;
private DefaultMessageService messageService;
@PostConstruct
private void init(){
this.messageService = NurigoApp.INSTANCE.initialize(apiKey, apiSecretKey, "https://api.coolsms.co.kr");
}
// 단일 메시지 발송 예제
public SingleMessageSentResponse sendOne(String to, String verificationCode) {
Message message = new Message();
// 발신번호 및 수신번호는 반드시 01012345678 형태로 입력되어야 합니다.
message.setFrom("발신번호 입력");
message.setTo(to);
message.setText("[Moyiza] 아래의 인증번호를 입력해주세요\n" + verificationCode);
SingleMessageSentResponse response = this.messageService.sendOne(new SingleMessageSendingRequest(message));
return response;
}
}
public ResponseEntity<?> sendSmsToFindEmail(FindEmailRequestDto requestDto) {
String name = requestDto.getName();
//수신번호 형태에 맞춰 "-"을 ""로 변환
String phoneNum = requestDto.getPhoneNum().replaceAll("-","");
User foundUser = userRepository.findByNameAndPhone(name, phoneNum).orElseThrow(()->
new NoSuchElementException("회원이 존재하지 않습니다."));
String receiverEmail = foundUser.getEmail();
String verificationCode = validationUtil.createCode();
smsUtil.sendOne(phoneNum, verificationCode);
//인증코드 유효기간 5분 설정
redisUtil.setDataExpire(verificationCode, receiverEmail, 60 * 5L);
return ResponseEntity.ok(new Message("SMS 전송 성공"));
}
정상적으로 문자가 전송되는걸 확인할 수 있습니다.
안녕하세요 혹시 구현하실때 발송번호는 어떻게 설정하셨나요?
개인 핸드폰 번호말고 다른 번호를 등록하고 싶은데 증명서를 요구하는것 같아서요