Springboot/Api

Springboot 카카오페이 연동(2) 결제승인

디비드킴 2022. 3. 14. 15:55

이제 클라이언트가 결제를 하면

지정했던 url로 카카오 쪽에서 다시 보내준다

이전에 성공/실패/취소에따라 url를 보내줬는데 

그걸 보고 다시 보내주는 것이다

 

흐름

pg토큰을 받음->결제내역 요청-> 서버에서 검증-> db

 

이 화면을 받는 순간 우리 서버로도 

pg토큰이 날아온다

1. 세션에서 tid/partner_order_id값을 꺼내 준다

String[] orderIdAndTid=httpSession.getAttribute("orderIdAndTid").toString().split(",");

String mchtTrdNo=orderIdAndTid[0];

String tid= orderIdAndTid[1];

https://developers.kakao.com/docs/latest/ko/kakaopay/single-payment#approve

 

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

2. 필수 값을 전달한다

(2022/03/14 기준)

String pgToken=request.getParameter("pg_token").toString();
HttpHeaders httpHeaders=new HttpHeaders();
httpHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
httpHeaders.add("Authorization", "KakaoAK "+kakaoAdminKey);
MultiValueMap<String,Object> multiValueBody=new LinkedMultiValueMap<>();
multiValueBody.add("cid", cid);
multiValueBody.add("partner_order_id", mchtTrdNo);
multiValueBody.add("partner_user_id", utillService.getLoginId());
multiValueBody.add("tid", tid);
multiValueBody.add("pg_token", pgToken);
JSONObject respon=requestTo.requestPost(multiValueBody, "https://kapi.kakao.com/v1/payment/approve ", httpHeaders);

정상적으로 오지 않거나/검증에 실패한다면 

환불을 해주면 된다 

 

requestTo.requestPost(multiValueBody, "https://kapi.kakao.com/v1/payment/approve ", httpHeaders);