diff --git a/shop/kcp/pp_cli_hub.php b/shop/kcp/pp_cli_hub.php new file mode 100644 index 000000000..b15a71a5d --- /dev/null +++ b/shop/kcp/pp_cli_hub.php @@ -0,0 +1,383 @@ + +mf_clear(); + /* ============================================================================== */ + + + /* ============================================================================== */ + /* = 03. 처리 요청 정보 설정, 실행 = */ + /* = -------------------------------------------------------------------------- = */ + + /* = -------------------------------------------------------------------------- = */ + /* = 03-1. 승인 요청 = */ + /* = -------------------------------------------------------------------------- = */ + // 업체 환경 정보 + if ( $req_tx == "pay" ) + { + $tx_cd = "07010000"; // 현금영수증 등록 요청 + + // 현금영수증 정보 + $rcpt_data_set .= $c_PayPlus->mf_set_data_us( "user_type", $g_conf_user_type ); + $rcpt_data_set .= $c_PayPlus->mf_set_data_us( "trad_time", $trad_time ); + $rcpt_data_set .= $c_PayPlus->mf_set_data_us( "tr_code", $tr_code ); + $rcpt_data_set .= $c_PayPlus->mf_set_data_us( "id_info", $id_info ); + $rcpt_data_set .= $c_PayPlus->mf_set_data_us( "amt_tot", $amt_tot ); + $rcpt_data_set .= $c_PayPlus->mf_set_data_us( "amt_sup", $amt_sup ); + $rcpt_data_set .= $c_PayPlus->mf_set_data_us( "amt_svc", $amt_svc ); + $rcpt_data_set .= $c_PayPlus->mf_set_data_us( "amt_tax", $amt_tax ); + $rcpt_data_set .= $c_PayPlus->mf_set_data_us( "pay_type", "PAXX" ); // 선 결제 서비스 구분(PABK - 계좌이체, PAVC - 가상계좌, PAXX - 기타) + //$rcpt_data_set .= $c_PayPlus->mf_set_data_us( "pay_trade_no", $pay_trade_no ); // 결제 거래번호(PABK, PAVC일 경우 필수) + //$rcpt_data_set .= $c_PayPlus->mf_set_data_us( "pay_tx_id", $pay_tx_id ); // 가상계좌 입금통보 TX_ID(PAVC일 경우 필수) + + // 주문 정보 + $c_PayPlus->mf_set_ordr_data( "ordr_idxx", $ordr_idxx ); + $c_PayPlus->mf_set_ordr_data( "good_name", $good_name ); + $c_PayPlus->mf_set_ordr_data( "buyr_name", $buyr_name ); + $c_PayPlus->mf_set_ordr_data( "buyr_tel1", $buyr_tel1 ); + $c_PayPlus->mf_set_ordr_data( "buyr_mail", $buyr_mail ); + $c_PayPlus->mf_set_ordr_data( "comment", $comment ); + + // 가맹점 정보 + $corp_data_set .= $c_PayPlus->mf_set_data_us( "corp_type", $corp_type ); + + if ( $corp_type == "1" ) // 입점몰인 경우 판매상점 DATA 전문 생성 + { + $corp_data_set .= $c_PayPlus->mf_set_data_us( "corp_tax_type", $corp_tax_type ); + $corp_data_set .= $c_PayPlus->mf_set_data_us( "corp_tax_no", $corp_tax_no ); + $corp_data_set .= $c_PayPlus->mf_set_data_us( "corp_sell_tax_no",$corp_tax_no ); + $corp_data_set .= $c_PayPlus->mf_set_data_us( "corp_nm", $corp_nm ); + $corp_data_set .= $c_PayPlus->mf_set_data_us( "corp_owner_nm", $corp_owner_nm ); + $corp_data_set .= $c_PayPlus->mf_set_data_us( "corp_addr", $corp_addr ); + $corp_data_set .= $c_PayPlus->mf_set_data_us( "corp_telno", $corp_telno ); + } + + $c_PayPlus->mf_set_ordr_data( "rcpt_data", $rcpt_data_set ); + $c_PayPlus->mf_set_ordr_data( "corp_data", $corp_data_set ); + } + + /* = -------------------------------------------------------------------------- = */ + /* = 03-2. 취소 요청 = */ + /* = -------------------------------------------------------------------------- = */ + else if ( $req_tx == "mod" ) + { + if ( $mod_type == "STSQ" ) + { + $tx_cd = "07030000"; // 조회 요청 + } + else + { + $tx_cd = "07020000"; // 취소 요청 + } + + $c_PayPlus->mf_set_modx_data( "mod_type", $mod_type ); // 원거래 변경 요청 종류 + $c_PayPlus->mf_set_modx_data( "mod_value", $mod_value ); + $c_PayPlus->mf_set_modx_data( "mod_gubn", $mod_gubn ); + $c_PayPlus->mf_set_modx_data( "trad_time", $trad_time ); + + if ( $mod_type == "STPC" ) // 부분취소 + { + $c_PayPlus->mf_set_modx_data( "mod_mny", $mod_mny ); + $c_PayPlus->mf_set_modx_data( "rem_mny", $rem_mny ); + } + } + /* ============================================================================== */ + + + /* ============================================================================== */ + /* = 03-3. 실행 = */ + /* ------------------------------------------------------------------------------ */ + if ( strlen($tx_cd) > 0 ) + { + $c_PayPlus->mf_do_tx( "", $g_conf_home_dir, $g_conf_site_id, + "", $tx_cd, "", + $g_conf_pa_url, $g_conf_pa_port, "payplus_cli_slib", + $ordr_idxx, $cust_ip, $g_conf_log_level, + "", $g_conf_tx_mode ); + } + else + { + $c_PayPlus->m_res_cd = "9562"; + $c_PayPlus->m_res_msg = "연동 오류"; + } + $res_cd = $c_PayPlus->m_res_cd; // 결과 코드 + $res_msg = $c_PayPlus->m_res_msg; // 결과 메시지 + /* ============================================================================== */ + + + /* ============================================================================== */ + /* = 04. 승인 결과 처리 = */ + /* = -------------------------------------------------------------------------- = */ + if ( $req_tx == "pay" ) + { + if ( $res_cd == "0000" ) + { + $cash_no = $c_PayPlus->mf_get_res_data( "cash_no" ); // 현금영수증 거래번호 + $receipt_no = $c_PayPlus->mf_get_res_data( "receipt_no" ); // 현금영수증 승인번호 + $app_time = $c_PayPlus->mf_get_res_data( "app_time" ); // 승인시간(YYYYMMDDhhmmss) + $reg_stat = $c_PayPlus->mf_get_res_data( "reg_stat" ); // 등록 상태 코드 + $reg_desc = $c_PayPlus->mf_get_res_data( "reg_desc" ); // 등록 상태 설명 + + /* = -------------------------------------------------------------------------- = */ + /* = 04-1. 승인 결과를 업체 자체적으로 DB 처리 작업하시는 부분입니다. = */ + /* = -------------------------------------------------------------------------- = */ + /* = 승인 결과를 DB 작업 하는 과정에서 정상적으로 승인된 건에 대해 = */ + /* = DB 작업을 실패하여 DB update 가 완료되지 않은 경우, 자동으로 = */ + /* = 승인 취소 요청을 하는 프로세스가 구성되어 있습니다. = */ + /* = DB 작업이 실패 한 경우, bSucc 라는 변수(String)의 값을 "false" = */ + /* = 로 세팅해 주시기 바랍니다. (DB 작업 성공의 경우에는 "false" 이외의 = */ + /* = 값을 세팅하시면 됩니다.) = */ + /* = -------------------------------------------------------------------------- = */ + $bSucc = ""; // DB 작업 실패일 경우 "false" 로 세팅 + + $sql = " update {$g4['yc4_order_table']} + set od_cash_no = '$cash_no', + od_cash_receipt_no = '$receipt_no', + od_cash_app_time = '$app_time', + od_cash_reg_stat = '$reg_stat', + od_cash_reg_desc = '".iconv("cp949", "utf-8", $reg_desc)."', + od_cash_tr_code = '$tr_code', + od_cash_id_info = '$id_info', + od_cash = '1' + where od_id = '$ordr_idxx' "; + $result = sql_query($sql); + if (!$result) $bSucc = "false"; + + /* = -------------------------------------------------------------------------- = */ + /* = 04-2. DB 작업 실패일 경우 자동 승인 취소 = */ + /* = -------------------------------------------------------------------------- = */ + if ( $bSucc == "false" ) + { + $c_PayPlus->mf_clear(); + + $tx_cd = "07020000"; // 취소 요청 + + $c_PayPlus->mf_set_modx_data( "mod_type", "STSC" ); // 원거래 변경 요청 종류 + $c_PayPlus->mf_set_modx_data( "mod_value", $cash_no ); + $c_PayPlus->mf_set_modx_data( "mod_gubn", "MG01" ); + $c_PayPlus->mf_set_modx_data( "trad_time", $trad_time ); + + $c_PayPlus->mf_do_tx( "", $g_conf_home_dir, $g_conf_site_id, + "", $tx_cd, "", + $g_conf_pa_url, $g_conf_pa_port, "payplus_cli_slib", + $ordr_idxx, $cust_ip, $g_conf_log_level, + "", $g_conf_tx_mode ); + + $res_cd = $c_PayPlus->m_res_cd; + $res_msg = $c_PayPlus->m_res_msg; + } + + } // End of [res_cd = "0000"] + + /* = -------------------------------------------------------------------------- = */ + /* = 04-3. 등록 실패를 업체 자체적으로 DB 처리 작업하시는 부분입니다. = */ + /* = -------------------------------------------------------------------------- = */ + else + { + } + } + /* ============================================================================== */ + + + /* ============================================================================== */ + /* = 05. 변경 결과 처리 = */ + /* = -------------------------------------------------------------------------- = */ + else if ( $req_tx == "mod" ) + { + if ( $res_cd == "0000" ) + { + $cash_no = $c_PayPlus->mf_get_res_data( "cash_no" ); // 현금영수증 거래번호 + $receipt_no = $c_PayPlus->mf_get_res_data( "receipt_no" ); // 현금영수증 승인번호 + $app_time = $c_PayPlus->mf_get_res_data( "app_time" ); // 승인시간(YYYYMMDDhhmmss) + $reg_stat = $c_PayPlus->mf_get_res_data( "reg_stat" ); // 등록 상태 코드 + $reg_desc = $c_PayPlus->mf_get_res_data( "reg_desc" ); // 등록 상태 설명 + } + + /* = -------------------------------------------------------------------------- = */ + /* = 05-1. 변경 실패를 업체 자체적으로 DB 처리 작업하시는 부분입니다. = */ + /* = -------------------------------------------------------------------------- = */ + else + { + } + } + /* ============================================================================== */ + + + /* ============================================================================== */ + /* = 06. 인스턴스 CleanUp = */ + /* = -------------------------------------------------------------------------- = */ + $c_PayPlus->mf_clear(); + /* ============================================================================== */ + + + /* ============================================================================== */ + /* = 07. 폼 구성 및 결과페이지 호출 = */ + /* ============================================================================== */ +?> + + + + + + +
+ + + + + "> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "> + +
+ + \ No newline at end of file diff --git a/shop/kcp/pp_cli_hub_lib.php b/shop/kcp/pp_cli_hub_lib.php new file mode 100644 index 000000000..b7e4242ec --- /dev/null +++ b/shop/kcp/pp_cli_hub_lib.php @@ -0,0 +1,256 @@ +m_payx_data="payx_data="; + $this->m_payx_common=""; + $this->m_payx_card=""; + $this->m_ordr_data=""; + $this->m_rcvr_data=""; + $this->m_escw_data=""; + $this->m_modx_data=""; + $this->m_encx_data=""; + } + + function mf_init( $mode ) + { + if ( $mode == "1" ) + { + if ( !extension_loaded( 'pp_cli_dl_php' ) ) + { + dl( "pp_cli_dl_php.so" ); + } + } + } + + function mf_clear() + { + $this->m_payx_data="payx_data="; + $this->m_payx_common=""; + $this->m_payx_card=""; + $this->m_ordr_data=""; + $this->m_rcvr_data=""; + $this->m_escw_data=""; + $this->m_modx_data=""; + $this->m_encx_data=""; + } + + function mf_gen_trace_no( $site_cd, $ip, $mode ) + { + if ( $mode == "1" ) + { + $trace_no = lfPP_CLI_DL__gen_trace_no( $site_cd, $ip ); + } + else + { + $trace_no = ""; + } + + return $trace_no; + } + + function mf_set_data_us( $name, $val ) + { + $data = ""; + + if ( $name != "" && $val != "" ) + { + $data = $name . '=' . $val . chr( 31 ); + } + + return $data; + } + + function mf_add_payx_data( $pay_type, $payx_data ) + { + $this->m_payx_data .= ( $pay_type . '=' . $payx_data . chr( 30 ) ); + } + + function mf_set_ordr_data( $name, $val ) + { + if ( $val != "" ) + { + $this->m_ordr_data .= ( $name . '=' . $val . chr( 31 ) ); + } + } + + function mf_set_rcvr_data( $name, $val ) + { + if ( $val != "" ) + { + $this->m_rcvr_data .= ( $name . '=' . $val . chr( 31 ) ); + } + } + + function mf_set_escw_data( $name, $val ) + { + if ( $val != "" ) + { + $this->m_escw_data .= ( $name . '=' . $val . chr( 29 ) ); + } + } + + function mf_set_modx_data( $name, $val ) + { + if ( $val != "" ) + { + $this->m_modx_data .= ( $name . '=' . $val . chr( 31 ) ); + } + } + + /* -------------------------------------------------------------------- */ + /* - FUNC : 지불 처리 함수 - */ + /* -------------------------------------------------------------------- */ + function mf_do_tx( $trace_no, $home_dir, $site_cd, + $site_key, $tx_cd, $pub_key_str, + $pa_url, $pa_port, $user_agent, + $ordr_idxx, $cust_ip, + $log_level, $opt, $mode ) + { + $payx_data = $this->m_payx_data; + + $ordr_data = $this->mf_get_data( "ordr_data", $this->m_ordr_data ); + $rcvr_data = $this->mf_get_data( "rcvr_data", $this->m_rcvr_data ); + $escw_data = $this->mf_get_data( "escw_data", $this->m_escw_data ); + $modx_data = $this->mf_get_data( "mod_data", $this->m_modx_data ); + + if ( $mode == "1" ) + { + $res_data = lfPP_CLI_DL__do_tx_2( $trace_no, $home_dir, $site_cd, + $site_key, $tx_cd, $pub_key_str, + $pa_url, $pa_port, $user_agent, + $ordr_idxx, + $payx_data, $ordr_data, + $rcvr_data, $escw_data, + $modx_data, + $this->m_encx_data, $this->m_encx_info, + $log_level, $opt ); + + } + else + { + $res_data = $this->mf_exec( $home_dir . "/bin/pp_cli", + "-h", + "home=" . $home_dir . "," . + "site_cd=" . $site_cd . "," . + "site_key=" . $site_key . "," . + "tx_cd=" . $tx_cd . "," . + "pa_url=" . $pa_url . "," . + "pa_port=" . $pa_port . "," . + "ordr_idxx=" . $ordr_idxx . "," . + "payx_data=" . $payx_data . "," . + "ordr_data=" . $ordr_data . "," . + "rcvr_data=" . $rcvr_data . "," . + "escw_data=" . $escw_data . "," . + "modx_data=" . $modx_data . "," . + "enc_data=" . $this->m_encx_data . "," . + "enc_info=" . $this->m_encx_info . "," . + "trace_no=" . $trace_no . "," . + "cust_ip=" . $cust_ip . "," . + "log_level=" . $log_level . "," . + "opt=" . $opt . "" ); + + if ( $res_data == "" ) + { + $res_data = "res_cd=9502" . chr( 31 ) . "res_msg=연동 모듈 호출 오류"; + } + } + + parse_str( str_replace( chr( 31 ), "&", $res_data ), $this->m_res_data ); + + $this->m_res_cd = $this->m_res_data[ "res_cd" ]; + $this->m_res_msg = $this->m_res_data[ "res_msg" ]; + } + + /* -------------------------------------------------------------------- */ + /* - FUNC : 처리 결과 값을 리턴하는 함수 - */ + /* -------------------------------------------------------------------- */ + function mf_get_res_data( $name ) + { + return $this->m_res_data[ $name ]; + } + + function mf_get_payx_data() + { + $my_data = ""; + + if ( $this->m_payx_common != "" || $this->m_payx_card != "" ) + { + $my_data = "payx_data="; + } + + if ( $this->m_payx_common != "" ) + { + $my_data .= "common=" . $this->m_payx_common . chr( 30 ); + } + + if ( $this->m_payx_card != "" ) + { + $my_data .= ( "card=" . $this->m_payx_card . chr( 30 ) ); + } + + return $my_data; + } + + function mf_get_data( $data_name, $data ) + { + $my_data = ""; + + if ( $data != "" ) + { + $my_data = $data_name . "=" . $data; + } + else + { + $my_data = ""; + } + + return $my_data; + } + + function mf_exec() + { + $arg = func_get_args(); + + if ( is_array( $arg[0] ) ) $arg = $arg[0]; + + $exec_cmd = array_shift( $arg ); + + while ( list(,$i) = each($arg) ) + { + $exec_cmd .= " " . escapeshellarg( $i ); + } + + $rt = exec( $exec_cmd ); + + return $rt; + } +} +?> diff --git a/shop/kcp/pp_cli_result.php b/shop/kcp/pp_cli_result.php new file mode 100644 index 000000000..3f622846b --- /dev/null +++ b/shop/kcp/pp_cli_result.php @@ -0,0 +1,322 @@ + + + + + + + + + +
+ + + + + + + + + + + + + + +
KCP Online Payment System
+
+ + + + + + + + + + +
결과 페이지(현금영수증 )
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
결과코드
결과 메세지
현금영수증 거래번호
현금영수증 승인번호
등록 상태 코드
등록 상태 설명
승인시간
현금영수증 URL
※ 영수증 확인은 실 등록의 경우에만 가능합니다.
+ + + + + + + + + + + +
결과코드
결과 메세지
+ + + + + + + + + + + + + + + + +
취소 결과코드
취소 결과 메세지
상세메세지 + 쇼핑몰로 전화하여 확인하시기 바랍니다."; + } + else + { + echo "결제는 정상적으로 이루어졌지만 쇼핑몰에서 결제 결과를 처리하는 중 오류가 발생하여 시스템에서 자동으로 취소 요청을 하였으나,
취소가 실패 되었습니다.
쇼핑몰로 전화하여 확인하시기 바랍니다."; + } +?> +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
결과코드
결과 메세지
현금영수증 거래번호
현금영수증 승인번호
등록 상태 코드
등록 상태 설명
승인시간
현금영수증 URL
※ 영수증 확인은 실 등록의 경우에만 가능합니다.
+ + + + + + + + + + + +
결과코드
결과 메세지
+ + + + + + + + +
 
+
+
+ +