Spring boot kim's cafe/예약시스템

Springboot 결제 시스템 만들기! (1) 토큰 발급받기 with 아임포트, HttpHeaders ,RestTemplate,Response

디비드킴 2021. 7. 7. 21:03

진짜 죽는 줄 알았다
결제만 몇 번 한 건지 모르겠다
오후 2시 부터 했는데
현재 8시이다

일단 결제 시스템을 만든 이유는
사실 예약 변경/수정/삭제는
이제 db에서 delete/update/insert 하는 일만 남았었다 또 똑같이 만들기엔 좀 발전이 없는거 같아서
결제 시스템을 적용 하려고 한다!

처음 결제를 하는건 어렵지 않다
그냥 프론트에서 해주면 되는데
문제는 서버였다
검증을 해주려면 일단 토큰부터 발급받아야 하는데
진짜 겁나 힘들었다

내가 찾은 해답은 이것이다

js

알아서 제공해주는 기능이고
rsp가 오면 성공적이라면 rsp id를 서버로 준다

restcontroller

restcontroller.java

일단 서비스고 뭐고 빠른 테스트를 위해
컨트롤러에서 테스트 중이었다
진짜 죽는 줄 알았다
진짜 서버로 통신 어떻게 해야 하는 건데 하고
이전에 카카오 오스 로그인을 되짚어 가면서 만들었는데 그때처럼 되지 않았다
https://docs.iamport.kr/tech/access-token

 

[가이드] 액세스 토큰

REST API 액세스 토큰(access token) 아임포트 REST API서비스는 여러분의 가맹점의 결제 상세정보를 조회하거나 환불 요청 또는 에스크로 결제를 처리할 수 있는 기능을 제공합니다. 하지만 이는 가맹

docs.iamport.kr

가이드를 보면
post/json통신이다
그래서 일단 헤더를 만들어줬다
HttpHeaders headers=new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
원래는 headers.add(---) 사용중이였는데
진짜 미친 듯이 뒤지다가
스택오버플로우에서
https://stackoverflow.com/questions/29417455/setting-request-header-content-type-to-json-in-spring-framework-resttemplate

 

Setting request header content-type to json in Spring Framework resttemplate

I'm learning Spring Framework to create a client of a REST web service that uses basic authentication and exchanges JSON. After much searching on the web, I wrote some code that worked (below), bu...

stackoverflow.com

다른 방법으로 하는 걸 찾아 저렇게 고쳐놓았다

JSONObject body=new JSONObject();
body.put("imp_key", imp_key);
body.put("imp_secret", imp_secret);
얘가 진짜 하이라이트였다 원래는
MultiValueMap을 사용했다 근데 도무지 가질 않았다 그래서 그냥 json으로 줘야 하나? 하고
또 찾아다녔다
https://www.python2.net/questions-300263.htm

 

java - Spring Boot에서 RestTemplate을 통한 POST JSON 객체

아래 형식의 데이터를 허용하는 API 엔드 포인트에 JSON 객체를 POST하려고합니다 { "names": [ "name1", "name2", "name3" ] } 내 게시 방법은 다음과 같습니다 public String post(List names) { HttpHeaders headers = new HttpH

www.python2.net

HttpEntity<JSONObject> entity = new HttpEntity<>(jsonObject , headers);
를 발견하고 원래 MultiValueMap로 주던 형식을
JSONObject body=new JSONObject();
body.put("imp_key", imp_key);
body.put("imp_secret", imp_secret);
바꿨다!

그리고 진짜 제발 돼라 하고 해 봤다

결과


망할 badrequest가 사라지고 토큰을 받아온다 ㅠㅠ
아흑 진짜 고생했다...
그래도 하나씩 얻고 있다
이미 했던 방식보다는 새로운 기능을 추가해서
이제 결제까지 도입된 예약 시스템 크으...
꼭 구현하자!
이제 문제는... 검증이고.. 틀렸을 때 취소시키는
로직을 아임 포트 api로 구현해야 하는데.....
진짜 토큰 받는 게 이 정도였는데 얼마나 힘들지..
걱정이다..

일단 쉬었다 하자!
또 포기하고 싶은 순간을 넘었다