} // 주문상품의 상태가 주문인지 체크 $sql = " select SUM(IF(ct_status = '주문', 1, 0)) as od_count2,\n COUNT(*) as od_count1\n from {$g5['g5_shop_cart_table']}\n where od_id = '{$od_id}' "; $ct = sql_fetch($sql); $uid = md5($od['od_id'] . $od['od_time'] . $od['od_ip']); if ($od['od_cancel_price'] > 0 || $ct['od_count1'] != $ct['od_count2']) { alert("취소할 수 있는 주문이 아닙니다.", G5_SHOP_URL . "/orderinquiryview.php?od_id={$od_id}&uid={$uid}"); } // 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 요청 실패 화면처리
* 2. MD5 해쉬암호화 (수정하지 마세요) - BEGIN * * MD5 해쉬암호화는 거래 위변조를 막기위한 방법입니다. ************************************************* * * 해쉬 암호화 적용( LGD_MID + LGD_OID + LGD_AMOUNT + LGD_TIMESTAMP + LGD_MERTKEY ) * LGD_MID : 상점아이디 * LGD_OID : 주문번호 * LGD_AMOUNT : 금액 * LGD_TIMESTAMP : 타임스탬프 * LGD_MERTKEY : 상점MertKey (mertkey는 상점관리자 -> 계약정보 -> 상점정보관리에서 확인하실수 있습니다) * * MD5 해쉬데이터 암호화 검증을 위해 * LG유플러스에서 발급한 상점키(MertKey)를 환경설정 파일(lgdacom/conf/mall.conf)에 반드시 입력하여 주시기 바랍니다. */ $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); $LGD_HASHDATA = md5($LGD_MID . $LGD_OID . $LGD_AMOUNT . $LGD_TIMESTAMP . $xpay->config[$LGD_MID]); /* ************************************************* * 2. MD5 해쉬암호화 (수정하지 마세요) - END ************************************************* */ $payReqMap['CST_PLATFORM'] = $CST_PLATFORM; // 테스트, 서비스 구분 $payReqMap['LGD_WINDOW_TYPE'] = $LGD_WINDOW_TYPE; // 수정불가 $payReqMap['CST_MID'] = $CST_MID;
$row = sql_fetch($sql); if ($row['od_count1'] == $row['od_count2']) { $cancel_change = true; $pg_res_cd = ''; $pg_res_msg = ''; $pg_cancel_log = ''; // PG 신용카드 결제 취소일 때 if ($pg_cancel == 1) { $sql = " select * from {$g5['g5_shop_order_table']} where od_id = '{$od_id}' "; $od = sql_fetch($sql); if ($od['od_tno'] && ($od['od_settle_case'] == '신용카드' || $od['od_settle_case'] == '간편결제' || $od['od_settle_case'] == 'KAKAOPAY')) { switch ($od['od_pg']) { case 'lg': include_once G5_SHOP_PATH . '/settle_lg.inc.php'; $LGD_TID = $od['od_tno']; $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()) { $res_cd = $xpay->Response_Code(); if ($res_cd != '0000' && $res_cd != 'AV11') { $pg_res_cd = $res_cd; $pg_res_msg = $xpay->Response_Msg(); } } else { $pg_res_cd = $xpay->Response_Code(); $pg_res_msg = $xpay->Response_Msg();
$LGD_AUTHONLYKEY = $_POST['LGD_AUTHONLYKEY']; //LG유플러스으로부터 부여받은 인증키 $LGD_PAYTYPE = $_POST['LGD_PAYTYPE']; //인증요청타입 (신용카드:ASC001, 휴대폰:ASC002, 계좌:ASC004) require_once G5_LGXPAY_PATH . '/lgdacom/XPayClient.php'; // mall.conf 설정 추가를 위한 XPayClient 확장 class XPay extends XPayClient { public function set_config_value($key, $val) { $this->config[$key] = $val; } } $configPath = G5_LGXPAY_PATH . '/lgdacom'; //LG유플러스에서 제공한 환경파일("/conf/lgdacom.conf,/conf/mall.conf") 위치 지정. $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", "AuthOnlyByKey"); $xpay->Set("LGD_AUTHONLYKEY", $LGD_AUTHONLYKEY); $xpay->Set("LGD_PAYTYPE", $LGD_PAYTYPE); $g5['title'] = '휴대폰인증 결과'; include_once G5_PATH . '/head.sub.php'; /* ************************************************* * 1.최종인증 요청(수정하지 마세요) - END ************************************************* */ /*
//상품명 $LGD_TID = $od_tno; //LG유플러스 거래번호 $LGD_CUSTOM_MERTNAME = $default['de_admin_company_name']; //상점명 $LGD_CUSTOM_CEONAME = $default['de_admin_company_owner']; //대표자명 $LGD_CUSTOM_BUSINESSNUM = $default['de_admin_company_saupja_no']; //사업자등록번호 $LGD_CUSTOM_MERTPHONE = $default['de_admin_company_tel']; //상점 전화번호 $LGD_CASHCARDNUM = $_POST['id_info']; //발급번호(주민등록번호,현금영수증카드번호,휴대폰번호 등등) $LGD_CASHRECEIPTUSE = $_POST['tr_code']; //현금영수증발급용도('1':소득공제, '2':지출증빙) $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", "CashReceipt"); $xpay->Set("LGD_METHOD", $LGD_METHOD); $xpay->Set("LGD_PAYTYPE", $LGD_PAYTYPE); if ($LGD_METHOD == "AUTH") { // 현금영수증 발급 요청 $xpay->Set("LGD_OID", $LGD_OID); $xpay->Set("LGD_AMOUNT", $LGD_AMOUNT); $xpay->Set("LGD_CASHCARDNUM", $LGD_CASHCARDNUM); $xpay->Set("LGD_CUSTOM_MERTNAME", $LGD_CUSTOM_MERTNAME); $xpay->Set("LGD_CUSTOM_CEONAME", $LGD_CUSTOM_CEONAME); $xpay->Set("LGD_CUSTOM_BUSINESSNUM", $LGD_CUSTOM_BUSINESSNUM);
* * LG유플러스으로 부터 내려받은 LGD_PAYKEY(인증Key)를 가지고 최종 결제요청.(파라미터 전달시 POST를 사용하세요) */ /* ※ 중요 * 환경설정 파일의 경우 반드시 외부에서 접근이 가능한 경로에 두시면 안됩니다. * 해당 환경파일이 외부에 노출이 되는 경우 해킹의 위험이 존재하므로 반드시 외부에서 접근이 불가능한 경로에 두시기 바랍니다. * 예) [Window 계열] C:\inetpub\wwwroot\lgdacom ==> 절대불가(웹 디렉토리) */ /* ************************************************* * 1.최종결제 요청 - BEGIN * (단, 최종 금액체크를 원하시는 경우 금액체크 부분 주석을 제거 하시면 됩니다.) ************************************************* */ $LGD_PAYKEY = $_POST['LGD_PAYKEY']; $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', 'PaymentByKey'); $xpay->Set('LGD_PAYKEY', $LGD_PAYKEY); //금액을 체크하시기 원하는 경우 아래 주석을 풀어서 이용하십시요. //$DB_AMOUNT = "DB나 세션에서 가져온 금액"; //반드시 위변조가 불가능한 곳(DB나 세션)에서 금액을 가져오십시요. //$xpay->Set('LGD_AMOUNTCHECKYN', 'Y'); //$xpay->Set('LGD_AMOUNT', $DB_AMOUNT); /* ************************************************* * 1.최종결제 요청(수정하지 마세요) - END ************************************************* */
//부분취소 금액 $LGD_REMAINAMOUNT = (int) $od['od_receipt_price'] - (int) $od['od_refund_price']; //취소전 남은금액 $LGD_CANCELTAXFREEAMOUNT = (int) $free_mny; //면세대상 부분취소 금액 (과세/면세 혼용상점만 적용) $LGD_CANCELREASON = $mod_memo; //취소사유 $LGD_RFACCOUNTNUM = $_POST['LGD_RFACCOUNTNUM']; //환불계좌 번호(가상계좌 환불인경우만 필수) $LGD_RFBANKCODE = $_POST['LGD_RFBANKCODE']; //환불계좌 은행코드(가상계좌 환불인경우만 필수) $LGD_RFCUSTOMERNAME = $_POST['LGD_RFCUSTOMERNAME']; //환불계좌 예금주(가상계좌 환불인경우만 필수) $LGD_RFPHONE = $_POST['LGD_RFPHONE']; //요청자 연락처(가상계좌 환불인경우만 필수) $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", "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_CANCELREASON", $LGD_CANCELREASON); $xpay->Set("LGD_RFACCOUNTNUM", $LGD_RFACCOUNTNUM); $xpay->Set("LGD_RFBANKCODE", $LGD_RFBANKCODE); $xpay->Set("LGD_RFCUSTOMERNAME", $LGD_RFCUSTOMERNAME); $xpay->Set("LGD_RFPHONE", $LGD_RFPHONE); $xpay->Set("LGD_REQREMAIN", "0");