orderinquiryview.php 와 orderinquirycancel.php 질문드립니다.

orderinquiryview.php 와 orderinquirycancel.php 질문드립니다.

QA

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결제를 통해서 결제를 한다면 바로 입금완료로 바뀌게 되어있습니다.

실시간 결제이기 때문에 주문, 입금전이라는 항목으로 갈수가 없습니다.

 

네 저도 그렇게 알고 있었는데
orderinquirycancel.php 에 pg 관련 코드가 있는게 좀 이상해서요;

그럼 구매자는
입금(무통장입금 또는 카드 결제, 실시간 결제)후 주문 취소는
환불로 해야 하나요?

신용카드의 경우 회원이 직접 취소를 할 수 없게 되어있습니다.
무통장입금의 경우만 주문취소가 고객이 직접 할 수 있는 것으로 알고있습니다.
마찬가지로 해당 .php 파일에서 카드 취소 부분의 소스는 있지만
실제로 카드 결제시 주문취소 버튼은 노출되지 않을겁니다.
그래서 대게는 고객이 관리자에게 연락하여 직접 취소를 요청하고
관리자는 관리자페이지에서 해당 주문건(카드, 계좌이체)을 취소해줍니다.
물론 무통장의 경우에는 관리자가 직접 고객의 환불계좌로 이체를 해줘야하지요

답변을 작성하시기 전에 로그인 해주세요.
전체 28
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT