결제하기 버튼을 클릭하면
가맹점 식별코드를 사용해서 IMP 변수를 초기화하고
(IMP는 포트원과 상호작용할 수 있는 변수 입니다.)
결제 정보를 불러옵니다
결제 번호를 생성 후
금액과 함께 비동기로 포트원에 사전 등록을 요청합니다.
api 요청을 httpbuilder를 이용해 요청을 하고
응답을 받습니다
HttpBuilder는 HTTP 요청을 손쉽게 구성하고 전송하기 위해 사용하는
빌더 패턴을 기반으로 한 클래스입니다.
요청 uri를 작성하고
header에 요청 본문이 json임을 명시 합니다
method는 포트원에서 요구하는 방식으로 설정 후
http요청을 생성하고
클라이언트메서드를 이용해 요청 후 응답을 받습니다.
(Authorization은 인증 요청임을 뜻하고
Bearer는 토큰을 이용한 인증임을 뜻합니다.)
빌더 패턴은 객체를 단계별로 구성하여 복잡한 객체를 생성할 때 사용되는 디자인 패턴입니다
// 토큰 발급 요청
public static PaymentInfo portOne_code() {
PaymentInfo paymentInfo = new PaymentInfo();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.iamport.kr/users/getToken"))
.header("Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString("{\"imp_key\":\"" + IMP_KEY + "\",\"imp_secret\":\"" + IMP_SECRET + "\"}"))
.build();
HttpResponse<String> response = null;
try {
response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
} catch (IOException | InterruptedException e) {
System.out.println("토큰 요청 실패");
e.printStackTrace();
}
System.out.println(response.body());
JSONParser parser = new JSONParser();
JSONObject jsonObject = null;
try {
jsonObject = (JSONObject) parser.parse(response.body());
} catch (ParseException e) {
System.out.println("json 변환 실패");
e.printStackTrace();
}
JSONObject responseObject = (JSONObject) jsonObject.get("response");
String token = (String)responseObject.get("access_token");
paymentInfo.setToken(token);
return paymentInfo;
}
- portOne_code 메서드 설명
- PaymentInfo 객체 생성: 발급받은 토큰을 저장 객체임
- HTTP 요청 생성: HttpRequest 빌더를 사용하여 요청 설정
- URI: 토큰 발급 API의 URL 설정
- 헤더: Content-Type을 application/json으로 설정
- 본체: POST 메서드와 함께 발급 요청에 필요한 JSON 데이터
- 요청 전송: HttpClient를 사용하여 요청을 보내고 응답을 받음
- 예외 처리: 요청 중 오류가 발생하면 메시지 출력
- 응답 처리: 응답 본문을 JSON으로 파싱하여 "access_token"을 추출
- 토큰 저장: PaymentInfo 객체에 토큰을 설정하고 반환
'프로젝트_리뷰' 카테고리의 다른 글
프로젝트 - 비동기처리와 멀티스레드(OpenAI Assistant API) (0) | 2024.11.11 |
---|---|
프로젝트 - 바인딩 왜 안됨 ? (커맨드 객체) (0) | 2024.11.09 |
WEB - 중간 프로젝트 발표 팀 피드백 (1) | 2024.09.30 |
Web - 웹 프로젝트 1차 피드백 (1) | 2024.09.01 |
JAVA -쇼핑몰 프로그램 (15) | 2024.07.24 |