From 634187332b3fabb68baaf2c3003231ea5cfd5e1f Mon Sep 17 00:00:00 2001 From: chicpro Date: Tue, 24 Jun 2014 16:04:52 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=20=EC=A3=BC?= =?UTF-8?q?=EB=AC=B8=20=EC=B7=A8=EC=86=8C=EC=8B=9C=20PG=20=EC=8B=A0?= =?UTF-8?q?=EC=9A=A9=EC=B9=B4=EB=93=9C=20=EC=8A=B9=EC=9D=B8=EC=B7=A8?= =?UTF-8?q?=EC=86=8C=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- adm/shop_admin/orderform.php | 23 ++++- adm/shop_admin/orderformcartupdate.php | 113 ++++++++++++++++++++++++- 2 files changed, 134 insertions(+), 2 deletions(-) diff --git a/adm/shop_admin/orderform.php b/adm/shop_admin/orderform.php index 244645600..883f6244d 100644 --- a/adm/shop_admin/orderform.php +++ b/adm/shop_admin/orderform.php @@ -124,6 +124,7 @@ if($od['od_pg'] == 'lg') { +
@@ -954,7 +955,27 @@ function form_submit(f) return false; } - if (confirm("\'" + status + "\' 상태를 선택하셨습니다.\n\n처리 하시겠습니까?")) { + var msg = ""; + + + if(status == "취소" || status == "반품" || status == "품절") { + var $ct_chk = $("input[name^=ct_chk]"); + var chk_cnt = $ct_chk.size(); + var chked_cnt = $ct_chk.filter(":checked").size(); + + if(chk_cnt == chked_cnt) { + if(confirm("PG사의 신용카드 결제를 함께 취소하시겠습니까?\n\n한번 취소한 결제는 다시 복구할 수 없습니다.")) { + f.pg_cancel.value = 1; + msg = "PG사의 신용카드 결제 취소와 함께 "; + } else { + f.pg_cancel.value = 0; + msg = ""; + } + } + } + + + if (confirm(msg+"\'" + status + "\' 상태를 선택하셨습니다.\n\n선택하신대로 처리하시겠습니까?")) { return true; } else { return false; diff --git a/adm/shop_admin/orderformcartupdate.php b/adm/shop_admin/orderformcartupdate.php index 49f89d93c..72fa3fc6a 100644 --- a/adm/shop_admin/orderformcartupdate.php +++ b/adm/shop_admin/orderformcartupdate.php @@ -153,8 +153,112 @@ if (in_array($_POST['ct_status'], $status_cancel)) { 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'] == '신용카드') { + 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(); + } + break; + default: + include_once(G5_SHOP_PATH.'/settle_kcp.inc.php'); + require_once(G5_SHOP_PATH.'/kcp/pp_ax_hub_lib.php'); + + // locale ko_KR.euc-kr 로 설정 + setlocale(LC_CTYPE, 'ko_KR.euc-kr'); + + $c_PayPlus = new C_PP_CLI; + + $c_PayPlus->mf_clear(); + + $tno = $od['od_tno']; + $tran_cd = '00200000'; + $g_conf_home_dir = G5_SHOP_PATH.'/kcp'; + $g_conf_key_dir = ''; + $g_conf_log_dir = G5_SHOP_PATH.'/kcp/log'; + if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') + { + $g_conf_key_dir = G5_SHOP_PATH.'/kcp/bin/pub.key'; + } + $g_conf_site_cd = $default['de_kcp_mid']; + + if (preg_match("/^T000/", $g_conf_site_cd) || $default['de_card_test']) { + $g_conf_gw_url = "testpaygw.kcp.co.kr"; + } else { + $g_conf_gw_url = "paygw.kcp.co.kr"; + } + $cancel_msg = iconv_euckr('쇼핑몰 운영자 승인 취소'); + $cust_ip = $_SERVER['REMOTE_ADDR']; + $bSucc_mod_type = "STSC"; + + $c_PayPlus->mf_set_modx_data( "tno", $tno ); // KCP 원거래 거래번호 + $c_PayPlus->mf_set_modx_data( "mod_type", $bSucc_mod_type ); // 원거래 변경 요청 종류 + $c_PayPlus->mf_set_modx_data( "mod_ip", $cust_ip ); // 변경 요청자 IP + $c_PayPlus->mf_set_modx_data( "mod_desc", $cancel_msg ); // 변경 사유 + + $c_PayPlus->mf_do_tx( $tno, $g_conf_home_dir, $g_conf_site_cd, + $g_conf_site_key, $tran_cd, "", + $g_conf_gw_url, $g_conf_gw_port, "payplus_cli_slib", + $ordr_idxx, $cust_ip, "3" , + 0, 0, $g_conf_key_dir, $g_conf_log_dir); + + $res_cd = $c_PayPlus->m_res_cd; + $res_msg = $c_PayPlus->m_res_msg; + + if($res_cd != '0000') { + $pg_res_cd = $res_cd; + $pg_res_msg = iconv_utf8($res_msg); + } + + // locale 설정 초기화 + setlocale(LC_CTYPE, ''); + break; + } + + // PG 취소요청 성공했으면 + if($pg_res_cd == '') { + $pg_cancel_log = ' PG 신용카드 승인취소 처리'; + $sql = " update {$g5['g5_shop_order_table']} + set od_refund_price = '{$od['od_receipt_price']}' + where od_id = '$od_id' "; + sql_query($sql); + } + } + } + // 관리자 주문취소 로그 - $mod_history .= G5_TIME_YMDHIS.' '.$member['mb_id'].' 주문'.$_POST['ct_status'].' 처리'."\n"; + $mod_history .= G5_TIME_YMDHIS.' '.$member['mb_id'].' 주문'.$_POST['ct_status'].' 처리'.$pg_cancel_log."\n"; } } @@ -190,6 +294,13 @@ if($cancel_change) { $sql .= " where od_id = '$od_id' "; sql_query($sql); +// 신용카드 취소 때 오류가 있으면 알림 +if($pg_cancel == 1 && $pg_res_cd && $pg_res_msg) { + echo ''; +} + $qstr = "sort1=$sort1&sort2=$sort2&sel_field=$sel_field&search=$search&page=$page"; $url = "./orderform.php?od_id=$od_id&$qstr";