각진 세상에 둥근 춤을 추자
[API] JAVA 단일 문자 전송 API(SMS API) 본문
NAVER SMS API 사용이 개인 회원은 불가능하다고 해 타 사이트 API를 사용하기로 했다.
회원 가입 후 본인인증을 하면 환경설정 > 발신번호 관리에 나의 번호가 등록된다.
개발/연동 > API Key 관리에서 새로운 API KEY를 생성한다.
build.gradle에 CoolSMS API의 의존성을 추가한다.
implementation 'net.nurigo:sdk:4.3.0'
단일 문자 전송 구현 예제는 깃허브에서 볼 수 있다.
java
package kr.co.test.controller;
import lombok.extern.slf4j.Slf4j;
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;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
@Slf4j
@Controller
public class testController {
private static final int SALT_LENGTH = 32;
private static SecureRandom secureRandom;
static {
try {
secureRandom = SecureRandom.getInstanceStrong();
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("SecureRandom Instance not created...", e);
}
}
final DefaultMessageService messageService;
public testController() {
// 반드시 계정 내 등록된 유효한 API 키, API Secret Key를 입력
this.messageService = NurigoApp.INSTANCE.initialize("INSERT_API_KEY", "INSERT_API_SECRET_KEY", "https://api.coolsms.co.kr");
}
// 인증번호로 보낼 번호 (난수 생성)
public String createNumberKey() {
log.warn("createNumberKey...");
secureRandom = new SecureRandom();
int randomNumber = 100000 + secureRandom.nextInt(900000);
log.warn("randomNumber : " + randomNumber);
return String.valueOf(randomNumber);
}
// 단일 메시지 발송
public SingleMessageSentResponse sendOne(){
String numberKey = createNumberKey();
Message message = new Message();
message.setFrom("01012345678"); // 발신번호 입력
message.setTo("01012345678"); // 수신번호 입력
message.setText("[SMS] 인증번호: " + numberKey + "를 입력하세요.");
log.warn("Sending message: " + message.getText());
SingleMessageSentResponse response = this.messageService.sendOne(new SingleMessageSendingRequest(message));
log.warn("response: " + response);
return response;
}
}
문자 전송 한 건당 20P씩 차감인데, 처음에는 무료 포인트 300이 지급된다.
'프로젝트 > API' 카테고리의 다른 글
[API] 3. 기상청 단기예보 조회 서비스 - 공공데이터포털 API (0) | 2024.01.17 |
---|---|
[API] 2. 기상청 단기예보 조회 서비스 - KakaoMap API (0) | 2024.01.17 |
[API] 1. 기상청 단기예보 조회 서비스 - 화면 구현 (0) | 2024.01.16 |