diff --git a/extend/shop.extend.php b/extend/shop.extend.php index 821071f52..cfceaef76 100644 --- a/extend/shop.extend.php +++ b/extend/shop.extend.php @@ -104,6 +104,18 @@ if(!sql_query(" select 1 from {$g4['uniqid_table']} limit 1 ", false)) { ) ", false); } +// uq_id 필드추가 +$sql = " select uq_id from {$g4['yc4_cart_table']} limit 1 "; +$result = sql_query($sql, false); +if(!$result) { + sql_query(" ALTER TABLE `{$g4['yc4_cart_table']}` ADD `uq_id` BIGINT(20) unsigned NOT NULL AFTER `ct_id` ", false); + sql_query(" ALTER TABLE `{$g4['yc4_order_table']}` ADD `uq_id` BIGINT(20) unsigned NOT NULL AFTER `od_id` ", false); + sql_query(" ALTER TABLE `{$g4['yc4_card_history_table']}` ADD `uq_id` BIGINT(20) unsigned NOT NULL AFTER `od_id` ", false); + sql_query(" ALTER TABLE `{$g4['yc4_order_table']}` MODIFY COLUMN od_id BIGINT(20) unsigned NOT NULL ", false); + sql_query(" ALTER TABLE `{$g4['yc4_cart_table']}` ADD INDEX uq_id (uq_id) ", false); + sql_query(" ALTER TABLE `{$g4['yc4_order_table']}` ADD UNIQUE uq_id (uq_id) ", false); +} + //============================================================================== // 쇼핑몰 필수 실행코드 모음 끝 //============================================================================== diff --git a/shop/cartupdate.php b/shop/cartupdate.php index df67c8124..3f2c82240 100644 --- a/shop/cartupdate.php +++ b/shop/cartupdate.php @@ -16,16 +16,6 @@ else { } } -// uq_id 필드추가 -$sql = " select uq_id from {$g4['yc4_cart_table']} limit 1 "; -$result = sql_query($sql, false); -if(!$result) { - sql_query(" ALTER TABLE `{$g4['yc4_cart_table']}` ADD `uq_id` BIGINT(20) unsigned NOT NULL AFTER `ct_id` ", false); - sql_query(" ALTER TABLE `{$g4['yc4_order_table']}` ADD `uq_id` BIGINT(20) unsigned NOT NULL AFTER `od_id` ", false); - sql_query(" ALTER TABLE `{$g4['yc4_cart_table']}` ADD INDEX uq_id (uq_id) ", false); - sql_query(" ALTER TABLE `{$g4['yc4_order_table']}` ADD UNIQUE uq_id (uq_id) ", false); -} - // 브라우저에서 쿠키를 허용하지 않은 경우라고 볼 수 있음. if (!$tmp_uq_id) { diff --git a/shop/kcp/bin/pp_cli b/shop/kcp/bin/pp_cli new file mode 100755 index 000000000..cfe783538 Binary files /dev/null and b/shop/kcp/bin/pp_cli differ diff --git a/shop/kcp/pp_ax_hub.php b/shop/kcp/pp_ax_hub.php index f3bdc7940..70e9fe580 100644 --- a/shop/kcp/pp_ax_hub.php +++ b/shop/kcp/pp_ax_hub.php @@ -15,13 +15,13 @@ if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가 /* = 환경 설정 = */ /* = -------------------------------------------------------------------------- = */ - $g_conf_home_dir = dirname($_SERVER['DOCUMENT_ROOT'] . $_SERVER['PHP_SELF']) . '/kcp/'; + $g_conf_home_dir = G4_SHOP_PATH.'/kcp'; $g_conf_key_dir = ''; $g_conf_log_dir = ''; if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { - $g_conf_key_dir = dirname($_SERVER['DOCUMENT_ROOT'] . $_SERVER['PHP_SELF']) . '/kcp/bin/pub.key'; - $g_conf_log_dir = dirname($_SERVER['DOCUMENT_ROOT'] . $_SERVER['PHP_SELF']) . '/kcp/log'; + $g_conf_key_dir = G4_SHOP_PATH.'/kcp/bin/pub.key'; + $g_conf_log_dir = G4_SHOP_PATH.'/kcp/log'; } $g_conf_site_cd = $_POST['site_cd']; @@ -134,280 +134,232 @@ if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가 /* ============================================================================== */ - /* ============================================================================== */ - /* = 02. 인스턴스 생성 및 초기화 = */ - /* = -------------------------------------------------------------------------- = */ - /* = 결제에 필요한 인스턴스를 생성하고 초기화 합니다. = */ - /* = -------------------------------------------------------------------------- = */ - $c_PayPlus = new C_PP_CLI; +/* ============================================================================== */ +/* = 02. 인스턴스 생성 및 초기화 = */ +/* = -------------------------------------------------------------------------- = */ +/* = 결제에 필요한 인스턴스를 생성하고 초기화 합니다. = */ +/* = -------------------------------------------------------------------------- = */ +$c_PayPlus = new C_PP_CLI; - $c_PayPlus->mf_clear(); - /* ------------------------------------------------------------------------------ */ - /* = 02. 인스턴스 생성 및 초기화 END = */ - /* ============================================================================== */ +$c_PayPlus->mf_clear(); +/* ------------------------------------------------------------------------------ */ +/* = 02. 인스턴스 생성 및 초기화 END = */ +/* ============================================================================== */ - /* ============================================================================== */ - /* = 03. 처리 요청 정보 설정 = */ - /* = -------------------------------------------------------------------------- = */ +/* ============================================================================== */ +/* = 03. 처리 요청 정보 설정 = */ +/* = -------------------------------------------------------------------------- = */ - /* = -------------------------------------------------------------------------- = */ - /* = 03-1. 승인 요청 = */ - /* = -------------------------------------------------------------------------- = */ - if ( $req_tx == "pay" ) +/* = -------------------------------------------------------------------------- = */ +/* = 03-1. 승인 요청 = */ +/* = -------------------------------------------------------------------------- = */ +if ( $req_tx == "pay" ) +{ + /* 1004원은 실제로 업체에서 결제하셔야 될 원 금액을 넣어주셔야 합니다. 결제금액 유효성 검증 */ + $c_PayPlus->mf_set_ordr_data( "ordr_mony", $good_mny ); + + $c_PayPlus->mf_set_encx_data( $_POST[ "enc_data" ], $_POST[ "enc_info" ] ); +} + +/* = -------------------------------------------------------------------------- = */ +/* = 03-2. 취소/매입 요청 = */ +/* = -------------------------------------------------------------------------- = */ +else if ( $req_tx == "mod" ) +{ + $tran_cd = "00200000"; + + $c_PayPlus->mf_set_modx_data( "tno", $tno ); // KCP 원거래 거래번호 + $c_PayPlus->mf_set_modx_data( "mod_type", $mod_type ); // 원거래 변경 요청 종류 + $c_PayPlus->mf_set_modx_data( "mod_ip", $cust_ip ); // 변경 요청자 IP + $c_PayPlus->mf_set_modx_data( "mod_desc", $mod_desc ); // 변경 사유 +} + +/* = -------------------------------------------------------------------------- = */ +/* = 03-3. 에스크로 상태변경 요청 = */ +/* = -------------------------------------------------------------------------- = */ +else if ($req_tx = "mod_escrow") +{ + $tran_cd = "00200000"; + + $c_PayPlus->mf_set_modx_data( "tno", $tno ); // KCP 원거래 거래번호 + $c_PayPlus->mf_set_modx_data( "mod_type", $mod_type ); // 원거래 변경 요청 종류 + $c_PayPlus->mf_set_modx_data( "mod_ip", $cust_ip ); // 변경 요청자 IP + $c_PayPlus->mf_set_modx_data( "mod_desc", $mod_desc ); // 변경 사유 + + if ($mod_type == "STE1") // 상태변경 타입이 [배송요청]인 경우 { - /* 1004원은 실제로 업체에서 결제하셔야 될 원 금액을 넣어주셔야 합니다. 결제금액 유효성 검증 */ - $c_PayPlus->mf_set_ordr_data( "ordr_mony", $good_mny ); - - $c_PayPlus->mf_set_encx_data( $_POST[ "enc_data" ], $_POST[ "enc_info" ] ); + $c_PayPlus->mf_set_modx_data( "deli_numb", $_POST[ "deli_numb" ] ); // 운송장 번호 + $c_PayPlus->mf_set_modx_data( "deli_corp", $_POST[ "deli_corp" ] ); // 택배 업체명 } - - /* = -------------------------------------------------------------------------- = */ - /* = 03-2. 취소/매입 요청 = */ - /* = -------------------------------------------------------------------------- = */ - else if ( $req_tx == "mod" ) + else if ($mod_type == "STE2" || $mod_type == "STE4") // 상태변경 타입이 [즉시취소] 또는 [취소]인 계좌이체, 가상계좌의 경우 { - $tran_cd = "00200000"; - - $c_PayPlus->mf_set_modx_data( "tno", $tno ); // KCP 원거래 거래번호 - $c_PayPlus->mf_set_modx_data( "mod_type", $mod_type ); // 원거래 변경 요청 종류 - $c_PayPlus->mf_set_modx_data( "mod_ip", $cust_ip ); // 변경 요청자 IP - $c_PayPlus->mf_set_modx_data( "mod_desc", $mod_desc ); // 변경 사유 - } - - /* = -------------------------------------------------------------------------- = */ - /* = 03-3. 에스크로 상태변경 요청 = */ - /* = -------------------------------------------------------------------------- = */ - else if ($req_tx = "mod_escrow") - { - $tran_cd = "00200000"; - - $c_PayPlus->mf_set_modx_data( "tno", $tno ); // KCP 원거래 거래번호 - $c_PayPlus->mf_set_modx_data( "mod_type", $mod_type ); // 원거래 변경 요청 종류 - $c_PayPlus->mf_set_modx_data( "mod_ip", $cust_ip ); // 변경 요청자 IP - $c_PayPlus->mf_set_modx_data( "mod_desc", $mod_desc ); // 변경 사유 - - if ($mod_type == "STE1") // 상태변경 타입이 [배송요청]인 경우 + if ($vcnt_yn == "Y") { - $c_PayPlus->mf_set_modx_data( "deli_numb", $_POST[ "deli_numb" ] ); // 운송장 번호 - $c_PayPlus->mf_set_modx_data( "deli_corp", $_POST[ "deli_corp" ] ); // 택배 업체명 - } - else if ($mod_type == "STE2" || $mod_type == "STE4") // 상태변경 타입이 [즉시취소] 또는 [취소]인 계좌이체, 가상계좌의 경우 - { - if ($vcnt_yn == "Y") - { - $c_PayPlus->mf_set_modx_data( "refund_account", $_POST[ "refund_account" ] ); // 환불수취계좌번호 - $c_PayPlus->mf_set_modx_data( "refund_nm", $_POST[ "refund_nm" ] ); // 환불수취계좌주명 - $c_PayPlus->mf_set_modx_data( "bank_code", $_POST[ "bank_code" ] ); // 환불수취은행코드 - } + $c_PayPlus->mf_set_modx_data( "refund_account", $_POST[ "refund_account" ] ); // 환불수취계좌번호 + $c_PayPlus->mf_set_modx_data( "refund_nm", $_POST[ "refund_nm" ] ); // 환불수취계좌주명 + $c_PayPlus->mf_set_modx_data( "bank_code", $_POST[ "bank_code" ] ); // 환불수취은행코드 } } - /* = -------------------------------------------------------------------------- = */ - /* = 03-3. 에스크로 상태변경 요청 END = */ - /* = -------------------------------------------------------------------------- = */ +} +/* = -------------------------------------------------------------------------- = */ +/* = 03-3. 에스크로 상태변경 요청 END = */ +/* = -------------------------------------------------------------------------- = */ - /* ------------------------------------------------------------------------------ */ - /* = 03. 처리 요청 정보 설정 END = */ - /* ============================================================================== */ +/* ------------------------------------------------------------------------------ */ +/* = 03. 처리 요청 정보 설정 END = */ +/* ============================================================================== */ - /* ============================================================================== */ - /* = 04. 실행 = */ - /* = -------------------------------------------------------------------------- = */ - if ( $tran_cd != "" ) +/* ============================================================================== */ +/* = 04. 실행 = */ +/* = -------------------------------------------------------------------------- = */ +if ( $tran_cd != "" ) +{ + $c_PayPlus->mf_do_tx( $trace_no, $g_conf_home_dir, $g_conf_site_cd, "", $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; // 결과 메시지 + /* $res_en_msg = $c_PayPlus->mf_get_res_data( "res_en_msg" ); // 결과 영문 메세지 */ +} +else +{ + $c_PayPlus->m_res_cd = "9562"; + $c_PayPlus->m_res_msg = "연동 오류|Payplus Plugin이 설치되지 않았거나 tran_cd값이 설정되지 않았습니다."; +} + +if ($res_cd != '0000') +{ + $res_msg = iconv("euc-kr", "utf-8", $res_msg); + + echo ""; + alert("$res_cd : $res_msg"); + exit; +} + +/* = -------------------------------------------------------------------------- = */ +/* = 04. 실행 END = */ +/* ============================================================================== */ + + +/* ============================================================================== */ +/* = 05. 승인 결과 값 추출 = */ +/* = -------------------------------------------------------------------------- = */ +if ( $req_tx == "pay" ) +{ + if( $res_cd == "0000" ) { - $c_PayPlus->mf_do_tx( $trace_no, $g_conf_home_dir, $g_conf_site_cd, "", $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); // 응답 전문 처리 + $tno = $c_PayPlus->mf_get_res_data( "tno" ); // KCP 거래 고유 번호 + $amount = $c_PayPlus->mf_get_res_data( "amount" ); // KCP 실제 거래 금액 + $pnt_issue = $c_PayPlus->mf_get_res_data( "pnt_issue" ); // 결제 포인트사 코드 - $res_cd = $c_PayPlus->m_res_cd; // 결과 코드 - $res_msg = $c_PayPlus->m_res_msg; // 결과 메시지 - /* $res_en_msg = $c_PayPlus->mf_get_res_data( "res_en_msg" ); // 결과 영문 메세지 */ - } - else - { - $c_PayPlus->m_res_cd = "9562"; - $c_PayPlus->m_res_msg = "연동 오류|Payplus Plugin이 설치되지 않았거나 tran_cd값이 설정되지 않았습니다."; - } - - if ($res_cd != '0000') - { - $res_msg = iconv("euc-kr", "utf-8", $res_msg); - - echo ""; - alert("$res_cd : $res_msg"); - exit; - } - - /* = -------------------------------------------------------------------------- = */ - /* = 04. 실행 END = */ - /* ============================================================================== */ - - - /* ============================================================================== */ - /* = 05. 승인 결과 값 추출 = */ - /* = -------------------------------------------------------------------------- = */ - if ( $req_tx == "pay" ) - { - if( $res_cd == "0000" ) +/* = -------------------------------------------------------------------------- = */ +/* = 05-1. 신용카드 승인 결과 처리 = */ +/* = -------------------------------------------------------------------------- = */ + if ( $use_pay_method == "100000000000" ) { - $tno = $c_PayPlus->mf_get_res_data( "tno" ); // KCP 거래 고유 번호 - $amount = $c_PayPlus->mf_get_res_data( "amount" ); // KCP 실제 거래 금액 - $pnt_issue = $c_PayPlus->mf_get_res_data( "pnt_issue" ); // 결제 포인트사 코드 + $card_cd = $c_PayPlus->mf_get_res_data( "card_cd" ); // 카드사 코드 + $card_name = $c_PayPlus->mf_get_res_data( "card_name" ); // 카드 종류 + $app_time = $c_PayPlus->mf_get_res_data( "app_time" ); // 승인 시간 + $app_no = $c_PayPlus->mf_get_res_data( "app_no" ); // 승인 번호 + $noinf = $c_PayPlus->mf_get_res_data( "noinf" ); // 무이자 여부 ( 'Y' : 무이자 ) + $quota = $c_PayPlus->mf_get_res_data( "quota" ); // 할부 개월 수 + $partcanc_yn = $c_PayPlus->mf_get_res_data( "partcanc_yn" ); // 부분취소 가능유무 + $card_bin_type_01 = $c_PayPlus->mf_get_res_data( "card_bin_type_01" ); // 카드구분1 + $card_bin_type_02 = $c_PayPlus->mf_get_res_data( "card_bin_type_02" ); // 카드구분2 - /* = -------------------------------------------------------------------------- = */ - /* = 05-1. 신용카드 승인 결과 처리 = */ - /* = -------------------------------------------------------------------------- = */ - if ( $use_pay_method == "100000000000" ) + /* = -------------------------------------------------------------- = */ + /* = 05-1.1. 복합결제(포인트+신용카드) 승인 결과 처리 = */ + /* = -------------------------------------------------------------- = */ + if ( $pnt_issue == "SCSK" || $pnt_issue == "SCWB" ) { - $card_cd = $c_PayPlus->mf_get_res_data( "card_cd" ); // 카드사 코드 - $card_name = $c_PayPlus->mf_get_res_data( "card_name" ); // 카드 종류 - $app_time = $c_PayPlus->mf_get_res_data( "app_time" ); // 승인 시간 - $app_no = $c_PayPlus->mf_get_res_data( "app_no" ); // 승인 번호 - $noinf = $c_PayPlus->mf_get_res_data( "noinf" ); // 무이자 여부 ( 'Y' : 무이자 ) - $quota = $c_PayPlus->mf_get_res_data( "quota" ); // 할부 개월 수 - $partcanc_yn = $c_PayPlus->mf_get_res_data( "partcanc_yn" ); // 부분취소 가능유무 - $card_bin_type_01 = $c_PayPlus->mf_get_res_data( "card_bin_type_01" ); // 카드구분1 - $card_bin_type_02 = $c_PayPlus->mf_get_res_data( "card_bin_type_02" ); // 카드구분2 - - /* = -------------------------------------------------------------- = */ - /* = 05-1.1. 복합결제(포인트+신용카드) 승인 결과 처리 = */ - /* = -------------------------------------------------------------- = */ - if ( $pnt_issue == "SCSK" || $pnt_issue == "SCWB" ) - { - $pt_idno = $c_PayPlus->mf_get_res_data ( "pt_idno" ); // 결제 및 인증 아이디 - $pnt_amount = $c_PayPlus->mf_get_res_data ( "pnt_amount" ); // 적립금액 or 사용금액 - $pnt_app_time = $c_PayPlus->mf_get_res_data ( "pnt_app_time" ); // 승인시간 - $pnt_app_no = $c_PayPlus->mf_get_res_data ( "pnt_app_no" ); // 승인번호 - $add_pnt = $c_PayPlus->mf_get_res_data ( "add_pnt" ); // 발생 포인트 - $use_pnt = $c_PayPlus->mf_get_res_data ( "use_pnt" ); // 사용가능 포인트 - $rsv_pnt = $c_PayPlus->mf_get_res_data ( "rsv_pnt" ); // 총 누적 포인트 - $total_amount = $amount + $pnt_amount; // 복합결제시 총 거래금액 - } + $pt_idno = $c_PayPlus->mf_get_res_data ( "pt_idno" ); // 결제 및 인증 아이디 + $pnt_amount = $c_PayPlus->mf_get_res_data ( "pnt_amount" ); // 적립금액 or 사용금액 + $pnt_app_time = $c_PayPlus->mf_get_res_data ( "pnt_app_time" ); // 승인시간 + $pnt_app_no = $c_PayPlus->mf_get_res_data ( "pnt_app_no" ); // 승인번호 + $add_pnt = $c_PayPlus->mf_get_res_data ( "add_pnt" ); // 발생 포인트 + $use_pnt = $c_PayPlus->mf_get_res_data ( "use_pnt" ); // 사용가능 포인트 + $rsv_pnt = $c_PayPlus->mf_get_res_data ( "rsv_pnt" ); // 총 누적 포인트 + $total_amount = $amount + $pnt_amount; // 복합결제시 총 거래금액 } + } - /* = -------------------------------------------------------------------------- = */ - /* = 05-2. 계좌이체 승인 결과 처리 = */ - /* = -------------------------------------------------------------------------- = */ - if ( $use_pay_method == "010000000000" ) - { - $app_time = $c_PayPlus->mf_get_res_data( "app_time" ); // 승인 시간 - $bank_name = $c_PayPlus->mf_get_res_data( "bank_name" ); // 은행명 - $bank_code = $c_PayPlus->mf_get_res_data( "bank_code" ); // 은행코드 - } - - /* = -------------------------------------------------------------------------- = */ - /* = 05-3. 가상계좌 승인 결과 처리 = */ - /* = -------------------------------------------------------------------------- = */ - if ( $use_pay_method == "001000000000" ) - { - $bankname = $c_PayPlus->mf_get_res_data( "bankname" ); // 입금할 은행 이름 - $depositor = $c_PayPlus->mf_get_res_data( "depositor" ); // 입금할 계좌 예금주 - $account = $c_PayPlus->mf_get_res_data( "account" ); // 입금할 계좌 번호 - $va_date = $c_PayPlus->mf_get_res_data( "va_date" ); // 가상계좌 입금마감시간 - } - - /* = -------------------------------------------------------------------------- = */ - /* = 05-4. 포인트 승인 결과 처리 = */ - /* = -------------------------------------------------------------------------- = */ - if ( $use_pay_method == "000100000000" ) - { - $pt_idno = $c_PayPlus->mf_get_res_data( "pt_idno" ); // 결제 및 인증 아이디 - $pnt_amount = $c_PayPlus->mf_get_res_data( "pnt_amount" ); // 적립금액 or 사용금액 - $pnt_app_time = $c_PayPlus->mf_get_res_data( "pnt_app_time" ); // 승인시간 - $pnt_app_no = $c_PayPlus->mf_get_res_data( "pnt_app_no" ); // 승인번호 - $add_pnt = $c_PayPlus->mf_get_res_data( "add_pnt" ); // 발생 포인트 - $use_pnt = $c_PayPlus->mf_get_res_data( "use_pnt" ); // 사용가능 포인트 - $rsv_pnt = $c_PayPlus->mf_get_res_data( "rsv_pnt" ); // 적립 포인트 - } - - /* = -------------------------------------------------------------------------- = */ - /* = 05-5. 휴대폰 승인 결과 처리 = */ - /* = -------------------------------------------------------------------------- = */ - if ( $use_pay_method == "000010000000" ) - { - $app_time = $c_PayPlus->mf_get_res_data( "hp_app_time" ); // 승인 시간 - $commid = $c_PayPlus->mf_get_res_data( "commid" ); // 통신사 코드 - $mobile_no = $c_PayPlus->mf_get_res_data( "mobile_no" ); // 휴대폰 번호 - } - - /* = -------------------------------------------------------------------------- = */ - /* = 05-6. 상품권 승인 결과 처리 = */ - /* = -------------------------------------------------------------------------- = */ - if ( $use_pay_method == "000000001000" ) - { - $app_time = $c_PayPlus->mf_get_res_data( "tk_app_time" ); // 승인 시간 - $tk_van_code = $c_PayPlus->mf_get_res_data( "tk_van_code" ); // 발급사 코드 - $tk_app_no = $c_PayPlus->mf_get_res_data( "tk_app_no" ); // 승인 번호 - } - - /* = -------------------------------------------------------------------------- = */ - /* = 05-7. 현금영수증 결과 처리 = */ - /* = -------------------------------------------------------------------------- = */ - $cash_yn = $c_PayPlus->mf_get_res_data( "cash_yn" ); // 현금영수증 등록여부 - $cash_authno = $c_PayPlus->mf_get_res_data( "cash_authno" ); // 현금 영수증 승인 번호 - $cash_tr_code = $c_PayPlus->mf_get_res_data( "cash_tr_code" ); // 현금영수증 등록구분 - - /* = -------------------------------------------------------------------------- = */ - /* = 05-8. 에스크로 여부 결과 처리 = */ - /* = -------------------------------------------------------------------------- = */ - $escw_yn = $c_PayPlus->mf_get_res_data( "escw_yn" ); // 에스크로 여부 - } - } - - /* = -------------------------------------------------------------------------- = */ - /* = 05. 승인 결과 처리 END = */ - /* ============================================================================== */ - - /* ============================================================================== */ - /* = 06. 승인 및 실패 결과 DB처리 = */ - /* = -------------------------------------------------------------------------- = */ - /* = 결과를 업체 자체적으로 DB처리 작업하시는 부분입니다. = */ - /* = -------------------------------------------------------------------------- = */ - - if ( $req_tx == "pay" ) - { - if( $res_cd == "0000" ) +/* = -------------------------------------------------------------------------- = */ +/* = 05-2. 계좌이체 승인 결과 처리 = */ +/* = -------------------------------------------------------------------------- = */ + if ( $use_pay_method == "010000000000" ) { - // 06-1-1. 신용카드 - if ( $use_pay_method == "100000000000" ) - { - // 06-1-1-1. 복합결제(신용카드 + 포인트) - if ( $pnt_issue == "SCSK" || $pnt_issue == "SCWB" ) - { - } - } - // 06-1-2. 계좌이체 - if ( $use_pay_method == "010000000000" ) - { - } - // 06-1-3. 가상계좌 - if ( $use_pay_method == "001000000000" ) - { - } - // 06-1-4. 포인트 - if ( $use_pay_method == "000100000000" ) - { - } - // 06-1-5. 휴대폰 - if ( $use_pay_method == "000010000000" ) - { - } - // 06-1-6. 상품권 - if ( $use_pay_method == "000000001000" ) - { - } - } + $app_time = $c_PayPlus->mf_get_res_data( "app_time" ); // 승인 시간 + $bank_name = $c_PayPlus->mf_get_res_data( "bank_name" ); // 은행명 + $bank_code = $c_PayPlus->mf_get_res_data( "bank_code" ); // 은행코드 + } - /* = -------------------------------------------------------------------------- = */ - /* = 06. 승인 및 실패 결과 DB처리 = */ - /* ============================================================================== */ - else if ( $res_cd != "0000" ) - { - } - } +/* = -------------------------------------------------------------------------- = */ +/* = 05-3. 가상계좌 승인 결과 처리 = */ +/* = -------------------------------------------------------------------------- = */ + if ( $use_pay_method == "001000000000" ) + { + $bankname = $c_PayPlus->mf_get_res_data( "bankname" ); // 입금할 은행 이름 + $depositor = $c_PayPlus->mf_get_res_data( "depositor" ); // 입금할 계좌 예금주 + $account = $c_PayPlus->mf_get_res_data( "account" ); // 입금할 계좌 번호 + $va_date = $c_PayPlus->mf_get_res_data( "va_date" ); // 가상계좌 입금마감시간 + } + +/* = -------------------------------------------------------------------------- = */ +/* = 05-4. 포인트 승인 결과 처리 = */ +/* = -------------------------------------------------------------------------- = */ + if ( $use_pay_method == "000100000000" ) + { + $pt_idno = $c_PayPlus->mf_get_res_data( "pt_idno" ); // 결제 및 인증 아이디 + $pnt_amount = $c_PayPlus->mf_get_res_data( "pnt_amount" ); // 적립금액 or 사용금액 + $pnt_app_time = $c_PayPlus->mf_get_res_data( "pnt_app_time" ); // 승인시간 + $pnt_app_no = $c_PayPlus->mf_get_res_data( "pnt_app_no" ); // 승인번호 + $add_pnt = $c_PayPlus->mf_get_res_data( "add_pnt" ); // 발생 포인트 + $use_pnt = $c_PayPlus->mf_get_res_data( "use_pnt" ); // 사용가능 포인트 + $rsv_pnt = $c_PayPlus->mf_get_res_data( "rsv_pnt" ); // 적립 포인트 + } + +/* = -------------------------------------------------------------------------- = */ +/* = 05-5. 휴대폰 승인 결과 처리 = */ +/* = -------------------------------------------------------------------------- = */ + if ( $use_pay_method == "000010000000" ) + { + $app_time = $c_PayPlus->mf_get_res_data( "hp_app_time" ); // 승인 시간 + $commid = $c_PayPlus->mf_get_res_data( "commid" ); // 통신사 코드 + $mobile_no = $c_PayPlus->mf_get_res_data( "mobile_no" ); // 휴대폰 번호 + } + +/* = -------------------------------------------------------------------------- = */ +/* = 05-6. 상품권 승인 결과 처리 = */ +/* = -------------------------------------------------------------------------- = */ + if ( $use_pay_method == "000000001000" ) + { + $app_time = $c_PayPlus->mf_get_res_data( "tk_app_time" ); // 승인 시간 + $tk_van_code = $c_PayPlus->mf_get_res_data( "tk_van_code" ); // 발급사 코드 + $tk_app_no = $c_PayPlus->mf_get_res_data( "tk_app_no" ); // 승인 번호 + } + +/* = -------------------------------------------------------------------------- = */ +/* = 05-7. 현금영수증 결과 처리 = */ +/* = -------------------------------------------------------------------------- = */ + $cash_yn = $c_PayPlus->mf_get_res_data( "cash_yn" ); // 현금영수증 등록여부 + $cash_authno = $c_PayPlus->mf_get_res_data( "cash_authno" ); // 현금 영수증 승인 번호 + $cash_tr_code = $c_PayPlus->mf_get_res_data( "cash_tr_code" ); // 현금영수증 등록구분 + +/* = -------------------------------------------------------------------------- = */ +/* = 05-8. 에스크로 여부 결과 처리 = */ +/* = -------------------------------------------------------------------------- = */ + $escw_yn = $c_PayPlus->mf_get_res_data( "escw_yn" ); // 에스크로 여부 + } +} + +/* = -------------------------------------------------------------------------- = */ +/* = 05. 승인 결과 처리 END = */ +/* ============================================================================== */ ?> \ No newline at end of file diff --git a/shop/kcp/pp_ax_hub_cancel.php b/shop/kcp/pp_ax_hub_cancel.php new file mode 100644 index 000000000..c1dda792c --- /dev/null +++ b/shop/kcp/pp_ax_hub_cancel.php @@ -0,0 +1,73 @@ +mf_clear(); + + $tran_cd = "00200000"; + + /* ============================================================================== */ + /* = 07-1.자동취소시 에스크로 거래인 경우 = */ + /* = -------------------------------------------------------------------------- = */ + // 취소시 사용하는 mod_type + $bSucc_mod_type = ""; + + // 에스크로 가상계좌 건의 경우 가상계좌 발급취소(STE5) + if ( $escw_yn == "Y" && $use_pay_method == "001000000000" ) + { + $bSucc_mod_type = "STE5"; + } + // 에스크로 가상계좌 이외 건은 즉시취소(STE2) + else if ( $escw_yn == "Y" ) + { + $bSucc_mod_type = "STE2"; + } + // 에스크로 거래 건이 아닌 경우(일반건)(STSC) + else + { + $bSucc_mod_type = "STSC"; + } + /* = -------------------------------------------------------------------------- = */ + /* = 07-1. 자동취소시 에스크로 거래인 경우 처리 END = */ + /* = ========================================================================== = */ + + $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", "가맹점 결과 처리 오류 - 가맹점에서 취소 요청" ); // 변경 사유 + + $c_PayPlus->mf_do_tx( $tno, $g_conf_home_dir, $g_conf_site_cd, + "", $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; + } + } + } // End of [res_cd = "0000"] + /* ============================================================================== */ +?> \ No newline at end of file diff --git a/shop/kcp/pp_ax_hub_result.php b/shop/kcp/pp_ax_hub_result.php new file mode 100644 index 000000000..ff3845be9 --- /dev/null +++ b/shop/kcp/pp_ax_hub_result.php @@ -0,0 +1,133 @@ + \ No newline at end of file diff --git a/shop/kcp/proc_win.html b/shop/kcp/proc_win.html new file mode 100644 index 000000000..2d8194444 --- /dev/null +++ b/shop/kcp/proc_win.html @@ -0,0 +1,17 @@ + + + + ó + + + + + + + \ No newline at end of file diff --git a/shop/orderform.php b/shop/orderform.php index 7529e3d39..53e494c47 100644 --- a/shop/orderform.php +++ b/shop/orderform.php @@ -27,12 +27,343 @@ include_once('./_head.php'); $s_page = 'orderform.php'; $s_uq_id = $tmp_uq_id; include_once('./cartsub.inc.php'); + +// 새로운 주문번호 생성 +if(!get_session('ss_order_uniqid')) { + set_session('ss_order_uniqid', get_uniqid()); +} +$od_uq_id = get_session('ss_order_uniqid'); + +if (file_exists("./settle_{$default['de_card_pg']}.inc.php")) { + include "./settle_{$default['de_card_pg']}.inc.php"; +} + +$good_info = ''; + +// 상품수만큼 정보 필드 미리 만들어둠 +for($k=0;$itemlist = sql_fetch_array($result); $k++) { + // 에스크로 상품정보 + if ($k>0) + $good_info .= chr(30); + $good_info .= "seq=".($k+1).chr(31); + $good_info .= "ordr_numb={$od_uq_id}_".sprintf("%04d", $k).chr(31); + $good_info .= "good_name=".addslashes(preg_replace("/\'|\"|\||\,|\&|\;/", "", $itemlist[$k]['it_name'])).chr(31); + $good_info .= "good_cntx=".$itemlist[$k]['qty'].chr(31); + $good_info .= "good_amtx=".$itemlist[$k]['amount'].chr(31); + + // 상품명 + if($k == 0) { + $goods = preg_replace("/\'|\"|\||\,|\&|\;/", "", $itemlist[$k]['it_name']); + } +} + +if($goods_count > 1) { + $goods .= "외 ".($goods_count - 1); +} + +$good_mny = (int)$tot_sell_amount + (int)$send_cost; + +$order_action_url = G4_HTTPS_SHOP_URL.'/orderformupdate.php'; ?> -
+ + + + + + + + + + + + + 카드결제시 결제창에 일시불부터 5개월까지 선택가능 + */ +?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + '> + + + + + + + + + + + + + */ + + /* 신용카드 결제시 OK캐쉬백 적립 여부를 묻는 창을 설정하는 파라미터 입니다 + OK캐쉬백 포인트 가맹점의 경우에만 창이 보여집니다 + */ + + /* 고정 할부 개월 수 선택 + value값을 "7" 로 설정했을 경우 => 카드결제시 결제창에 할부 7개월만 선택가능 + */ + + /* 무이자 옵션 + ※ 설정할부 (가맹점 관리자 페이지에 설정 된 무이자 설정을 따른다) - "" 로 설정 + ※ 일반할부 (KCP 이벤트 이외에 설정 된 모든 무이자 설정을 무시한다) - "N" 로 설정 + ※ 무이자 할부 (가맹점 관리자 페이지에 설정 된 무이자 이벤트 중 원하는 무이자 설정을 세팅한다) - "Y" 로 설정 + */ + + + /* 무이자 설정 + ※ 주의 1 : 할부는 결제금액이 50,000 원 이상일 경우에만 가능 + ※ 주의 2 : 무이자 설정값은 무이자 옵션이 Y일 경우에만 결제 창에 적용 + 예) 전 카드 2,3,6개월 무이자(국민,비씨,엘지,삼성,신한,현대,롯데,외환) : ALL-02:03:04 + BC 2,3,6개월, 국민 3,6개월, 삼성 6,9개월 무이자 : CCBC-02:03:06,CCKM-03:06,CCSS-03:06:04 + */ + + /* 사용카드 설정 여부 파라미터 입니다.(통합결제창 노출 유무) + + /* 사용카드 설정 파라미터 입니다. (해당 카드만 결제창에 보이게 설정하는 파라미터입니다. used_card_YN 값이 Y일때 적용됩니다. + / + + /* 해외카드 구분하는 파라미터 입니다.(해외비자, 해외마스터, 해외JCB로 구분하여 표시) + + + /* 가상계좌 은행 선택 파라미터 + ※ 해당 은행을 결제창에서 보이게 합니다.(은행코드는 매뉴얼을 참조) */ +?> + + */ + + + /* 가상계좌 입금 시간 설정하는 파라미터 + HHMMSS형식으로 입력하시기 바랍니다 + 설정을 안하시는경우 기본적으로 23시59분59초가 세팅이 됩니다 + */ + + + /* 포인트 결제시 복합 결제(신용카드+포인트) 여부를 결정할 수 있습니다.- N 일경우 복합결제 사용안함 + */ + + + /* 문화상품권 결제시 가맹점 고객 아이디 설정을 해야 합니다.(필수 설정) + */ + + + /* 현금영수증 등록 창을 출력 여부를 설정하는 파라미터 입니다 + ※ Y : 현금영수증 등록 창 출력 + ※ N : 현금영수증 등록 창 출력 안함 + ※ 주의 : 현금영수증 사용 시 KCP 상점관리자 페이지에서 현금영수증 사용 동의를 하셔야 합니다 */ +?> + + + + */ +?> + + + + + */ + + /* = -------------------------------------------------------------------------- = */ + /* = 4. 옵션 정보 END = */ + /* ============================================================================== */ +?> + @@ -396,11 +727,13 @@ function forderform_check(f) var settle_case = document.getElementsByName("od_settle_case"); var settle_check = false; + var settle_method = ""; for (i=0; i + // pay_method 설정 + switch(settle_method) + { + case "계좌이체": + f.pay_method.value = "010000000000"; + break; + case "가상계좌": + f.pay_method.value = "001000000000"; + break; + case "휴대폰": + f.pay_method.value = "000010000000"; + break; + case "신용카드": + f.pay_method.value = "100000000000"; + break; + default: + f.pay_method.value = "무통장"; + break; + } + // kcp 결제정보설정 + f.buyr_name.value = f.od_name.value; + f.buyr_mail.value = f.od_email.value; + f.buyr_tel1.value = f.od_tel.value; + f.buyr_tel2.value = f.od_hp.value; + f.rcvr_name.value = f.od_b_name.value; + f.rcvr_tel1.value = f.od_b_tel.value; + f.rcvr_tel2.value = f.od_b_hp.value; + f.rcvr_mail.value = f.od_email.value; + f.rcvr_zipx.value = f.od_b_zip1.value + f.od_b_zip2.value; + f.rcvr_add1.value = f.od_b_addr1.value; + f.rcvr_add2.value = f.od_b_addr2.value; return true; } diff --git a/shop/orderformupdate.php b/shop/orderformupdate.php index 824bc199e..4066de718 100644 --- a/shop/orderformupdate.php +++ b/shop/orderformupdate.php @@ -99,53 +99,103 @@ if ($is_member && $config['cf_use_point']) if (($i_temp_point > (int)$temp_point || $i_temp_point < 0) && $config['cf_use_point']) die("Error..."); -$i_amount = $i_amount + $i_send_cost - $i_temp_point; - -if ($od_settle_case == "무통장") -{ - $od_receipt_bank = $i_amount; - $od_temp_point = $i_temp_point; - $od_receipt_point = $i_temp_point; -} -else if ($od_settle_case == "계좌이체" || $od_settle_case == "가상계좌") -{ - $od_receipt_bank = $i_amount; - $od_temp_point = $i_temp_point; - $od_receipt_point = 0; - - $od_bank_account = $od_settle_case; - $od_deposit_name = $od_name; -} -else if ($od_settle_case == "휴대폰") -{ - $od_receipt_hp = $i_amount; - $od_temp_point = $i_temp_point; - $od_receipt_point = 0; -} -else if ($od_settle_case == "신용카드") -{ - $od_receipt_card = $i_amount; - $od_temp_point = $i_temp_point; - $od_receipt_point = 0; -} -else -{ - die("od_settle_case Error!!!"); -} - if ($od_temp_point) { if ($member['mb_point'] < $od_temp_point) alert("회원님의 포인트가 부족하여 포인트로 결제 할 수 없습니다."); } -if ($member['mb_id']) - $od_pwd = $member['mb_pwd']; +$i_amount = $i_amount + $i_send_cost - $i_temp_point; + +$same_amount_check = false; +if ($od_settle_case == "무통장") +{ + $od_temp_bank = $i_amount; + $od_temp_point = $i_temp_point; + $od_receipt_point = $i_temp_point; + $od_receipt_bank = 0; +} +else if ($od_settle_case == "계좌이체") +{ + include "./kcp/pp_ax_hub.php"; + + $od_temp_bank = $i_amount; + $od_temp_point = $i_temp_point; + + $od_receipt_bank = $amount; + $od_receipt_point = $i_temp_point; + $od_receipt_time = preg_replace("/([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})/", "\\1-\\2-\\3 \\4:\\5:\\6", $app_time); + $od_bank_account = $od_settle_case; + $od_deposit_name = $od_name; + $bank_name = iconv("cp949", "utf8", $bank_name); + $od_bank_account = $bank_name; + $same_amount_check = true; + $pg_receipt_amount = $amount; +} +else if ($od_settle_case == "가상계좌") +{ + include "./kcp/pp_ax_hub.php"; + + $od_temp_bank = $i_amount; + $od_temp_point = $i_temp_point; + $od_receipt_point = 0; + + $od_receipt_amount = 0; + $bankname = iconv("cp949", "utf8", $bankname); + $depositor = iconv("cp949", "utf8", $depositor); + $od_bank_account = $bankname.' '.$account.' '.$depositor; + $od_deposit_name = $od_name; +} +else if ($od_settle_case == "휴대폰") +{ + include "./kcp/pp_ax_hub.php"; + + $od_temp_bank = $i_amount; + $od_temp_point = $i_temp_point; + + $od_receipt_hp = $amount; + $od_receipt_point = $i_temp_point; + $od_receipt_time = preg_replace("/([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})/", "\\1-\\2-\\3 \\4:\\5:\\6", $app_time); + $od_bank_account = $commid.' '.$mobile_no; + $same_amount_check = true; + $pg_receipt_amount = $amount; +} +else if ($od_settle_case == "신용카드") +{ + include "./kcp/pp_ax_hub.php"; + + $od_temp_card = $i_amount; + $od_temp_point = $i_temp_point; + + $od_receipt_card = $amount; + $od_receipt_point = $i_temp_point; + $od_receipt_time = preg_replace("/([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})/", "\\1-\\2-\\3 \\4:\\5:\\6", $app_time); + $card_name = iconv("cp949", "utf8", $card_name); + $od_bank_account = $card_name; + $same_amount_check = true; + $pg_receipt_amount = $amount; +} +else +{ + die("od_settle_case Error!!!"); +} + +// 주문금액과 결제금액이 일치하는지 체크 +if($same_amount_check) { + if((int)$i_amount !== (int)$pg_receipt_amount) { + include "./kcp/pp_ax_hub_cancel.php"; // 결제취소처리 + + die("Receipt Amount Error"); + } +} + +if ($is_member) + $od_pwd = $member['mb_password']; else $od_pwd = sql_password($_POST['od_pwd']); -// 새로운 주문번호를 얻는다. -$od_id = get_new_od_id(); +// 주문번호를 얻는다. +$od_id = get_session('ss_order_uniqid'); // 주문서에 입력 $sql = " insert {$g4['yc4_order_table']} @@ -175,9 +225,9 @@ $sql = " insert {$g4['yc4_order_table']} od_temp_card = '$od_receipt_card', od_temp_hp = '$od_receipt_hp', od_temp_point = '$od_temp_point', - od_receipt_bank = '0', - od_receipt_card = '0', - od_receipt_hp = '0', + od_receipt_bank = '$od_receipt_bank', + od_receipt_card = '$od_receipt_card', + od_receipt_hp = '$od_receipt_hp', od_receipt_point = '$od_receipt_point', od_bank_account = '$od_bank_account', od_shop_memo = '', @@ -202,7 +252,7 @@ $sql = "update {$g4['yc4_cart_table']} sql_query($sql); // 회원이면서 포인트를 사용했다면 포인트 테이블에 사용을 추가 -if ($member['mb_id'] && $od_receipt_point) { +if ($is_member && $od_receipt_point) { insert_point($member['mb_id'], (-1) * $od_receipt_point, "주문번호 $od_id 결제"); } @@ -210,9 +260,7 @@ $od_memo = nl2br(htmlspecialchars2(stripslashes($od_memo))) . " "; include_once('./ordermail1.inc.php'); - -if ($od_settle_case == "무통장") - include_once('./ordermail2.inc.php'); +include_once('./ordermail2.inc.php'); // SMS BEGIN -------------------------------------------------------- // 쇼핑몰 운영자가 수신자가 됨 @@ -248,5 +296,5 @@ if (get_session("ss_direct")) else set_session("ss_uq_id", ""); -goto_url(G4_SHOP_URL.'/orderconfirm.php'); +goto_url(G4_SHOP_URL.'./orderinquiryview.php?od_id='.$od_id.'&uq_id='.$tmp_uq_id); ?> diff --git a/shop/settle_kcp.inc.php b/shop/settle_kcp.inc.php index a64c88765..61979ae78 100644 --- a/shop/settle_kcp.inc.php +++ b/shop/settle_kcp.inc.php @@ -2,14 +2,15 @@ if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가 $test = ""; + if ($default['de_card_test']) { if ($default['de_escrow_use'] == 1) { - // 일반결제 테스트 + // 에스크로결제 테스트 $default['de_kcp_mid'] = "T0007"; $default['de_kcp_site_key'] = '2.mDT7R4lUIfHlHq4byhYjf__'; } else { - // 에스크로결제 테스트 + // 일반결제 테스트 $default['de_kcp_mid'] = "T0000"; $default['de_kcp_site_key'] = '3grptw1.zW0GSo4PQdaGvsF__'; } @@ -20,231 +21,8 @@ else { $default['de_kcp_mid'] = "SR".$default['de_kcp_mid']; } -$js_url = "https://pay.kcp.co.kr/plugin/payplus{$test}_un.js"; -/* - * hashdata 암호화 (수정하지 마세요) - * - * hashdata 암호화 적용( site_cd + ordr_idxx + good_mny + timestamp + site_key ) - * site_cd : 사이트코드 - * ordr_idxx : 주문번호 - * good_mny : 결제금액 - * timestamp : 타임스탬프 - * site_key : 사이트키 - * - * hashdata 검증을 위한 - * KCP에서 발급한 사이트키(site_key)를 반드시 입력해 주시기 바랍니다. - */ +$g_conf_js_url = "https://pay.kcp.co.kr/plugin/payplus{$test}_un.js"; -$site_cd = trim($default['de_kcp_mid']); -$ordr_idxx = trim($od['od_id']); -$good_mny = (int)$settle_amount; -$timestamp = G4_SERVER_TIME; -$serverkey = $_SERVER['SERVER_SOFTWARE'].$_SERVER['SERVER_ADDR']; // 사용자가 알수 없는 고유한 값들 -//echo $serverkey; -$hashdata = md5($site_cd.$ordr_idxx.$good_mny.$timestamp.$serverkey); -?> - - - - - - - - -'> -'> -'> - - - - - - - - - -' > -'> -'> -'> - - - -'> -'> -'> -'> -'> -'> -'> - -1) - $good_info .= chr(30); - $good_info .= "seq=".$i.chr(31); - $good_info .= "ordr_numb={$ordr_idxx}_".sprintf("%04d", $i).chr(31); - $good_info .= "good_name=".addslashes($row['it_name']).chr(31); - $good_info .= "good_cntx=".$row['ct_qty'].chr(31); - $good_info .= "good_amtx=".$row['ct_amount'].chr(31); -} -?> - - - - - - - - - -'> - -'> - - - - - - - - - - - - -'> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- \ No newline at end of file +$g_conf_log_level = "3"; // 변경불가 +$g_conf_gw_port = "8090"; // 포트번호(변경불가)