ktp
ktp12mo ago

키인 결제 문의

안녕하세요 키인 결제 API로 결제 연동하려고 하고 있습니다. 여기서 문의 드리는 부분은 해당 결제 API를 사용하려면 무조건 결제 위젯을 통해서 결제정보를 입력하는 절차가 필요한지 궁금합니다. 토스페이먼츠 홈페이지에서는 다음처럼 플로우차트가 그려져 있는데, 결제 정보 자체를 저희측에서 보관하고 키인 결제 API만을 호출해서 결제 요청할 수 있는지 궁금합니다.
No description
29 Replies
토스페이먼츠 BOT
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) : - 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요. * 주말/공휴일에는 답변이 늦을 수 있어요.
Kimoon Lee
Kimoon Lee12mo ago
키인 결제 API 를 이용해서 사용하실수 있습니다만 별개로 계약시에 심사를 통과 하셔야 합니다. 그런데 결제정보(카드정보)를 가맹점이 보관하시는건 불법이어서 그렇게 하시면 안될것 같아요. 고객이 입력하도록 하시고 가맹점은 저장하시면 안됩니다.
ktp
ktpOP12mo ago
아.. 알겠습니다. 확인 감사합니다!
토스페이먼츠 BOT
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.
ktp
ktpOP12mo ago
일단 키인 결제 API가 동작하는 걸 확인하고자 해당 API만 호출했는데, 필수 파라미터가 누락되었다고 응답이 옵니다. Authorization: Bearer base64(시크릿키 + ":" ) Body 에는 키인 결제에 필요한 필수 값을 Urlencoded 하여 보냈습니다. { "amount": 0, "orderId": "f87d4670514c", "cardNumber": "4330123412341234", "cardExpirationYear": "32", "cardExpirationMonth": "12", "orderName": "테스트물품", "customerIdentityNumber": "901222", "customerName": "김티피", "cardPassword": "12" } 해당 부분에 추가적으로 필요한 데이터 있을까요? URL 인코딩은 UTF-8로 했습니다!
이실장
이실장12mo ago
amount를 100이상으로해주세요
ktp
ktpOP12mo ago
amount 10000으로 다시 요청했었는데도 동일한 현상 발생합니다!
이실장
이실장12mo ago
실제 요청한 주문번호 남겨주세요
ktp
ktpOP12mo ago
위 데이터 처럼 f87d4670514c 로 전달했습니다. 요청 url은 https://api.tosspayments.com/v1/payments/key-in 이고 시크릿 키는 테스트 시크릿키 이용했습니다.
Ayaan이안
Ayaan이안12mo ago
주문번호 다르게 한번 요청해보시겠어요?
ktp
ktpOP12mo ago
f87d1234로도 요청했습니다!
유부장
유부장12mo ago
Authorization: Bearer base64(시크릿키 + ":" ) Basic 이 아니라 Bearer 로 하셨나요?
유부장
유부장12mo ago
인증 및 기타 헤더 설정 | 토스페이먼츠 개발자센터
토스페이먼츠 API를 사용하기 위해 필요한 인증과 헤더 설정 방법입니다.
이실장
이실장12mo ago
첫째줄에 범인이 있었군요..
ktp
ktpOP12mo ago
제가 위에 쓴 Bearer가 오타고.. Basic으로 요청했습니다 ㅠㅠ 혼란드려 죄송합니다.
이실장
이실장12mo ago
Basic으로 했는데 에러났다는 말씀이신가요
ktp
ktpOP12mo ago
항상 Bearer로 하다보니 습관적으로 Bearer로 쓴것 같은데, 실제 요청에서는 Basic 으로 요청했습니다
이실장
이실장12mo ago
그렇다면 f87d1234 요청한게 언제인가요
ktp
ktpOP12mo ago
14시 47분 33초 입니다!
이실장
이실장12mo ago
d요청 들어온 내역이 없습니다. 지금 서버에서 curl로 테스트 중인가요?
ktp
ktpOP12mo ago
아뇨 자바 서버에서 Webclient 통해서 직접 요청하고 있습니다.
이실장
이실장12mo ago
ㅌㅔ스트키로 확인중이시죠?
ktp
ktpOP12mo ago
네 맞습니다. 테스트 시크릿 키 입니다
Kimoon Lee
Kimoon Lee12mo ago
body 전체를 urlencode 해서 보내고 계신가요? 그렇게 보내시면 안되고 그냥 string 형태로 보내주세요.
이실장
이실장12mo ago
curl --location 'https://api.tosspayments.com/v1/payments/key-in' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic dGVz==' \
--data '{
"amount": 15000,
"orderId": "tosspayments_121231231931802938190238",
"cardNumber": "4119040011112222",
"cardExpirationYear": "27",
"cardExpirationMonth":"05",
"orderName": "Toss T shirt",
"customerIdentityNumber": "880101"
}
'
curl --location 'https://api.tosspayments.com/v1/payments/key-in' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic dGVz==' \
--data '{
"amount": 15000,
"orderId": "tosspayments_121231231931802938190238",
"cardNumber": "4119040011112222",
"cardExpirationYear": "27",
"cardExpirationMonth":"05",
"orderName": "Toss T shirt",
"customerIdentityNumber": "880101"
}
'
ktp
ktpOP12mo ago
https://docs.tosspayments.com/reference/using-api/req-res#요청응답-본문 아.. 위 내용에서 요청 본문 인코딩하라고 되어있어서 그렇게 진행했었는데, 인코딩 없이 진행하니 전달됩니다! 혹시 위 문서에서 인코딩하라고 하는 것은 어떤걸 말하는 건가요? API 요청을 할 때 데이터 전송의 정확성과 안전성을 보장하려면 URL 인코딩을 하세요 이렇게 언급되어있어서 질문드립니다!
요청·응답 본문 | 토스페이먼츠 개발자센터
토스페이먼츠 API 요청과 응답 본문을 알아봅니다.
Kimoon Lee
Kimoon Lee12mo ago
이건 예를 들어 orderName 등에 특수 문자가 들어가는 경우 orderName 의 값을 인코딩 해서 보내달라는 말씀입니다 그리고 특히 Get 방식으로 요청할때를 말씀드리는거에요.
Ayaan이안
Ayaan이안12mo ago
각 필드별로 인코딩을 의미하는거고, 위에 말씀주신것 처럼 get에서 query param으로 넘겨주실때에요. 전체 바디를 인코딩하면 파싱되지 않습니다.
ktp
ktpOP12mo ago
답변 감사합니다. 해당 사항 확인하여 개발에 참고하겠습니다!

Did you find this page helpful?