결제 테스트 오류 - 테스트 클라이언트
{"code":"UNAUTHORIZEDKEY","message":"인증되지 않은 시크릿 키 혹은 클라이언트 키 입니다."}
계속 쓰던 키로 요청했는데 갑자기 위와 같은 오류가 뜨면서 결제팝업이 안 뜹니다.
1. '개발 연동 테스트 상점'
2. 'API키 - 테스트 클라이언트 키 - API 키' 에서 복사해서 사용
테스트 클라이언트 키
test~
3. 웹 SDK로 호출
const tossPayments = TossPayments(tossClientKey);
tossPayments.requestPayment('카드', {
33 Replies
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.
해당오류 받은 주문번호 남겨주시겠어요?
orderId: "65a2e308-128d-4b97-bc56-195af07eda8f"
isLegacy: true
methodType: "CARD"
amount: 10000
나머지필드
customerName:
failUrl
successUrl
orderName
호출할 때 이 항목들 다 값 넣어서 보냈습니다
카드사 인증 성공 후 succesUrl로 이동하는데 successUrl에 승인 API를 호출하는 부분을 구현하셨을까요? 여기서 사용하는 secretKey는 결제창 호출시 사용한 clientKey와 pair가 되어야 합니다.
65a2e308-128d-4b97-bc56-195af07eda8f
이정보로 결제창 띄우실때 저 에러가 발생한건가요?
네 창이 안떠요
successurl 구현은 했는데 그 앞단계에서 창이 안떠요
다른 테스트키로 쓰면 창이 뜹니다
이 키도 며칠전에는 됐었어요
우선 키가 정상적으로 넘어 오지 않고 있습니다. 테스트키를 사용하신 거면 키를 알려주실수 있을까요?
테스트 클라이언트 키: test_ck_oeqRGgYO1r5qXlmbkl1rQnN2Eyaz
혹시 결제창을 어떻게 호출하시는 건가요?
웹 SDK 로 호출하신 건가요?
아니면 /v1/payments/sdk 이주소로 호출하신 건가요?
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>결제하기</title>
<script src="https://js.tosspayments.com/v1/payment"></script>
</head>
<body>
<button id="payButton" type="button">결제하기</button>
<p>클릭 후 결제를 해 주세요. 테스트시 자동 취소 됩니다.</p>
<script src="https://code.jquery.com/jquery-3.6.1.min.js"
integrity="sha256-o88AwQnZB+VDvE9tvIXrMQaPlFFSUTR+nldQm1LuPXQ=" crossorigin="anonymous"></script>
<script>
/<![CDATA[/
const tossClientKey = "test_ck_oeqRGgYO1r5qXlmbkl1rQnN2Eyaz";
const serverUrl = "https://server.com";
const amount = 10000.00;
const orderId = "65a2e308-128d-4b97-bc56-195af07eda8f";
const orderName = "\u0110\u01B0\u1EE3c r\u1ED3i \u0111i th\u00F4i";
const customerName = "family11 dogshit1";
// const isPaid = /null/ '';
/]]>/
</script>
<script>
const tossPayments = TossPayments(tossClientKey); // 클라이언트 키로 초기화하기
$("#payButton").click(function () {
tossPayments.requestPayment('카드', { // 결제 수단 파라미터
// 결제 정보 파라미터
amount: amount,
orderId: orderId,
orderName: orderName,
customerName: customerName,
successUrl: serverUrl + '/payment/toss/success',
failUrl: serverUrl + '/payment/toss/failure',
}).catch(function (error) {
if (error.code === 'USER_CANCEL') {
// 결제 고객이 결제창을 닫았을 때 에러 처리
alert("결제를 취소하셨습니다.");
} else if (error.code === 'INVALID_CARD_COMPANY') {
// 유효하지 않은 카드 코드에 대한 에러 처리
alert("유효하지 않은 카드 코드입니다.");
}
})
})
</script>
</body>
</html>
Request URL: https://api.tosspayments.com/v1/payments/sdk
<script src="https://js.tosspayments.com/v1/payment%22%3E</script>
--> <script src="https://js.tosspayments.com/v1/payment"></script>
그리고 /<![CDATA[/ 이부분은 붙여 넣기 할때 그냥 들어가신거죠?
지금 보내주신 코드로 제가 실행해 보면 잘 표시 됩니다.
붙여넣을 때 들어간 것 같아요
https://js.tosspayments.com/v1/payment
아 한가지 조언해 드리면 코드를 작성 하실 때는 ``` 사이에 감싸서 올려주세요
안그러면 스크립트 태그 같은게 보이는 것처럼 깨져서 나오게 되서 확인하기 약간 어려울때가 있어요
제가 로그를 확인해보면 지금 보내주신 코드로 실행하신게 아닌것 같아요..
이 코드로 보면 코드에 문제는 없어 보입니다
네 보내주신 코드로 실행해보면 잘뜹니다.
test코드도 그냥 돌아가나요?
네 잘돌아 가요.
토스측에서 테스트 할 수 있는 사이트가 있으면 좋겠습니다.
해당 코드로는 잘 돌아가고 있어서 확인이 필요한 상황이에요
아이피가 막히거나 할 수도 있나요?
그러면 아예 timeout 이 떠야 하는데, 지금 요청 온 로그를 보면 clientkey 쪽 정보가 이상하게 오고 있어요..
이 코드에서 clientkey도 그대로 사용하신건가요?
그냥 그대로 복붙했다고 보시면 됩니다
이사이트에서 보내시는게 맞나요?
로컬이랑 사이트에서랑 돌아가면서 보내보고 있어요.
네
혹시 해당 사이트에 header 를 변조하는 기능이 들어가 있는지 확인 부탁드립니다.
지금 요청이 bearer 로 암호화된 값을 보내고 계신것으로 확인됩니다.
아 헤더가 포함되서 가고 있었네요.
에러메시지에서 클라이언트키오류라고 떠서 그건줄알고 계속 봤네요..
다른 부라우저에서 할 때 잘 됐었나봐요.. 감사합니다.
저희 SDK 에서 헤더에 clientkey 값을 넣어서 보내는데, 이부분을 overwrite 하신것 같아요..
아.. 정상적으로 보내니까 authorization. basic으로 가네요.. 헤더 확장프로그램이 깔려 있어서 주의할께요
네 감사합니다.
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.