xpay 계좌 인증 연동 문의 드립니다.
요청시 LGD_TXID 필드가 누락되었다는 메시지가 전송됩니다.
연동 가이드에는 없는 필드인데 추가 해야 할까요? 아니면 잘못 설정 된건가요?
Logger - 인증요청이 완료되었습니다.
Logger - >>> 1 LGD_RESPCODE
Logger - >> 2 XC01
Logger - >>> 1 LGD_RESPMSG
Logger - >> 2 LGD_TXID 필드가 누락되었습니다.
54 Replies
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.
보고계신 연동가이드가 아래 문서인지 확인부탁드려요
https://docs.google.com/document/d/1-yOCm80jXOjMEagQtPJ3bUfqlvpFWku-FlAat6Not2g/edit?usp=drive_link
Google Docs
XPAY[API]계좌유효성.1.0.3
Xpay-API-계좌유효성 Protocol and Core Function Specification Version 1.0.3 2022.09 목차 XPay 연동 샘플 파일 구조 3 XPay 결제 서비스 파라미터 3 ▪ 계좌유효성 요청 파라미터 3 ▪ 계좌유효성 결제 응답 파라미터 4 XPay 연동 샘플 파일 구조 TossPayments에서 제공되는 샘플파일은 XPay 결제 모듈 연동에 필요한 라이브러리(설치파일 포함) 및 설정파일과 실제 해당 서비스를 구현한 샘플페이지로 구성됩...
네 맞습니다.
그러면 코드를 좀 봐주셔야합니다.
어떤 코드요?
샘플 말하시는건가요?
에러가 발생하는 코드를 먼저 찾아주시구요
네?
?
통신할때 사용되는 값들은 가맹점에서 세팅하는 값도있고
필드가 누락되었다는건가요?
코드에서 생성되는 값도 있어요
샘플코드 기준으로는
대부분의 로직이 payreq, payres 에 있구요
아래 부분이 TXID 생성하는 부분도 봐주세요
샘플에는
txid 를 안나와있어요
가이드 문서에두요
사용하신 MID 알려주세요.
추가를 해줘야 하는건가요?
"LGD_MID=innisfree2&LGD_TXNAME=AccCert&LGD_GUBUN=2&LGD_BANKCODE=20&LGD_ACCOUNTNO=47740xxxxxx&LGD_NAME=%B0%AD%BF%B5%C8%C6&LGD_PRIVATENO=830925&LGD_BUYERIP=192.0.0.1"
innisfree2
innisfree2 입니다
호출을 직접 저렇게 하시는 건가요? 아니면 XPAY client 를 사용하시는 건가요?
직접 호출 하였습니다
api 서버를 개발중입니다.
그렇게 하시면 안되고 저희가 제공하는 라이브러리를 사용해 주셔야 합니다.
아..
네 xpay 모듈을 사용해서
호출한겁니다.
샘플에서 재공되는 jar를 사용하였구요
XPAY 모듈 호출하는 부분 코드좀 공유해주세요.
잠시만요
코드가 너무 길어서 안올라가나요
가네요
try {
XPayClient xpay = new XPayClient();
boolean isInitOK = xpay.Init(xpayConfigPath, xpayPlatform);
if (!isInitOK) {
throw new PaymentExcetion(XPAY_ERROR);
}
// 토스 상점 아이디 설정 (테스트 아이디 일 경우 앞에 't' 붙여서 사용)
xpay.Init_TX(xpayPlatform.equals("test") ? "t" : "" + tosId);
// String LGD_MID = ("test".equals(CST_PLATFORM.trim()) ? "t" : "") + CST_MID;
xpay.Set("LGD_MID", tosId);
xpay.Set("LGD_TXNAME", "AccCert");
xpay.Set("LGD_GUBUN", "2");
xpay.Set("LGD_BANKCODE", reqDto.getBankCode());
xpay.Set("LGD_ACCOUNTNO", reqDto.getAccountNo());
xpay.Set("LGD_NAME", reqDto.getName());
xpay.Set("LGD_PRIVATENO", reqDto.getPrivateNo());
xpay.Set("LGD_BUYERIP", "192.0.0.1");
if (xpay.TX()) {
// 1)인증결과 화면처리(성공,실패 결과 처리를 하시기 바랍니다.)
InmLogger.debug("인증요청이 완료되었습니다.");
resultDto.setCode(xpay.m_szResCode);
resultDto.setMessage(xpay.m_szResMsg);
// 아래는 인증 결과 파라미터를 모두 찍어 줍니다.
for (int i = 0; i < xpay.ResponseNameCount(); i++) {
InmLogger.debug(">>> 1 " + xpay.ResponseName(i));
for (int j = 0; j < xpay.ResponseCount(); j++) {
InmLogger.debug(">> 2 " + xpay.Response(xpay.ResponseName(i), j));
}
}
} else {
// 2)API 요청실패 화면처리
throw new PaymentExcetion("xpay 계좌 유효성 검증 실패 ",
PaymentResultResDto.builder().code(xpay.m_szResCode).message(xpay.m_szResMsg).build());
}
} catch (PaymentExcetion fe) {
XPayClient.jar 파일은 최근에 받으신거죠?
네
한달도 안되었습니다.
모듈이 문제가 있나요?
근데 좀 이상한데 CST_PLATFORM 값은 안보내시나요?
원래 저희가 드린 샘플코드에 CST_PLATFORM 하고 CST_MID 값을 설정하도록 되어 있을텐데요.
가이드 문서에는 없었는데
누락된걸까요?
추가해보겟습니다.
"CST_PLATFORM=test&LGD_MID=innisfree2&LGD_TXNAME=AccCert&LGD_GUBUN=2&LGD_BANKCODE=20&LGD_ACCOUNTNO=4774020xxxxxx&LGD_NAME=%B0%AD%BF%B5%C8%C6&LGD_PRIVATENO=830925&LGD_BUYERIP=192.0.0.1"
지금 이슈는 테스트 서버로 라이브 MID 가 들어가고 있습니다.
필드 추가해도 일단 메시지는 동일하네요
CST_PLATFORM은 추가되는게 맞는거면 일단은 적용 해두겟습니다.
mid 문제일까요?
LGD_MID 를 tinnisfree2 로 설정해 두시구요.
mall.conf 에
test일때 t가 붙도록 하면 될까요?
설정파일에? 변경을 해야 할까요?
innisfree2 = Mertkey 로 설정해 두시구요.
tinnisfree2 = Mertkey 가 설정되어 잇는지 확인부탁드립니다.
바꿔 보긴 했는데
결과는 동일하네요
혹시 xPAY 로그파일 확인 가능하신가요?
네
was 콘솔 로그랑 동일하네요
LGD_TXID 는 어떤 값인가요?
코드내용이 저희가 전달 드리는 샘플하고 일부 다른것 같은데
XPayClient xpay = new XPayClient();
boolean isInitOK = xpay.Init(configPath, CST_PLATFORM);
이게 샘플에 명시된 CST_PLATFORM 기반으로 테스트, 라이브 MID 분기하는 부분인데
XPayClient xpay = new XPayClient();
boolean isInitOK = xpay.Init(xpayConfigPath, xpayPlatform);
이렇게 되어있는데, xpayPlatform 는 현재 무슨 값을 가져오고 있나요?
String CST_PLATFORM = nvl(request.getParameter("CST_PLATFORM")); //토스페이먼츠 결제 서비스 선택(test:테스트, service:서비스)
String CST_MID = nvl(request.getParameter("CST_MID")); //상점아이디(토스페이먼츠으로 부터 발급받으신 상점아이디를 입력하세요)
String LGD_MID = ("test".equals(CST_PLATFORM.trim())?"t":"")+CST_MID; //테스트 아이디는 't'를 제외하고 입력하세요.
샘플에는 이렇게 CST_PLATFORM 이 test 일때, CST_MID 에 입력값에 알아서 t 를 붙여 주도록 되어 있는데,
이 부분 수정을 하신 걸까요?
tosId 가 운영하는 MID 값을 바로 입력해서 사용하고 계시는 게 맞을까요?
값 설정이나 이 부분을 혹시 어떻게 임의로 수정 하셨는지를 알 수 있을까요?
XPayClient xpay = new XPayClient();
boolean isInitOK = xpay.Init(xpayConfigPath, xpayPlatform);
if (!isInitOK) {
throw new PaymentExcetion(XPAY_ERROR);
}
// 토스 상점 아이디 설정 (테스트 아이디 일 경우 앞에 't' 붙여서 사용)
xpay.Init_TX(xpayPlatform.equals("test") ? "t" : "" + tosId);
String lgdMid = (xpayPlatform.equals("test") ? "t" : "") + tosId;
xpay.Set("CST_PLATFORM", xpayPlatform);
xpay.Set("LGD_MID", lgdMid);
xpay.Set("LGD_TXNAME", "AccCert");
xpay.Set("LGD_GUBUN", "2");
xpay.Set("LGD_BANKCODE", reqDto.getBankCode());
xpay.Set("LGD_ACCOUNTNO", reqDto.getAccountNo());
xpay.Set("LGD_NAME", reqDto.getName());
xpay.Set("LGD_PRIVATENO", reqDto.getPrivateNo());
xpay.Set("LGD_BUYERIP", "192.0.0.1");
1) xpayPlatform 으로 xpay.Init이 들어가고 있는데, 여기에 무슨 값이 들어 가도록 했는지
2) xpayPlatform 값을 기준으로, LGD_MID 가 innisfree2 또는 tinnisfree2 로 들어가도록 해야 하는데, 그 부분 구현은 되셨는지
프라퍼티에 설정된 값을 바로 넣고 있고
올려드린 로그에도 전송 파라메터에 찍혀 있어요
지금 xpay init 시에 t 라는 값만 들어가는것처럼 보여서 질문 드리는거에요
LGD_MID 로 tinnisfree2 보내지고 있는데
네
위에 스크린샷 로그는
저희측 로그가 아니라
xpay 모듈이 직은 로그에요
was에서
본래 샘플대로라면 xpay.Init_TX(LGD_MID); 에서 LGD_MID 값으로 들어가도록 되어야 하는데
xpay.Init_TX(xpayPlatform.equals("test") ? "t" : "" + tosId); 지금 이렇게 수정 해두셨는데
전달하신 로그에서 Init_TX Key [t] 가 뭔지 모른다고 나오는 것처럼 보이는데
의미는
tosId 라는 값이 제대로 안들어 가고 있는거 아닌가
이걸 질문 드리는 겁니다
아..
뭔말인지 이해 했습니다.
성공했습니다
{
"statusCode": 200,
"data": {
"code": "M049",
"message": "본인확인 서비스를 지원하는 상점이 아닙니다."
}
}
테스트도 계약이 되어야만 정상 테스트 가능한걸까요?
그리고 한가지더 질문이 있는데 root ca 인증서는 인증기관에 등록 완료된 인증서만 가능한건가요?
네, 우선 init_TX 진행하는 부분에서 MID 들어가는 부분 가이드 드려야 해서 정리 드린 것이고
계좌 유효성 검증 API 의 경우, 요청건당 이용료가 있는 기능 이어서, 테스트 환경에서는 제공되지 않는것이 맞습니다.
인증서 관련해서는, 네 맞습니다.
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.