캐미
캐미2w ago

카드 - 비인증 결제 B타입 문의

안녕하세요. 비인증 결제 B타입(안심키인 결제창 With 법인인증)관련 문의드립니다. 금일 09시에 커머스 리뉴얼 사이트를 오픈하는데, 해당 고객사 AS-IS(ASP기반)사이트에서 전화결제 방식을 사용하고 있습니다. 리뉴얼 사이트는 JSP기반으로 변경하였으며 TO-BE 사이트에서도 전화결제가 가능하도록 해야하는 상황입니다. 프론트엔드 단에서 공인인증서만 등록하면 별도의 로직 작업 없이도 바로 연동이 되는지 아니면 별도로 백엔드에서 처리해주어야 하는 작업이 있는지 문의드리며, 작업이 존재하는 경우 케이스별로 가이드 주시면 그에 맞춰 작업 진행해보도록 하겠습니다. 현재는 관리자 페이지에서 법인용 인증서 로그인 화면까지는 띄워둔 상태입니다. 공인인증서 반출이 되지 않아서, 금일 09시에 현장에서 작업 예정입니다. 바쁘시겠지만 빠른 확인 부탁드리겠습니다. 감사합니다.
42 Replies
토스페이먼츠 BOT
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) : - 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요. * 주말/공휴일에는 답변이 늦을 수 있어요.
구나방
구나방2w ago
https://heliotrope-weight-9db.notion.site/Webhook-Non-ActiveX-17afedcbd66380639396ea7b0339b922?pvs=4 안녕하세요. 현재 작업된 자바 예시코드 첨부해드립니다.
나현 구의 Notion on Notion
전화카드 결제 Webhook (토스페이 Non-ActiveX 안심키인 결제) | Notion
/** * 전화카드 결제 Webhook (토스페이 Non-ActiveX 안심키인 결제) */ @Transactional public void handleAnsimKeyInWebhook(AnsimKeyInRequest req) { boolean isSuccess = req.getLGD_RESPCODE().equals(
최건우(버터)
추가로 필요하신 정보가 있으시면 말씀 부탁드립니다.(작성자)
이실장
이실장2w ago
asp서버를 내리고 jsp서버로 바꾸시는거 아닌가요? https://drive.google.com/file/d/13T6kQd_jUvZfeqmJuEuh3BsNSUB3m6SZ/view?usp=sharing
이실장
이실장2w ago
Google Docs
XPAY[PC]안심키인_v.1.0.4
Xpay-PC-안심키인 Protocol and Core Function Specification Version 1.0.3 2024.08 목차 XPay 연동 샘플 파일 구조 3 XPay 결제 서비스 파라미터 3 ▪ 안심키인 결제창 호출 요청 파라미터 3 ▪ 안심키인 결제창 승인 응답 파라미터 4 XPay 연동 샘플 파일 구조 TossPayments에서 제공되는 샘플파일은 XPay 결제 모듈 연동에 필요한 라이브러리(설치파일 포함) 및 설정파일과 실제 해당 서비스를 구현한 샘플페...
이실장
이실장2w ago
문서보시고 jsp용 모듈로 바꾸셔야해요
최건우(버터)
모듈로 교체해서 결제까지는 성공했습니다.(테스트 키) 저희가 서버에서 웹훅으로 받아오는 코드의 일부가 위에 올려드린 소스인데, 주문 수집자체가 안되어서 혹시 코드에 문제가 있는지 궁금합니다. 동일 결제건으로 다시 결제했을때는 이미 결제처리된 건이라 실패가 나왔는데, 이미 처리가 됐다는건 어딘가에 값이 있고 저희가 받아오는 과정에서 문제가 있는게 아닌가 싶어서요. 정확한 개발환경은 Springboot, React입니다.
Kimoon Lee
Kimoon Lee2w ago
안심키인 요청시에 LGD_NOTEURL 이나 LGD_RETURNURL 을 보내고 계신가요?
최건우(버터)
프론트에서 둘 다 보내고 있습니다.
Kimoon Lee
Kimoon Lee2w ago
그러면 결제 완료후에 LGD_RETURNURL 로 브라우저가 이동할텐데요. 거기서 결제 완료 처리를 하시거나 아니면 LGD_NOTEURL 로 콜백이 전송되는걸 받아서 완료 처리를 해주셔야 합니다.
동일 결제건으로 다시 결제했을때는 이미 결제처리된 건이라 실패가 나왔는데, 이미 처리가 됐다는건 어딘가에 값이 있고 저희가 받아오는 과정에서 문제가 있는게 아닌가 싶어서요.
이렇게 말씀하신 내용으로 봤을때는 결제는 완료 되었는데, 시스템에 결제 완료처리를 못하시는것 같아요.
최건우(버터)
'결제성공했습니다' 팝업 이후에 RETURNURL로 이동을 안하고 있다는데, 보내는 쪽에서 문제가 있는걸까요? 심지어 실제로 결제가 이루어졌는데, 시스템 결제완료처리가 안되어도 결제가 이루어질 수 있는건가요?
Kimoon Lee
Kimoon Lee2w ago
returnURL 로 이동을 안했다고 하시는데 주문번호나 영상을 보내주실수 있을까요? 그리고 가맹점시스템에서 결제 완료처리와 무관하게 저희는 결제 됩니다. 처리를 못하셨다면 다시 취소를 해주셔야 해요.
최건우(버터)
주문번호 : 870992 입니다. 집계가 안되어서 취소가 안되고있습니다.
Kimoon Lee
Kimoon Lee2w ago
결제는 언제하셨나요?
최건우(버터)
9시 49분쯤입니다.
Kimoon Lee
Kimoon Lee2w ago
returnURL 은 localhost 그리고 noteurl 은 192.168 로 시작하는 IP 사용하신 건가요?
최건우(버터)
네맞습니ㅏㄷ. 니다.
Kimoon Lee
Kimoon Lee2w ago
note URL 은 public 이 아니라서 전송이 안되셨을것 같구요. returnURL 을 사용하시려면 LGD_CUSTOM_RESULTTYPE 를 SUBMIT 으로 보내셔야 하는데 안보내셨네요. LGD_CUSTOM_RESULTTYPE 을 추가해서 확인부탁드립니다.
최건우(버터)
버터 on Notion
Notion | The connected workspace with site publishing
const handleCardByMobile = () => { // CST_PLATFORM은 test(테스트) 또는 service(서비스)를 넘겨주시면 됩니다. const CST_PLATFORM = 'test';
최건우(버터)
이미 보내고있는데 어디서 문제가 있는지 파악이 안되네요 ㅠㅠ
Kimoon Lee
Kimoon Lee2w ago
저희 로그상으로 //RETURNURL 있는경우 SUBMIT으로 전달 LGD_CUSTOM_RESULTTYPE: 'SUBMIT', //고정값 N LGD_ACTIVEXYN: 'N', 이 두가지가 안넘어 왔습니다.
최건우(버터)
저희가 보내는데 넘어가지 않는 케이스가 있나요? 예를 들면 로컬 테스트 환경에서는 불가능 하다던지, 수신(관리자)에 등록된 업체와 사용된 공인인증서가 다르다던지 등의 경우가요
Kimoon Lee
Kimoon Lee2w ago
아뇨 로그상으로는 안보내진것 같습니다. 실제로 창 띄우실때 network tab 통해서 모든 파라미터가 전달되는지 확인해 주시고 다 전달되면 network tab 캡쳐해서 보내주세요.
구나방
구나방2w ago
프론트에서 호출하는 모듈입니다. https://apigw-sandbox.tosspayments.com/payment-gateway-window/open/pg-window/v1/legacy-cert-keyin/card/confirm 네트워크 확인해보니 log만 넘어가고 있는 것으로 파악되어 작성한 파라미터 전달 드립니다. { "LGD_TIMESTAMP": "1736819683929", "LGD_MID": "tkvp_abctire13", "LGD_OID": 870916, "LGD_AMOUNT": 186800, "LGD_BUYER": "문지훈", "LGD_PRODUCTINFO": "엔페라 슈프림 SUV - NFERA Supreme SUV", "LGD_RETURNURL": "https://abctire-api.dev.buttercorp.kr/api/v1/admin/order/payment/card-by-number", "LGD_NOTEURL": "https://abctire-api.dev.buttercorp.kr/api/v1/admin/order/payment/card-by-number", "LGD_ENCODING": "UTF-8", "LGD_ENCODING_RETURNURL": "UTF-8", "LGD_ENCODING_NOTEURL": "UTF-8", "LGD_CUSTOM_RESULTTYPE": "SUBMIT", "LGD_ACTIVEXYN": "N" }
구나방
구나방2w ago
No description
최건우(버터)
저희는 어느부분이 문제가 있는지 파악이 안되는데, 혹시 파악 되실까요? returnURL을 넘기면 http://localhost:3001/cardbynumber 에서 응답을 받지 못합니다. 새 창에서 해당 URL을 넘기니까 정상 작동하구요.
최건우(버터)
개발서버에서 받은 결과입니다.
최건우(버터)
해당 이미지는 로컬에서 결과 화면입니다.
구나방
구나방2w ago
혹시 상점 관리자에서 로그 확인할 방법 없을까요?
최건우(버터)
body로 값을 리턴하는건가요? get이라면 뒤에 값이 붙어있어야하는데, 그게 아닌 것 같아서요. 초반에 저희가 설명을 잘못드렸는데 정확하게는 jsp가 아니라 spring / react 입니다ㅣ log를 찍었을 때 값이 정상적으로 들어가는데, window.open_paymentwindow(form, CST_PLATFORM); 코드를 타면 결과부터 에러가 나는 것 같습니다.
Kimoon Lee
Kimoon Lee2w ago
안심키인은 별도로 가맹점에서 로그를 확인하실수 없습니다. 정보는 POST 로 넘어갑니다. window.open_paymentwindow(form, CST_PLATFORM); 이코드에서 에러가 나면 결제창이 안떴을거에요. 405 not allow 가 나는것으로 보아 해당 URL 에 POST 요청을 허용하지 않으신것 같네요.
구나방
구나방2w ago
https://pgweb.tosspayments.com/pg/wmp/etc/jsp/Receipt_Link.jsp?mertid=tkvp_abctire13&tid=tkvp_20250114121748fd9y4&authdata=8e5ddb62acb42289033443576c4f2074 영수증 저장 로직입니다. String receiptUrl = String.format( "https://pgweb.tosspayments.com/pg/wmp/etc/jsp/Receipt_Link.jsp?mertid=%s&tid=%s&authdata=%s", req.getLGD_MID(), req.getLGD_TID(), DigestUtils.md5DigestAsHex(bNoti) ); 해당 url 접근하면 해당되는 자료가 없습니다라고 나오는데 테스트라서 그런걸까요?
최건우(버터)
결제 팝업에서 결제 후 안심키인 전화카드 결제 진행 웹 훅 API를 호출해서 POST로 전송하니 결제 자체의 문제는 해결했습니다. 다만, toss URL을 받아서 진행되는 결제 팝업에서 결과 화면이 다음과 같이 나옵니다.
No description
최건우(버터)
이를 해결 할 수 있는 방법이 있을까요? 이것만 정상적으로 화면이 출력되면 문제는 해결 될 것 같습니다.
유부장
유부장2w ago
두분 같은 회사 분 이신가요? 저희가 질의 / 답변에 대해서 다른 질문이면 가급적 새로운 쓰레드에 남겨주실 수 있도록 말씀 드리고 있는데요 저희도 대응 이력에 대해서 티켓 관리가 필요해서 그렇습니다 질문 자유도 보장 해드리기 위해서 강제하고 있지는 않는데요 다른 방향의 질문은 새로운 쓰레드에 남겨주실 수 있을까요? 지금 질문이 섞여서, 기존 문제가 어느 부분까지 해결된건지 파악하기가 좀 어렵습니다 테스트 환경 영수증 * 테스트 환경에서는 영수증 제공하고 있지 않는것이 맞습니다. toss URL을 받아서 진행되는 결제 팝업에서 결과 화면 * 이게 무슨 의미인지 잘 모르겠습니다 상황 설명좀 더 부탁 드릴게요
닭강정킬러
같은 회사 맞습니다. https://js.tosspayments.com/ansim-keyin/sandbox/v1/index.js 지금 상황은 키인 결제 연동 성공했고 1. 프론트에서 키인 팝업 호출 2. 법인 인증서 로그인후 결제 완료 3. redirectUrl에 백엔드 키인정보처리 api로 등록해놔서 거기로 post 받음 4. 영수증 처리 완료됨 원래 의도는 redirectUrl에 get으로 받아서 프론트에서 백으로 api 쏘려고 했는데 redirectUrl 에 Post로 와서 바로 서버로 쏴야하는 상황입니다. 이후 프론트에서 그 결과값에 대한 처리를 할수없는데 방법있을까요?
유부장
유부장2w ago
안심키인 결제의 경우 LGD_RETURNURL 와 LGD_NOTEURL 로, POST 로 결제결과를 전달 합니다. POST 로 전달된 결제 결과를 어떻게 처리 하시는지는, 구현하신 가맹점에서 고려하셔서 관리하시는 영역 이라서, 이 부분에 대한 가이드는 어려운점 양해 부탁 드립니다. 서버 쪽으로 결제 결과를 전달하고, 리다이렉션 같이 추가 프로세스를 구현하는 방법 같이 해당 페이지에서 모든 것을 하는 것이 아닌, 조금 더 케이스를 많이 살펴봐야 할것 같습니다. 결제 결과값을 처리하는 프론트 페이지를 별도로 구성하는 이야기를 드리고 있습니다.
Kimoon Lee
Kimoon Lee2w ago
redirectUrl 에서 post 로 받아서 프론트에서 백으로 쏘시면 될것 같은데요. get 인지 post 인지는 그냥 받는 방법이라 get 으로 하려고 하신걸 post 로 도 받아서 하시면 됩니다.
토스페이먼츠 BOT
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.
캐미
캐미OP2w ago
해보겠습니다. 감사합니다.

Did you find this page helpful?