단건결제 ready api dev 테스트 중 400 Bad Request 에러

//body
LinkedMultiValueMap<String,String> map=new LinkedMultiValueMap<>();

map.add("cid","TC0ONETIME");
map.add("partner_order_id",orderId);
map.add("partner_user_id",memberId);

map.add("item_name","born-shape toy");
map.add("quantity","1");
map.add("total_amount","15000");
map.add("tax_free_amount", "0");

map.add("approval_url", "http://localhost:8080/success"); 
map.add("cancel_url", "http://localhost:8080/cancel");
map.add("fail_url", "http://localhost:8080/fail");


//header
HttpHeaders headers=new HttpHeaders();

String auth = "SECRET_KEY " + secret_dev;
headers.set("Content-type","application/json");
headers.set("Authorization",auth);


//request
HttpEntity<MultiValueMap<String, String>> urlRequest = new HttpEntity<>(map, headers);

RestTemplate rt = new RestTemplate();
PayReadyResDto payReadyResDto = rt.postForObject("https://open-api.kakaopay.com/online/v1/payment/ready", urlRequest, PayReadyResDto.class);

spring boot test에서 위와 같이 코드 작성하고 실행했더니
400 Bad Request: “{“extras”:null,“error_message”:“invalid param(cid has invalid value)”,“error_code”:-400}”
이런 에러가 반환 되는데 이유가 뭘까요?

똑같은 body, header, host로 postman으로 request 보냈을 땐 정상적으로 반환이 되는데 저건 안되네요

안녕하세요. 카카오페이 입니다.
ready api 호출시에 오류가 발생한것으로 예상이 되는데요.
카카오페이로 넘어온 정보를 확인하기위해 partner_order_id 를 유니크하게 알려주시면 내부 유입로그 확인 후 안내드릴 수 있도록 하겠습니다.
감사합니다.

axaxdev1 입니다

안녕하세요. 카카오페이입니다.
말씀해주신 주문번호 확인해보니 카카오페이로 유입시에 아래와 같이 유입이 되는것을 확인하였습니다.

정상케이스
“body”:"{\n\t"cid": “TC0ONETIME”,\n\t"partner_order_id": “partner_order_id”,\n\t"partner_user_id": “partner_user_id”,\n\t"item_name": “초코파이”,\n\t"quantity": “1”,\n\t"total_amount": “2200”,\n\t"vat_amount": “200”,\n\t"tax_free_amount": “0”,\n\t"approval_url": “https://developers.kakao.com/success",\n\t"fail_url”: “https://developers.kakao.com/fail",\n\t"cancel_url”: “https://developers.kakao.com/cancel”\n}

현재 오류 발생케이스
“body”:"{“cid”:[“TC0ONETIME”],“partner_order_id”:[“axaxdev1”],“partner_user_id”:[“memberA”],“item_name”:[“born shape toy”],“quantity”:[“1”],“total_amount”:[“15000”],“tax_free_amount”:[“0”],“approval_url”:[“http://localhost:8080/success"],“cancel_url”:[“http://localhost:8080/cancel”],“fail_url”:["http://localhost:8080/fail”]}

정상케이스와 비정상케이스를 비교해보면 필드값 앞뒤로 []가 있어서 값 인식을 못하는것으로 확인됩니다.

가맹점코드를 직접적으로 안내드리긴 어려운점 양해부탁드리며 위 내용 참고해주시기 바랍니다.

감사합니다.

1개의 좋아요