10 Replies
어떤 API 호출하셨는지, 그리고 호출할때 사용하신 JSON body 공유해주세요.
API 호출 세부 사항:
API 엔드포인트: https://api.tosspayments.com/v1/payments/confirm
HTTP 메소드: POST
헤더:
Content-Type: application/json
Authorization: Basic [Base64 인코딩된 clientKey:secretKey]
예: Basic dGVzdF9nY2tfeVosbWtrZVBIZzlCOmRlc3RfZ3NrX2tZRzU3RWJhM0di... (실제 값은 환경 변수에서 가져옴)
JSON Body (요청 본문):
{
"paymentKey": "tgetk20251106101658P...",
"orderId": "ORD-1762145855893-WTEU3X66X",
"amount": 17615
}
paymentKey: 결제 키 (토스에서 생성된 고유 값, 로그에서 앞 20자만 표시됨).
orderId: 주문 ID (앱에서 생성).
amount: 결제 금액 (원 단위, 정수).
추가 설명:
이 호출은 결제 성공 후 확인을 위해 사용되며, 인증 실패(401 UNAUTHORIZED_KEY)로 인해 오류가 발생했습니다.
키는 .env.local의 TOSS_CLIENT_KEY와 TOSS_SECRET_KEY에서 가져오며, 테스트 키는 상점관리자의 api 결제위젯 키에서 가져왔습니다
=== Toss Payment Verification ===
Client Key exists: true
Secret Key exists: true
Client Key (first 20 chars): test_gck_yZqmkKeP8g9
Secret Key (first 20 chars): test_gsk_kYG57Eba3Gb
Request data: {
orderId: 'ORD-1762145855893-WTEU3X66X',
paymentKey: 'tgetk20251106101658P...',
amount: 17615
}
[auth][warn][debug-enabled] Read more: https://warnings.authjs.dev
Toss payment verification failed: {
status: 401,
error: {
code: 'UNAUTHORIZED_KEY',
message: '인증되지 않은 시크릿 키 혹은 클라이언트 키 입니다.'
},
clientKey: 'test_gck_yZqmkKeP8g9...',
secretKey: 'test_gsk_kYG57Eba3Gb...'
}
POST /api/orders/toss-confirm 400 in 627ms
Auth.js | Types
Authentication for the Web
내용확인 부탁드립니다
confirm 요청시
시크릿키를 : 콜론 포함하여 base64로 인코딩하여 전달해주셨는지 확인 바랍니다.
Basic dGVzdF9nY2tfeVosbWtrZVBIZzlCOmRlc3RfZ3NrX2tZRzU3RWJhM0di... (실제 값은 환경 변수에서 가져옴)
키에 ck 랑 sk 를 : 로 연결해서 보내신것 같은데요.
sk값이 : 만 붙여서 base64로 인코딩 하시면 됩니다.
확인 감사합니다~!
잘 처리되고 있습니다!
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.