%@ page contentType="text/html; charset=EUC-KR" %>
<%@ page import="lgdacom.XPayClient.XPayClient"%>
<%
/*
* [결제 부분취소 요청 페이지]
*
* 토스페이먼츠으로 부터 내려받은 거래번호(LGD_TID)를 가지고 부분취소 요청을 합니다.(파라미터 전달시 POST를 사용하세요)
* (승인시 토스페이먼츠으로 부터 내려받은 PAYKEY와 혼동하지 마세요.)
*/
String CST_PLATFORM = request.getParameter("CST_PLATFORM"); //토스페이먼츠 결제서비스 선택(test:테스트, service:서비스)
String CST_MID = request.getParameter("CST_MID"); //토스페이먼츠으로 부터 발급받으신 상점아이디를 입력하세요.
String LGD_MID = ("test".equals(CST_PLATFORM.trim())?"t":"")+CST_MID; //테스트 아이디는 't'를 제외하고 입력하세요.
//상점아이디(자동생성)
String LGD_TID = request.getParameter("LGD_TID"); //토스페이먼츠으로 부터 내려받은 거래번호(LGD_TID)
String LGD_CANCELAMOUNT = request.getParameter("LGD_CANCELAMOUNT"); //부분취소 금액
String LGD_REMAINAMOUNT = request.getParameter("LGD_REMAINAMOUNT"); //남은 금액
// String LGD_CANCELTAXFREEAMOUNT = request.getParameter("LGD_CANCELTAXFREEAMOUNT"); //면세대상 부분취소 금액 (과세/면세 혼용상점만 적용)
String LGD_CANCELREASON = request.getParameter("LGD_CANCELREASON"); //취소사유
String LGD_RFBANKCODE = request.getParameter("LGD_RFBANKCODE"); //환불계좌 은행코드 (가상계좌만 필수)
String LGD_RFACCOUNTNUM = request.getParameter("LGD_RFACCOUNTNUM"); //환불계좌 번호 (가상계좌만 필수)
String LGD_RFCUSTOMERNAME = request.getParameter("LGD_RFCUSTOMERNAME"); //환불계좌 예금주 (가상계좌만 필수)
String LGD_RFPHONE = request.getParameter("LGD_RFPHONE"); //요청자 연락처 (가상계좌만 필수)
String configPath = "C:/lgdacom"; //토스페이먼츠에서 제공한 환경파일("/conf/lgdacom.conf") 위치 지정.
LGD_CANCELAMOUNT = ( LGD_CANCELAMOUNT == null )?"":LGD_CANCELAMOUNT;
LGD_REMAINAMOUNT = ( LGD_REMAINAMOUNT == null )?"":LGD_REMAINAMOUNT;
// LGD_CANCELTAXFREEAMOUNT = ( LGD_CANCELTAXFREEAMOUNT == null )?"":LGD_CANCELTAXFREEAMOUNT;
LGD_CANCELREASON = ( LGD_CANCELREASON == null )?"":LGD_CANCELREASON;
LGD_RFBANKCODE = ( LGD_RFBANKCODE == null )?"":LGD_RFBANKCODE;
LGD_RFACCOUNTNUM = ( LGD_RFACCOUNTNUM == null )?"":LGD_RFACCOUNTNUM;
LGD_RFCUSTOMERNAME = ( LGD_RFCUSTOMERNAME == null )?"":LGD_RFCUSTOMERNAME;
LGD_RFPHONE = ( LGD_RFPHONE == null )?"":LGD_RFPHONE;
// (1) XpayClient의 사용을 위한 xpay 객체 생성
XPayClient xpay = new XPayClient();
// (2) Init: XPayClient 초기화(환경설정 파일 로드)
// configPath: 설정파일
// CST_PLATFORM: - test, service 값에 따라 lgdacom.conf의 test_url(test) 또는 url(srvice) 사용
// - test, service 값에 따라 테스트용 또는 서비스용 아이디 생성
xpay.Init(configPath, CST_PLATFORM);
// (3) Init_TX: 메모리에 mall.conf, lgdacom.conf 할당 및 트랜잭션의 고유한 키 TXID 생성
xpay.Init_TX(LGD_MID);
xpay.Set("LGD_TXNAME", "PartialCancel");
xpay.Set("LGD_TID", LGD_TID);
xpay.Set("LGD_CANCELAMOUNT", LGD_CANCELAMOUNT);
xpay.Set("LGD_REMAINAMOUNT", LGD_REMAINAMOUNT);
// xpay.Set("LGD_CANCELTAXFREEAMOUNT", LGD_CANCELTAXFREEAMOUNT);
xpay.Set("LGD_RFBANKCODE", LGD_RFBANKCODE);
xpay.Set("LGD_RFACCOUNTNUM", LGD_RFACCOUNTNUM);
xpay.Set("LGD_RFCUSTOMERNAME", LGD_RFCUSTOMERNAME);
xpay.Set("LGD_RFPHONE", LGD_RFPHONE);
/*
* 1. 결제 부분취소 요청 결과처리
*
*/
// (4) TX: lgdacom.conf에 설정된 URL로 소켓 통신하여 결제 부분취소 요청, 결과값으로 true, false 리턴
if (xpay.TX()) {
// (5) 결제 부분취소 요청 결과 처리
//1)결제 부분취소결과 화면처리(성공,실패 결과 처리를 하시기 바랍니다.)
out.println("결제 부분취소 요청이 완료되었습니다.
");
out.println( "TX Response_code = " + xpay.m_szResCode + "
");
out.println( "TX Response_msg = " + xpay.m_szResMsg + "
");
for (int i = 0; i < xpay.ResponseNameCount(); i++)
{
out.println(xpay.ResponseName(i) + " = ");
for (int j = 0; j < xpay.ResponseCount(); j++)
{
out.println("\t" + xpay.Response(xpay.ResponseName(i), j) + "
");
}
}
out.println("
");
}else {
//2)API 요청 실패 화면처리
out.println("결제 부분취소 요청이 실패하였습니다.
");
out.println( "TX Response_code = " + xpay.m_szResCode + "
");
out.println( "TX Response_msg = " + xpay.m_szResMsg + "
"); } %>