package kr.or.ddit.pay.service;
import java.net.URI;
import java.net.URISyntaxException;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate;
import kr.or.ddit.vo.GradeVO;
import kr.or.ddit.vo.KaKaoPayApprovalVO;
import kr.or.ddit.vo.KakaoPayReadyVO;
import kr.or.ddit.vo.PaymentVO;
import lombok.extern.java.Log;
@Service
@Log
public class KakaoPay {
private static final String HOST = “https://kapi.kakao.com”;
private KakaoPayReadyVO kakaoPayReadyVO;
private KaKaoPayApprovalVO kakaoPayApprovalVO;
public String kakaoPayReady(GradeVO grade) {
RestTemplate restTemplate = new RestTemplate();
// 서버로 요청할 Header
HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "KakaoAK " + "18a9b30eecfcbcb7a327ec00ed905c07");
// headers.add(“Accept”, MediaType.APPLICATION_JSON_UTF8_VALUE); --> 이게 안되네요ㅠ
headers.add(“Accept”, MediaType.APPLICATION_JSON_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", grade.getGrade_no());
params.add("partner_user_id", "쁘띠광");
params.add("item_name", grade.getGrade_name() );
params.add("quantity", "1");
params.add("total_amount", grade.getGrade_price());
params.add("tax_free_amount", "100");
params.add("approval_url", "http://localhost/pay/kakaoPaySuccess?grade_no="+grade.getGrade_no());
params.add("cancel_url", "http://localhost/pay/kakaoPayCancel");
params.add("fail_url", "http://localhost/pay/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);
log.info("" + kakaoPayReadyVO); <--log 부분 오류 납니다 ㅠ
return kakaoPayReadyVO.getNext_redirect_pc_url();
} catch (RestClientException e) {
e.printStackTrace();
} catch (URISyntaxException e) {
e.printStackTrace();
}
return "/pay";
}
log 부분이 안되고, headers.add(“Accept”, MediaType.APPLICATION_JSON_UTF8_VALUE); --> 이게 안되네요ㅠ
이부분 도 UTF8 때문에 오류가 납니다ㅠ 제발 도와주세요.