orderinquiryview.php 와 orderinquirycancel.php 질문드립니다.
본문
현재 영카트 기본은
orderinquiryview.php 에서 주문내역을 살펴볼수 있는데요.
만약 무통장 혹은 가상계좌일 경우
부분취소 즉, orderinquryview.php 하단에 있는 "주문 취소하기" 버튼옆에
"부분 취소하기" 버튼을 두고
상단 상품 리스트 옆에 체크박스를 두어
부분 취소를 원할경우 원하는 상품에 체크를 하여 부분 취소하기 버튼 클릭시
해당 상품만 취소 되어 결제금액이 반영되면 좋겠습니다.
지금
영카트 기본 로직은
취소를 하게 될 경우에는
pg 사에 결제 취소를 보내는데(orderinqurirycancel.php)
만약 부분취소를 해줬을 경우( 입금전일 경우만)
PG 결제 취소를 어떻게 분기해줘야 할까요?
ㅠㅠ
PG는 이니시스 사용중입니다.
// PG 결제 취소
if($od['od_tno']) {
switch($od['od_pg']) {
case 'lg':
require_once('./settle_lg.inc.php');
$LGD_TID = $od['od_tno']; //LG유플러스으로 부터 내려받은 거래번호(LGD_TID)
$xpay = new XPay($configPath, $CST_PLATFORM);
// Mert Key 설정
$xpay->set_config_value('t'.$LGD_MID, $config['cf_lg_mert_key']);
$xpay->set_config_value($LGD_MID, $config['cf_lg_mert_key']);
$xpay->Init_TX($LGD_MID);
$xpay->Set("LGD_TXNAME", "Cancel");
$xpay->Set("LGD_TID", $LGD_TID);
if ($xpay->TX()) {
//1)결제취소결과 화면처리(성공,실패 결과 처리를 하시기 바랍니다.)
/*
echo "결제 취소요청이 완료되었습니다. <br>";
echo "TX Response_code = " . $xpay->Response_Code() . "<br>";
echo "TX Response_msg = " . $xpay->Response_Msg() . "<p>";
*/
} else {
//2)API 요청 실패 화면처리
$msg = "결제 취소요청이 실패하였습니다.\\n";
$msg .= "TX Response_code = " . $xpay->Response_Code() . "\\n";
$msg .= "TX Response_msg = " . $xpay->Response_Msg();
alert($msg);
}
break;
case 'inicis':
include_once(G5_SHOP_PATH.'/settle_inicis.inc.php');
$cancel_msg = iconv_euckr('주문자 본인 취소-'.$cancel_memo);
/*********************
* 3. 취소 정보 설정 *
*********************/
$inipay->SetField("type", "cancel"); // 고정 (절대 수정 불가)
$inipay->SetField("mid", $default['de_inicis_mid']); // 상점아이디
/**************************************************************************************************
* admin 은 키패스워드 변수명입니다. 수정하시면 안됩니다. 1111의 부분만 수정해서 사용하시기 바랍니다.
* 키패스워드는 상점관리자 페이지(https://iniweb.inicis.com)의 비밀번호가 아닙니다. 주의해 주시기 바랍니다.
* 키패스워드는 숫자 4자리로만 구성됩니다. 이 값은 키파일 발급시 결정됩니다.
* 키패스워드 값을 확인하시려면 상점측에 발급된 키파일 안의 readme.txt 파일을 참조해 주십시오.
**************************************************************************************************/
$inipay->SetField("admin", $default['de_inicis_admin_key']); //비대칭 사용키 키패스워드
$inipay->SetField("tid", $od['od_tno']); // 취소할 거래의 거래아이디
$inipay->SetField("cancelmsg", $cancel_msg); // 취소사유
/****************
* 4. 취소 요청 *
****************/
$inipay->startAction();
/****************************************************************
* 5. 취소 결과 *
* *
* 결과코드 : $inipay->getResult('ResultCode') ("00"이면 취소 성공) *
* 결과내용 : $inipay->getResult('ResultMsg') (취소결과에 대한 설명) *
* 취소날짜 : $inipay->getResult('CancelDate') (YYYYMMDD) *
* 취소시각 : $inipay->getResult('CancelTime') (HHMMSS) *
* 현금영수증 취소 승인번호 : $inipay->getResult('CSHR_CancelNum') *
* (현금영수증 발급 취소시에만 리턴됨) *
****************************************************************/
$res_cd = $inipay->getResult('ResultCode');
$res_msg = $inipay->getResult('ResultMsg');
if($res_cd != '00') {
alert(iconv_utf8($res_msg).' 코드 : '.$res_cd);
}
break;
default:
require_once('./settle_kcp.inc.php');
$_POST['tno'] = $od['od_tno'];
$_POST['req_tx'] = 'mod';
$_POST['mod_type'] = 'STSC';
if($od['od_escrow']) {
$_POST['req_tx'] = 'mod_escrow';
$_POST['mod_type'] = 'STE2';
if($od['od_settle_case'] == '가상계좌')
$_POST['mod_type'] = 'STE5';
}
$_POST['mod_desc'] = iconv("utf-8", "euc-kr", '주문자 본인 취소-'.$cancel_memo);
$_POST['site_cd'] = $default['de_kcp_mid'];
// 취소내역 한글깨짐방지
setlocale(LC_CTYPE, 'ko_KR.euc-kr');
include G5_SHOP_PATH.'/kcp/pp_ax_hub.php';
// locale 설정 초기화
setlocale(LC_CTYPE, '');
}
}
!-->
답변 1
한가지 잘못알고 계신것이
pg결제를 사용하면 입금전이라는 항목자체가 성립이 되지않습니다.
pg결제를 통해서 결제를 한다면 바로 입금완료로 바뀌게 되어있습니다.
실시간 결제이기 때문에 주문, 입금전이라는 항목으로 갈수가 없습니다.
답변을 작성하시기 전에 로그인 해주세요.