xpay 결제취소 관련 확인
안녕하세요 결제건 결제취소를 저희 가맹점 관리자에서 수동취소를 하는 방법을 찾고 있는데 {"code":500,"message":"PG 취소 실패 [XC01] LGD_AUTHCODE 필드가 누락되었습니다."}
이런 로그가 나오는데 저희 기존에 xpay 사용중에 결제기록이 남는 테이블에 LGD_AUTHCODE는 없어서 어디서 나온건지 확인이 가능하실까요 ? 해당 건 TID는 tkrdh20251028095452nbEu4 입니다
19 Replies
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.
주문번호 : D20251028095241
이건 모듈에서 나는 에러라 취소로그 전체를 봐야합니다.
configpath 에 지정된 곳에 mall.conf 를 보시면 log_dir 경로가 지정되어 있고, 여기 오늘날짜 로그파일이 있을겁니다. 해당 로그파일 전체를 techsupport@tosspayments.com 으로 전달부탁드립니다.
아마 로그파일에는 다른 에러 (진짜 사유) 가 찍혔을듯 한데요.. 보통 이거는 mertkey 설정이 안되어 있거나, 셋팅한 MID 값과 cst_platform 값과 맞는 mid , mertkey가 mall.conf 에 설정이 안되어 있으면 발생합니다.
네 메일송부드렸습니다 감사합니다
네 메일은 봤습니다.
캡쳐본으로 보내주시고 오늘 오전로그밖에 안보이는데요
지금 취소요청을 한 시간대에 남은 로그기록이 필요합니다.
문의주신 에러가, 캡쳐해주신 로그파일에는 전혀 안남은 것일까요?
아 네 죄송합니다 취소시도했을때 남은 로그 다시 메일로 송부드렸습니다 확실히 다르게 나오긴하네요
네 로그 왔습니다. 분석후 회신드리겠습니다
원인은 찾았구요

이부분이 문제입니다
LGD_MID 가 tkrdha2 만 설정되어야 하는데
LGD_MID 자리에 LGD_TID 가 들어간것 같습니다
이런 mid 는 mall.conf 에 없어서 에러 발생했습니다.
protected void Page_Load(object sender, EventArgs e)
{
/*
* [결제취소 요청 페이지]
*
* 토스페이먼츠으로 부터 내려받은 거래번호(LGD_TID)를 가지고 취소 요청을 합니다.(파라미터 전달시 POST를 사용하세요)
* (승인시 토스페이먼츠으로 부터 내려받은 PAYKEY와 혼동하지 마세요.)
*/
CST_PLATFORM = Request.Params.Get("CST_PLATFORM");
CST_MID = Request.Params.Get("CST_MID");
LGD_MID = ("test".Equals(CST_PLATFORM.Trim())?"t":"")+CST_MID; LGD_TID = Request.Params.Get("LGD_TID"); 이부분에 각 값이 잘 들어가고 있나 확인해주시면 될것 같습니다.
LGD_MID = ("test".Equals(CST_PLATFORM.Trim())?"t":"")+CST_MID; LGD_TID = Request.Params.Get("LGD_TID"); 이부분에 각 값이 잘 들어가고 있나 확인해주시면 될것 같습니다.
네 xpay.init 이부분 수정했는데 서비스 이용할 수 없다고 계속 나와서 확인 부탁드립니다
메일 한번 더 드렸습니다
소스 조금 더 수정하였더니 취소로 api 보내지는것 같긴합니다 ?

mid가 두개씩 들어가고 있는데요
혹시 취소요청페이지에 LGD_MID를 xpay.init 전에 출력해보실수 있을까요?
정상적이라면
test일때
CST_PLATFORM = "test";
CST_MID = "krdha2";
LGD_MID = ("test".Equals(CST_PLATFORM.Trim())?"t":"")+CST_MID; // tkrdha2 로 출력
이 되어야 합니다.
그리고,
xpay.Init_TX(LGD_MID);
이렇게 MID가 한번만 입력되도록 되어 있는지도 확인해보시겠어요?
아래가 원본소스입니다.
XPayClient xpay = new XPayClient();
xpay.Init(configPath, CST_PLATFORM);
xpay.Init_TX(LGD_MID);
xpay.Set("LGD_TXNAME", "Cancel");
xpay.Set("LGD_TID", LGD_TID);
잠시만요..닷넷버전이 로그를 원래 저렇게 남기고 있었네요..저희쪽 로그좀 살펴보겠습니다.
저희쪽 로그 보니까 위에 말씀드린것이 맞습니다.
LGD_TXID=tkrdha2-01202510301918123e1a412fe2c368bf598d790928f704f8d0368da6,tkrdh20251028095452nbEu4
LGD_AUTHCODE=b628320e1db1edd4cf9bc012c39338c189a3f4c7
LGD_MID=tkrdha2,tkrdha2
LGD_TXNAME=Cancel
LGD_TID=tkrdh20251028095452nbEu4
LGD_CANCELREASON=관리자 수동 취소
LGD_ENCODING=UTF-8
이렇게 데이터가 넘어왔습니다. LGD_MID가 두번들어왔고, 특히 가운데 콤마(특수문자) 가 들어와서 잘못된 파라미터로 인식하여 에러를 냈습니다.
그런데 19:23 에 다시 올려서 정상취소 응답받으셨네요
네 mid 가 여러가지 넣어져있는 것 같아서 수정했더니 토스페이먼츠 관리자에 취소로 나오는 것 같습니다
네 19:23:02 에 올라온 취소는 잘 됬습니다. 아래와 같이 올라왔습니다.
LGD_TXID=tkrdha2-01202510301923021284101b322a58d86ebac7109a78794ce708d383
LGD_AUTHCODE=f77fa1d1c4af29ed22a1caf2afb9aba8e7f191a0
LGD_MID=tkrdha2
LGD_TXNAME=Cancel
LGD_TID=tkrdh20251028095452nbEu4
LGD_CANCELREASON=관리자 수동 취소
LGD_ENCODING=UTF-8
네 로그에 이상은 없겠죠 ?
네 로그 보시면 아마 정상취소 응답이 확인될것입니다
19:23:00 ~ 10초 사이의 로그를 보시면 될겁니다.
네 혼자작업하느라 헤맸었는데 정말 감사드립니다 🙂 🙂
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.