400 Bad Request: INVALID_REQUEST, 필수 파라미터 누락
https://docs.tosspayments.com/reference/test/v1/payments/confirm/POST
위 API를 Spring Boot에서 사용하려 합니다. 요청을 하면
400 Bad Request: "{"code":"INVALID_REQUEST","message":"필수 파라미터가 누락되었습니다."}"
라는 에러가 나옵니다. 필수 파라미터를 모두 보낸 것 같은데 왜 저 에러가 나오는지 궁금합니다.
아래는 Spring Boot 코드와 요청을 보낼때의 JSON 데이터입니다.
<{"amount":3243,"orderId":"qec1d544-2a34-4f44-ada0-c5213d8fd8da","paymentKey":"e75jWNka9lpP2YxJ4K879ml2Knk5ovVRGZwXLObgyB0vMDm1"},[Authorization:"Basic dGVzdF9za19CYTVQelIwQXJubjlkN3dHRDZ2eHJ2bVluTmVEOg==", Content-Type:"application/json", Accept:"application/json"]>
23 Replies
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.
전송 url 세팅이 이상합니다.
여기에서 PAYMENT_URL + paymentKey, 를 확인해보세요
직접 프로그램을 사용하시니까 아래 가이드로 확인하시면 더 쉬우실거에요
https://docs.tosspayments.com/reference#%EA%B2%B0%EC%A0%9C-%EC%8A%B9%EC%9D%B8
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.
url 세팅이 어떻게 이상한지 이해되지 않습니다. 보내주신 사이트와 토스페이먼츠 깃허브의 코드를 참고하였습니다.
깃허브 주소 : https://github.com/tosspayments/payment-samples/blob/main/payment-window/springboot/src/main/java/com/tosspayments/demo/payment/PaymentController.java
코드를 조금 수정해서 다시 테스트 하였는데 동일한 에러가 발생합니다.
PAYMENT_URL= "https://api.tosspayments.com/v1/payments/"
입니다.
GitHub
payment-samples/payment-window/springboot/src/main/java/com/tosspay...
Contribute to tosspayments/payment-samples development by creating an account on GitHub.
paymentKey 를 json body 내로 전달 하고 있을때는
승인 API 가 삼부장님께서 전달하신 링크에 명시된 승인 API 를 쓰셔야 한다는 의미 입니다.
github 은 내부에서 확인하고 업데이트 할게요
docs 링크 보면 아시겠지만,
paymentKey 를 쿼리파람으로 받지 않습니다.
https://github.com/tosspayments/payment-widget-sample/blob/main/jsp/success.jsp
여기 확인 해보셔도 도움이 될듯 하네요
GitHub
payment-widget-sample/jsp/success.jsp at main · tosspayments/paymen...
토스페이먼츠 결제위젯 샘플 앱입니다. . Contribute to tosspayments/payment-widget-sample development by creating an account on GitHub.
url을 "https://api.tosspayments.com/v1/payments/confirm" 로 사용하고 amount도 String 타입으로 변경하였는데 계속 동일한 에러가나오네요.. 요청하는 방식 자체가 잘못된걸까요?
<{"amount":"3241","orderId":"cec1d544-2a34-4f44-ada0-c5213d8fd8da","paymentKey":"71DG90nOlP24xLea5zVAJdjL5mzaOlrQAMYNwW6BvjZdyEmJ"},[Authorization:"Basic dGVzdF9za19CYTVQelIwQXJubjlkN3dHRDZ2eHJ2bVluTmVEOg==", Content-Type:"application/json", Accept:"application/json"]>
헤더타입 바꾸는것 추가 작업이 있으셔야 할것 같은데요
시작이 반
[Spring] RestTemplate (Content-Type에러)
Spring 3.0부터 치원하는 http통신에서 유용하게 쓸 수 있는 템플릿이다. json, xml응답을 모두 받을 수 있다. Open API의 출력 형태가 Json이기 때문에 RestTemplate을 사용하였다. 처음으로 사용한 OpenAPI는 네이버 도서 검색 API였다. 하지만 이 API는 검색기능만 지원하였다. 책 분야별 전체 정보가 필요했다. 네이버 API사용 tmdrl5779.tistory.com/46 [Spring] 네이버 검색 API 사용 책 검색 API를 사용해볼것 RestTemplate를 스프링 빈으로 등록 package com.mkl.book.Configuration; import org.spr...
이 내용 한번 참조 하셔서 header 타입 설정하는 라인 추가해서 다시 요청 시도 부탁 드려요
그래도 같은 에러가 나옵니다
음..
그럼 설정한 값들을 하나씩 로그 남겨서 확인 해보면 좋을것 같은데
json object 로 설정한 param 에 put 으로 잘 들어갔는지, post 요청 전에 로그 한번 남겨 보시겠어요?
디버깅으로 봤을때는 json object에 값이 잘 들어가는것을 확인했습니다.
음......
그러면 header 쪽으로 전달하는 것도 봐주시겠어요?
headers 에 어떻게 설정되어 API 호출 되는지
application/json 이 아니라 test/css 등으로 설정 되어 있지 않은지 =
request body 가 이렇게 전달되었습니다.
{"empty":false,"mapType":"java.util.HashMap"}
코드를 다시 확인해 주시기 바랍니다.
일단 param과 header는 모두 잘 들어가는것을 확인했습니다


동일하게 이렇게 오고 있습니다.
{"empty":false,"mapType":"java.util.HashMap"}
rest.postForEntity(
"https://api.tosspayments.com/v1/payments/confirm",
new HttpEntity<>(param, headers),
TossPaymentSuccessDto.class
).getBody();
이방식으로 정상처리가 안되시는것으로 보입니다.
GitHub
payment-widget-sample/jsp/success.jsp at main · tosspayments/paymen...
토스페이먼츠 결제위젯 샘플 앱입니다. . Contribute to tosspayments/payment-widget-sample development by creating an account on GitHub.
이부분 참고해서 코드 수정해보세요.
이코드를 참고하셔도 될것 같습니다.

성공했습니다!! 도와주셔서 감사합니다!!
네 공유해주셔서 감사합니다.