Spring 으로 로컬에서 테스트 중인데요…
헤더에 Admin 키와 FORM_URLENCODED 넣고 요청하는데
뭐가 잘못된걸 까요 ㅜㅜ
------------- 디버그 ----------
DEBUG: org.springframework.web.client.RestTemplate - Created POST request for "https://kapi.kakao.com/v1/payment/ready"
DEBUG: org.springframework.web.client.RestTemplate - Setting request Accept header to [application/json, application/*+json]
DEBUG: org.springframework.web.client.RestTemplate - Writing [{cid=[TC0ONETIME], partner_order_id=[1001], partner_user_id=[gorany], item_name=[갤럭시S9], quantity=[1], total_amount=[2100], tax_free_amount=[100], approval_url=[http://localhost:8080/kakaoPaySuccess], cancel_url=[http://localhost:8080/kakaoPayCancel], fail_url=[http://localhost:8080/kakaoPaySuccessFail]}] as “application/x-www-form-urlencoded;charset=UTF-8” using [org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter@4e9d5954]
DEBUG: org.springframework.web.client.RestTemplate - POST request for “https://kapi.kakao.com/v1/payment/ready” resulted in 401 (Unauthorized); invoking error handler
org.springframework.web.client.HttpClientErrorException: 401 Unauthorized
DEBUG: org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver - Resolving exception from handler [public java.lang.String com.bitcamp.kym.booking.kakaopay.KakaopayController.kakaoPay()]: java.lang.NullPointerException
------------- 소스 --------------
public class KakaoPay {
private static final String HOST = "https://kapi.kakao.com";
private KakaoPayReadyVO kakaoPayReadyVO;
private KakaoPayApprovalVO kakaoPayApprovalVO;
public String kakaoPayReady() {
RestTemplate restTemplate = new RestTemplate();
String test = "";
// 서버로 요청할 Header
HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "KakaoAK" + "{admin key}");
headers.add("Accept", MediaType.APPLICATION_JSON_UTF8_VALUE);
headers.add("Content-Type", MediaType.APPLICATION_FORM_URLENCODED_VALUE+";charset=UTF-8");
// 서버로 요청할 Body
MultiValueMap<String, String> params = new LinkedMultiValueMap<String, String>();
params.add("cid", "TC0ONETIME");
params.add("partner_order_id", "1001");
params.add("partner_user_id", "zxcsf");
params.add("item_name", "hihi");
params.add("quantity", "1");
params.add("total_amount", "2100");
params.add("tax_free_amount", "100");
params.add("approval_url", "http://localhost:8080/booking/kakaoPaySuccess");
params.add("cancel_url", "http://localhost:8080/booking/kakaoPayCancel");
params.add("fail_url", "http://localhost:8080/booking/kakaoPaySuccessFail");
HttpEntity<MultiValueMap<String, String>> body = new HttpEntity<MultiValueMap<String, String>>(params, headers);
try {
kakaoPayReadyVO = restTemplate.postForObject(new URI(HOST + "/v1/payment/ready"), body, KakaoPayReadyVO.class);
return kakaoPayReadyVO.getNext_redirect_pc_url();
} catch (RestClientException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return kakaoPayReadyVO.getNext_redirect_pc_url();
}