INVALID_REQUEST, 필수 파라미터 누락 (400)
https://docs.tosspayments.com/reference/test/v1/payments/confirm/POST
에서 결제 승인을 하는건 잘 되는데
Spring Boot로 백엔드에서 값을 넘길 경우 승인이 되지를 않습니다.
아래는 요청 백엔드 코드입니다
"결제 승인" 테스트 | 토스페이먼츠 개발자센터
코드 구현이나 환경 설정 없이도 원하는 API를 실행해보세요.
25 Replies
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.
여기의 코드를 참고하시길 바랍니다
그럼 Spring Boot에서 지원하는 RestTemplate를 사용할때도 JSONObject로 묶어줘야 하나요?
링크를 잘못드렸네요, 여기입니다.
https://github.com/tosspayments/payment-samples
GitHub
GitHub - tosspayments/payment-samples
Contribute to tosspayments/payment-samples development by creating an account on GitHub.
JSON 데이터처리는 정해져있는지는 않고 취향에 맞는걸 선택하셔서 만들어 주시면 됩니다.
안되신다는 부분이... 여러가지 케이스일 수 있는데요
1. 승인요청이 안되었는지,
2. 승인요청은 되었으나 데이터가 잘못들어갔는지,
3. 승인요청이 되었고 데이터도 잘 들어갔으나 응답수신이 안되신건지..
등을 확인하셔야해요
3.은 확인이 어려우실테니 보내셨던 주문번호를 알려주시면 저희쪽 로그를 보고 알려드릴게요
order_1688000902609
입니다
승인요청은 들어갔는데
만료가 되었다고 결제상태가 표시되어있습니다
음...그건 인증 후 10분이 지난후에 승인요청을 하셔서 그렇습니다
인증은 언제 하신 결제데이터일까요?
그 전에 승인요청을 보내도 같습니다
지금 다시 승인요청 보내고 주문번호 보내보겠씁니다
넵
잠시만요~~
order_1688002864971 입니다
이렇게 보내주고계신데요 JSON 데이터가 이상해요
{"paymentKey":["GvaE2lKMZ7DLJOpm5QrlB7050Q5DWd3PNdxbWnYzqR4gA6Xy"],"amount":["2000"],"orderId":["order_1688000902609"]}
어떻게 보내야 하나요?
정상적인 양식을 주실 수 있을까요?
{
"paymentKey": "GvaE2lKMZ7DLJOpm5QrlB7050Q5DWd3PNdxbWnYzqR4gA6Xy",
"amount": 2000,
"orderId": "order_1688000902609"
}
이렇게 보내주셔야 맞습니다.
제가 말씀드린 1,2,3 중에는 2에 해당되는 내용이긴한데 이후에 다른 에러가 중첩되어있는 상태일 수도 있어요RestTemplate로 api 요청을 전송할때
MultiValueMap<String, JSONObject> params = new LinkedMultiValueMap<>();
에다가 파라미터 값을 넣는데
그래서 자동으로 []가 붙는 것 같아요최종 통신하시기 전에 데이터를 .toString() 으로 찍어보시면 좋을거같아요
저도 이렇게 표시 됩니다.
아래의 경우
이렇게 소스를 사용중인데 어떻게 추가를 해야 하나요?
JSON 데이터 생성은 취향대로 하시면 되는부분이라..
어떤 특정 메소드를 권장드리긴 어렵구요, 샘플코드를 참고하셔서 생성하시면 될거같아요
개인적으로는 이렇게 쓰고 있어요
JSONObject obj = new JSONObject();
obj.put("name1", value1);
obj.put("name2", value2);
obj.put("name3", value3);
그럼 그 데이터를 바디에 담아야 하는데
body 파라미터에 담을때는 어떤 key로 담아야 하나요
JSONObject 에서 객체를 생성하고 담겨있는 상태라서 쏘시기만 하면됩니다.
OutputStream outputStream = connection.getOutputStream();
outputStream.write(obj.toString().getBytes("UTF-8"));
일단 다시 요청하고 orderId 다시 보내보겠습니다
order_test3223_1688004029901 입니다
시크릿 키 연동정보가 잘못됐다고..
위의 request는 우선 해결된거 같아요!
오우...메시지가 달라졌네요
{"code":"INVALID_API_KEY","message":"잘못된 시크릿키 연동 정보 입니다."}
넵 이건...
승인요청된 키가 안맞을때 보이는 에러에요
API_KEY 다시 수정하니까 해결 됐습니다
감사합니다!
넵 좋은 서비스 만드시길 바랍니다!
빠른 답변 감사합니다
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.