18 Replies
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.
응답이 깨져서 들어온 거래 주문번호 회신주시기 바랍니다. 비교를 위해 안깨지고 잘 들어왔던 주문건의 주문번호도 회신주시면 좋겠습니다
API 통신이면 UTF-8 으로 저희가 응답 드릴텐데 웹서버나 프로그램 내부에서 인코딩 처리되는지 확인부탁드립니다.
2025-03-20 11:24:18
요청
{
"body": "{"amount":1004.00,"orderId":"EJ202503201123497990001","paymentKey":""}",
"headers": {
"Content-Type": [
"application/json;charset=UTF-8"
],
"Authorization": [
""
]
}
}
응답
{
"mId": "",
"vat": 91,
"card": {
"amount": 1004,
"number": "37798803*374",
"cardType": "ì\u008b ì\u009a©",
"approveNo": "00000000",
"ownerType": "ê°\u009cì\u009d¸",
"issuerCode": "41",
"acquirerCode": "41",
"useCardPoint": false,
"acquireStatus": "READY",
"interestPayer": null,
"isInterestFree": false,
"installmentPlanMonths": 0
}
}
테스트 서버 입니다.
해결 했습니다.
-토스 응답
HTTP POST https://api.tosspayments.com/v1/payments/confirm
Accept=[text/plain, application/xml, text/xml, application/json, application/+xml, application/+json, /]
Writing [{"amount":1004.00,"orderId":"EJ202503201248376250001","paymentKey":"tze_n20250320124843nbKk6"}] as "application/json;charset=UTF-8"
Response 200 OK
Reading to [java.lang.String] as "text/plain"
-이유
기본 응답이 text/plain 라서 UTF-8처리 안됨
-처리방법(2가지 선택)
1.JAVA RestTemplate 사용시 응답이 String 경우 기본 컨버터 (ISO-8859-1) 사용됨
강제로 UTF-8 변경으로 처리
restTemplate.getMessageConverters().add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8));
2. 요청 헤더 Accept에 application/json 추가해서 처리
Accept에 해당 내용을 추가한다는게 가맹점에서 추가하는 부분인거죠?
제가알기로 Accept는 Request Header로 알아서요.
저희 응답은 application/json으로 나갈텐데요.
request 헤더에 Accept : application/json 추가해서 보내면 응답이 application/json 으로 나오고
Accept를 생략하고 ContentType 을 application/json 으로 해봤자 응답은 text/plain 으로 응답이 옵니다.
라이브환경에서 동일한지 확인 해주세요.
테스트환경은 별도 확인 하겠습니다.
라이브도 동일합니다.
라이브 결제 주문번호 좀요
라이브 결제 주문번호 전달해주세요
orderId":"EJ202503192004139610032"
어제거래인것 같은데,
오늘 거래 한번 진행 해주세요
오늘거래 찾았습니다 안내주셔도 됩니다
20250320135632106TO282918
오늘 거래는 문제 없는것 같은데
어제 거래는 왜 그랬는지 확인 해보겠습니다
아..지금 다른쪽에서 요청한것도 있습니다. 운영 사이트가 별도라서 신규 운영에서 나오는 오류입니다.
http 라이브러리에 따라서 자동으로 처리해주거나 기본 헤더 정보가 다르다보니 자세히 비교는 못하겠으나 일단 아까 요청 헤더에 따른 응답은 명확합니다.
지금 text/plain 으로 응답나가는거 하고 비교 해보니까
요청하실때 accept 이 두개가 다릅니다.
accept: text/plain, application/xml, text/xml, application/json, application/+xml, application/+json, /
accept: application/json, application/*+json
text/plain 으로 response 나가는 케이스의 서버에서도, 다른 케이스 처럼 accept 조정 가능하신지요.
기존 서비스는 일단 ..문제가 없긴해서 accept를 수정 안해도 될거 같긴해서요
지금 말씀하시는 기존 서비스 신규서비스 기준은 저희는 몰라서요.
제가 봤을때는 request header 에서 accept 에 명시된 최우선이 text/plain 이어서 그런것 같은데요.
지금은 강제 변경으로 처리를 하신거니, 저희가 추가로 확인 해드릴 내용이 없는것으로 이해하면 될까요?
궁금했던건 기본이 text/plain 으로 보내는게 의도된게 맞다면 해주실건 없습니다~^^
답변 감사합니다~!
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.