diff --git a/adm/admin.menu400.shop_1of2.php b/adm/admin.menu400.shop_1of2.php index 7273e2b6a..16809e249 100644 --- a/adm/admin.menu400.shop_1of2.php +++ b/adm/admin.menu400.shop_1of2.php @@ -8,6 +8,7 @@ $menu['menu400'] = array ( array('400410', '주문개별내역', G4_ADMIN_URL.'/shop_admin/orderstatuslist.php', 'scf_order_by', 1), array('400420', '주문통합내역', G4_ADMIN_URL.'/shop_admin/orderlist2.php', 'scf_order_all', 1), array('400430', '취소교환반품내역', G4_ADMIN_URL.'/shop_admin/orderrequestlist.php', 'scf_request', 1), + array('400440', '개인결제관리', G4_ADMIN_URL.'/shop_admin/personalpaylist.php', 'scf_personalpay', 1), array('400200', '분류관리', G4_ADMIN_URL.'/shop_admin/categorylist.php', 'scf_cate'), array('400300', '상품관리', G4_ADMIN_URL.'/shop_admin/itemlist.php', 'scf_item'), array('400660', '상품문의', G4_ADMIN_URL.'/shop_admin/itemqalist.php', 'scf_item_qna'), diff --git a/adm/shop_admin/couponform.php b/adm/shop_admin/couponform.php index bcb4b9e57..d268f3f7f 100644 --- a/adm/shop_admin/couponform.php +++ b/adm/shop_admin/couponform.php @@ -34,6 +34,11 @@ include_once (G4_ADMIN_PATH.'/admin.head.php');
+ + + + +

diff --git a/adm/shop_admin/orderform.php b/adm/shop_admin/orderform.php index b42b98809..bc1231adc 100644 --- a/adm/shop_admin/orderform.php +++ b/adm/shop_admin/orderform.php @@ -761,6 +761,9 @@ $pg_anchor .='
  • 결제상세정보 확인
  • + 0) { ?> + 개인결제추가 +
    @@ -959,6 +962,13 @@ $(function() { else $chk.attr("checked", false); }); + + // 개인결제추가 + $("#personalpay_add").on("click", function() { + var href = this.href; + window.open(href, "personalpaywin", "left=100, top=100, width=700, height=650, scrollbars=yes"); + return false; + }); }); function form_submit(f) diff --git a/adm/shop_admin/personalpaycopy.php b/adm/shop_admin/personalpaycopy.php new file mode 100644 index 000000000..fed55e8bd --- /dev/null +++ b/adm/shop_admin/personalpaycopy.php @@ -0,0 +1,63 @@ + + +
    + +
    +

    개인결제 복사

    + + + + + + + + + + + + + + + + +
    + +
    + + +
    + +
    +
    + + + + \ No newline at end of file diff --git a/adm/shop_admin/personalpaycopyupdate.php b/adm/shop_admin/personalpaycopyupdate.php new file mode 100644 index 000000000..66f79953d --- /dev/null +++ b/adm/shop_admin/personalpaycopyupdate.php @@ -0,0 +1,54 @@ + + + + + \ No newline at end of file diff --git a/adm/shop_admin/personalpayform.php b/adm/shop_admin/personalpayform.php new file mode 100644 index 000000000..8c2c3dd7c --- /dev/null +++ b/adm/shop_admin/personalpayform.php @@ -0,0 +1,154 @@ + 0) + $pp['pp_amount'] = $od['misu']; +} +else + include_once (G4_ADMIN_PATH.'/admin.head.php'); +?> +
    + + + + + + + + + +
    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + " onclick="if (this.checked == true) this.form.pp_receipt_time.value=this.form.pp_receipt_chk.value; else this.form.pp_receipt_time.value = this.form.pp_receipt_time.defaultValue;">
    + " id="pp_receipt_time" class="frm_input" maxlength="19"> +
    + +
    + +
    + + + + + 목록 + + + 삭제 + +
    +
    +
    + + + + \ No newline at end of file diff --git a/adm/shop_admin/personalpayformupdate.php b/adm/shop_admin/personalpayformupdate.php new file mode 100644 index 000000000..1f78b5c60 --- /dev/null +++ b/adm/shop_admin/personalpayformupdate.php @@ -0,0 +1,70 @@ + \ No newline at end of file diff --git a/adm/shop_admin/personalpaylist.php b/adm/shop_admin/personalpaylist.php new file mode 100644 index 000000000..4b0b4d1f5 --- /dev/null +++ b/adm/shop_admin/personalpaylist.php @@ -0,0 +1,190 @@ + + +
    +
    + 개인결제 검색 + + + 전체 건 + + + + + +
    +
    + +
    +

    개인결제 내역

    + +
    + 개인결제 추가 +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + '.$row['od_id'].''; + else + $od_id = ' '; + ?> + + + + + + + + + + + + + + + '; + ?> + +
    + + + 이름주문번호주문금액입금금액미수금액입금방법입금일사용관리
    + + + + 수정 + 복사 +
    자료가 없습니다.
    + +
    + +
    + +
    +
    + + + + + + \ No newline at end of file diff --git a/adm/shop_admin/personalpaylistdelete.php b/adm/shop_admin/personalpaylistdelete.php new file mode 100644 index 000000000..8bb5f7c61 --- /dev/null +++ b/adm/shop_admin/personalpaylistdelete.php @@ -0,0 +1,25 @@ + \ No newline at end of file diff --git a/extend/shop.extend2.php b/extend/shop.extend2.php index d33f12600..a20a40d9b 100644 --- a/extend/shop.extend2.php +++ b/extend/shop.extend2.php @@ -416,6 +416,31 @@ if(!sql_query(" select it_mobile_name from {$g4['shop_item_table']} limit 1 ", f ADD `it_mobile_name` VARCHAR(255) NOT NULL DEFAULT '' AFTER `it_name` ", true); } +// 개인결제 테이블추가 +if(!sql_query(" select pp_id from {$g4['shop_personalpay_table']} limit 1 ", false)) { + sql_query(" CREATE TABLE IF NOT EXISTS `{$g4['shop_personalpay_table']}` ( + `pp_id` BIGINT(20) unsigned NOT NULL, + `od_id` BIGINT(20) unsigned NOT NULL, + `pp_name` VARCHAR(255) NOT NULL DEFAULT '', + `pp_content` TEXT NOT NULL, + `pp_use` TINYINT(4) NOT NULL DEFAULT '0', + `pp_amount` INT(11) NOT NULL DEFAULT '0', + `pp_tno` varchar(255) NOT NULL DEFAULT '', + `pp_app_no` varchar(20) NOT NULL DEFAULT '', + `pp_receipt_amount` INT(11) NOT NULL DEFAULT '0', + `pp_settle_case` VARCHAR(255) NOT NULL DEFAULT '', + `pp_bank_account` VARCHAR(255) NOT NULL DEFAULT '', + `pp_deposit_name` VARCHAR(255) NOT NULL DEFAULT '', + `pp_receipt_time` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', + `pp_receipt_ip` VARCHAR(255) NOT NULL DEFAULT '', + `pp_shop_memo` TEXT NOT NULL, + `pp_ip` VARCHAR(255) NOT NULL DEFAULT '', + `pp_time` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', + PRIMARY KEY (`pp_id`), + KEY `od_id` (`od_id`) + )", true); +} + // od_app_no 필드 추가 if(!sql_query(" select od_app_no from {$g4['shop_order_table']} limit 1 ", false)) { sql_query(" ALTER TABLE `{$g4['shop_order_table']}` diff --git a/install/install_db.php b/install/install_db.php index b8970e064..ddcc6c30c 100644 --- a/install/install_db.php +++ b/install/install_db.php @@ -492,6 +492,7 @@ if($shop_install) { fwrite($f, "\$g4['shop_coupon_table'] = SHOP_TABLE_PREFIX.'coupon'; // 쿠폰정보 테이블\n"); fwrite($f, "\$g4['shop_sendcost_table'] = SHOP_TABLE_PREFIX.'sendcost'; // 추가배송비 테이블\n"); fwrite($f, "\$g4['shop_request_table'] = SHOP_TABLE_PREFIX.'request'; // 주문 취소, 교환, 반품 요청테이블\n"); + fwrite($f, "\$g4['shop_personalpay_table'] = SHOP_TABLE_PREFIX.'personalpay'; // 개인결제 정보 테이블\n"); fwrite($f, "?>"); } diff --git a/install/shop.sql b/install/shop.sql index 0d13708a5..370b7dda4 100644 --- a/install/shop.sql +++ b/install/shop.sql @@ -615,6 +615,35 @@ CREATE TABLE IF NOT EXISTS `shop_order` ( -- -------------------------------------------------------- +-- +-- Table structure for table `shop_personalpay` +-- + +DROP TABLE IF EXISTS `shop_personalpay`; +CREATE TABLE IF NOT EXISTS `shop_personalpay` ( + `pp_id` BIGINT(20) unsigned NOT NULL, + `od_id` BIGINT(20) unsigned NOT NULL, + `pp_name` VARCHAR(255) NOT NULL DEFAULT '', + `pp_content` TEXT NOT NULL, + `pp_use` TINYINT(4) NOT NULL DEFAULT '0', + `pp_amount` INT(11) NOT NULL DEFAULT '0', + `pp_tno` VARCHAR(255) NOT NULL DEFAULT '', + `pp_app_no` VARCHAR(20) NOT NULL DEFAULT '', + `pp_receipt_amount` INT(11) NOT NULL DEFAULT '0', + `pp_settle_case` VARCHAR(255) NOT NULL DEFAULT '', + `pp_bank_account` VARCHAR(255) NOT NULL DEFAULT '', + `pp_deposit_name` VARCHAR(255) NOT NULL DEFAULT '', + `pp_receipt_time` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', + `pp_receipt_ip` VARCHAR(255) NOT NULL DEFAULT '', + `pp_shop_memo` TEXT NOT NULL, + `pp_ip` VARCHAR(255) NOT NULL DEFAULT '', + `pp_time` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', + PRIMARY KEY (`pp_id`), + KEY `od_id` (`od_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + -- -- Table structure for table `shop_request` -- diff --git a/mobile/shop/kcp/personalpay_approval_form.php b/mobile/shop/kcp/personalpay_approval_form.php new file mode 100644 index 000000000..20b28b94a --- /dev/null +++ b/mobile/shop/kcp/personalpay_approval_form.php @@ -0,0 +1,327 @@ + + + + + + + +스마트폰 웹 결제창 + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + diff --git a/mobile/shop/personalpay.php b/mobile/shop/personalpay.php new file mode 100644 index 000000000..76f2d02fb --- /dev/null +++ b/mobile/shop/personalpay.php @@ -0,0 +1,66 @@ + + + +
    + + personalpay.skin.php 파일을 찾을 수 없습니다.
    관리자에게 알려주시면 감사하겠습니다.

    '; + } + + if ($i==0) + { + echo '

    등록된 개인결제가 없습니다.

    '; + } + ?> + + +
    + + + diff --git a/mobile/shop/personalpayform.php b/mobile/shop/personalpayform.php new file mode 100644 index 000000000..91d884ad2 --- /dev/null +++ b/mobile/shop/personalpayform.php @@ -0,0 +1,375 @@ + 0 "; +$pp = sql_fetch($sql); + +if(!$pp['pp_id']) + alert('개인결제 정보가 존재하지 않습니다.'); + +if($pp['pp_receipt_amount'] > 0) + alert('이미 결제하신 개인결제 내역입니다.'); + +$g4['title'] = $pp['pp_name'].'님 개인결제'; +include_once(G4_MSHOP_PATH.'/_head.php'); + +$action_url = G4_HTTPS_MSHOP_URL.'/personalpayformupdate.php'; +if (file_exists('./settle_'.$default['de_card_pg'].'.inc.php')) { + include './settle_'.$default['de_card_pg'].'.inc.php'; +} + +// 결제등록 요청시 사용할 입금마감일 +$ipgm_date = date("Ymd", (G4_SERVER_TIME + 86400 * 5)); +$tablet_size = "1.0"; // 화면 사이즈 조정 - 기기화면에 맞게 수정(갤럭시탭,아이패드 - 1.85, 스마트폰 - 1.0) + +// 개인결제 체크를 위한 hash +$hash_data = md5($pp['pp_id'].$pp['pp_amount'].$pp['pp_time']); +set_session('ss_personalpay_id', $pp['pp_id']); +set_session('ss_personalpay_hash', $hash_data); +?> + +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    + +
    +

    개인결제정보

    + + + + + + + + + + + + + + + + + + + + +
    결제금액
    + + '; + echo '결제방법 선택'; + } + + // 가상계좌 사용 + if ($default['de_vbank_use']) { + $multi_settle++; + echo ' '.PHP_EOL; + $checked = ''; + } + + // 계좌이체 사용 + if ($default['de_iche_use']) { + $multi_settle++; + echo ' '.PHP_EOL; + $checked = ''; + } + + // 휴대폰 사용 + if ($default['de_hp_use']) { + $multi_settle++; + echo ' '.PHP_EOL; + $checked = ''; + } + + // 신용카드 사용 + if ($default['de_card_use']) { + $multi_settle++; + echo ' '.PHP_EOL; + $checked = ''; + } + + if ($default['de_vbank_use'] || $default['de_bank_use'] || $default['de_bank_use'] || $default['de_bank_use']) { + echo ''; + + } + ?> + + 무통장입금 이외의 결제 수단으로 결제하시는 경우 포인트를 적립해드리지 않습니다.

    '; + + if ($multi_settle == 0) + echo '

    결제할 방법이 없습니다.
    운영자에게 알려주시면 감사하겠습니다.

    '; + ?> +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + 취소 +
    +
    + + +
    +

    에스크로 안내

    +
    + + + + + + + + +
    +
    + 에스크로(escrow) 제도란? +
    상거래 시에, 판매자와 구매자의 사이에 신뢰할 수 있는 중립적인 제삼자(여기서는 KCP)가 중개하여 + 금전 또는 물품을 거래를 하도록 하는 것, 또는 그러한 서비스를 말한다. 거래의 안전성을 확보하기 위해 이용된다. + (2006.4.1 전자상거래 소비자보호법에 따른 의무 시행) +

    + 5만원 이상의 현금 거래에만 해당(에스크로 결제를 선택했을 경우에만 해당)되며, + 신용카드로 구매하는 거래, 배송이 필요하지 않은 재화 등을 구매하는 거래(컨텐츠 등), + 5만원 미만의 현금 거래에는 해당되지 않는다. +
    +
    +
    + + 가입사실확인 + +
    +
    + + + + + +
    + + + + \ No newline at end of file diff --git a/mobile/shop/personalpayformupdate.php b/mobile/shop/personalpayformupdate.php new file mode 100644 index 000000000..ad00c426d --- /dev/null +++ b/mobile/shop/personalpayformupdate.php @@ -0,0 +1,154 @@ + 0) + alert('이미 결제하신 개인결제 내역입니다.'); + +$hash_data = md5($_POST['pp_id'].$_POST['good_mny'].$pp['pp_time']); +if($_POST['pp_id'] != get_session('ss_personalpay_id') || $hash_data != get_session('ss_personalpay_hash')) + die('개인결제 정보가 올바르지 않습니다.'); + +if ($pp_settle_case == "계좌이체") +{ + include G4_MSHOP_PATH.'/kcp/pp_ax_hub.php'; + + $pp_tno = $tno; + $pp_receipt_amount = $amount; + $pp_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); + $pp_deposit_name = $pp_name; + $bank_name = iconv("cp949", "utf8", $bank_name); + $pp_bank_account = $bank_name; + $pg_amount = $amount; +} +else if ($pp_settle_case == "가상계좌") +{ + include G4_MSHOP_PATH.'/kcp/pp_ax_hub.php'; + + $pp_tno = $tno; + $pp_receipt_amount = 0; + $bankname = iconv("cp949", "utf8", $bankname); + $depositor = iconv("cp949", "utf8", $depositor); + $pp_bank_account = $bankname.' '.$account.' '.$depositor; + $pp_deposit_name = $depositor; + $pg_amount = $amount; +} +else if ($pp_settle_case == "휴대폰") +{ + include G4_MSHOP_PATH.'/kcp/pp_ax_hub.php'; + + $pp_tno = $tno; + $pp_receipt_amount = $amount; + $pp_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); + $pp_bank_account = $commid.' '.$mobile_no; + $pg_amount = $amount; +} +else if ($pp_settle_case == "신용카드") +{ + include G4_MSHOP_PATH.'/kcp/pp_ax_hub.php'; + + $pp_tno = $tno; + $pp_receipt_amount = $amount; + $pp_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); + $pp_bank_account = $card_name; + $pg_amount = $amount; +} +else +{ + die("od_settle_case Error!!!"); +} + +// 주문금액과 결제금액이 일치하는지 체크 +if((int)$pp['pp_amount'] !== (int)$pg_amount) { + $cancel_msg = '결제금액 불일치'; + include G4_MSHOP_PATH.'/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']); + +// 결제정보 입력 +$sql = " update {$g4['shop_personalpay_table']} + set pp_tno = '$pp_tno', + pp_app_no = '$app_no', + pp_receipt_amount = '$pp_receipt_amount', + pp_settle_case = '$pp_settle_case', + pp_bank_account = '$pp_bank_account', + pp_deposit_name = '$pp_deposit_name', + pp_receipt_time = '$pp_receipt_time', + pp_receipt_ip = '{$_SERVER['REMOTE_ADDR']}' + where pp_id = '{$pp['pp_id']}' "; +$result = sql_query($sql, false); + +// 결제정보 입력 오류시 kcp 결제 취소 +if(!$result) { + if($tno) { + $cancel_msg = '결제정보 입력 오류'; + include G4_MSHOP_PATH.'/kcp/pp_ax_hub_cancel.php'; // 결제취소처리 + } + + die("

    $sql

    " . mysql_errno() . " : " . mysql_error() . "

    error file : {$_SERVER['PHP_SELF']}"); +} + +// 주문번호가 있으면 결제정보 반영 +if($pp_receipt_amount > 0 && $pp['pp_id'] && $pp['od_id']) { + $od_escrow = 0; + if($escw_yn == 'Y') + $od_escrow = 1; + + $sql = " update {$g4['shop_order_table']} + set od_receipt_amount = od_receipt_amount + '$pp_receipt_amount', + od_receipt_time = '$pp_receipt_time', + od_tno = '$pp_tno', + od_app_no = '$app_no', + od_escrow = '$od_escrow', + od_settle_case = '$pp_settle_case', + od_deposit_name = '$pp_deposit_name', + od_bank_account = '$pp_bank_account', + od_shop_memo = concat(od_shop_memo, \"\\n개인결제 ".$pp['pp_id']." 로 결제완료 - ".$pp_receipt_time."\") + where od_id = '{$pp['od_id']}' "; + $result = sql_query($sql, false); + + // 결제정보 입력 오류시 kcp 결제 취소 + if(!$result) { + if($tno) { + $cancel_msg = '결제정보 입력 오류'; + include G4_MSHOP_PATH.'/kcp/pp_ax_hub_cancel.php'; // 결제취소처리 + } + + die("

    $sql

    " . mysql_errno() . " : " . mysql_error() . "

    error file : {$_SERVER['PHP_SELF']}"); + } +} + +// 개인결제번호제거 +set_session('ss_personalpay_id', ''); +set_session('ss_personalpay_hash', ''); + +$uid = md5($pp['pp_id'].$pp['pp_time'].$_SERVER['REMOTE_ADDR']); +set_session('ss_personalpay_uid', $uid); + +goto_url(G4_SHOP_URL.'/personalpayresult.php?pp_id='.$pp['pp_id'].'&uid='.$uid); +?> diff --git a/mobile/shop/personalpayresult.php b/mobile/shop/personalpayresult.php new file mode 100644 index 000000000..3b02dd96e --- /dev/null +++ b/mobile/shop/personalpayresult.php @@ -0,0 +1,195 @@ + + +

    + +

    개인결제번호

    + +
    +

    결제 정보

    + 0) + $pp_receipt_amount = display_price($pp['pp_receipt_amount']); + else + $pp_receipt_amount = '아직 입금되지 않았거나 입금정보를 입력하지 못하였습니다.'; + + $app_no_subj = ''; + $disp_bank = true; + $disp_receipt = false; + if($pp['pp_settle_case'] == '신용카드') { + $app_no_subj = '승인번호'; + $app_no = $pp['pp_app_no']; + $disp_bank = false; + $disp_receipt = true; + } else if($pp['pp_settle_case'] == '휴대폰') { + $app_no_subj = '휴대폰번호'; + $app_no = $pp['pp_bank_account']; + $disp_bank = false; + $disp_receipt = true; + } else if($pp['pp_settle_case'] == '가상계좌' || $pp['pp_settle_case'] == '계좌이체') { + $app_no_subj = 'KCP 거래번호'; + $app_no = $pp['pp_tno']; + } + ?> + +
    +

    결제정보

    + + + + + + + + + + + + + + + + + + 0) { ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    주문번호
    결제방식
    결제금액
    결제일시
    입금자명
    입금계좌
    영수증 + + 영수증 출력 + + 영수증 출력 + + +
    +
    +
    + +
    +

    결제합계

    + + +
    + + +
    + 모의입금처리 +

    관리자가 가상계좌 테스트를 한 경우에만 보입니다.

    +
    +
    +
    +
    +

    + +
    +
    + + +
    + + + \ No newline at end of file diff --git a/mobile/shop/shop.head.php b/mobile/shop/shop.head.php index 71a70e8c5..6936cb426 100644 --- a/mobile/shop/shop.head.php +++ b/mobile/shop/shop.head.php @@ -47,6 +47,7 @@ include_once(G4_LIB_PATH.'/popular.lib.php');
  • 마이페이지
  • 장바구니
  • +
  • 개인결제
  • 커뮤니티
  • diff --git a/mobile/skin/shop/basic/personalpay.skin.php b/mobile/skin/shop/basic/personalpay.skin.php new file mode 100644 index 000000000..133ef43dc --- /dev/null +++ b/mobile/skin/shop/basic/personalpay.skin.php @@ -0,0 +1,38 @@ + + + + + += 2) { // 1줄 이미지 : 2개 이상 + if ($i%$list_mod == 0) $sct_last = 'sct_last'; // 줄 마지막 + else if ($i%$list_mod == 1) $sct_last = 'sct_clear'; // 줄 첫번째 + else $sct_last = ''; + } else { // 1줄 이미지 : 1개 + $sct_last = 'sct_clear'; + } + + if ($i == 1) { + echo "\n"; + +if($i == 1) echo "

    등록된 개인결제가 없습니다.

    \n"; +?> + \ No newline at end of file diff --git a/shop/orderformupdate.php b/shop/orderformupdate.php index 1124ddc90..049b36e8e 100644 --- a/shop/orderformupdate.php +++ b/shop/orderformupdate.php @@ -326,7 +326,7 @@ else if ($od_settle_case == "가상계좌") $bankname = iconv("cp949", "utf8", $bankname); $depositor = iconv("cp949", "utf8", $depositor); $od_bank_account = $bankname.' '.$account.' '.$depositor; - $od_deposit_name = $od_name; + $od_deposit_name = $depositor; $pg_amount = $amount; } else if ($od_settle_case == "휴대폰") diff --git a/shop/personalpay.php b/shop/personalpay.php new file mode 100644 index 000000000..359e699ad --- /dev/null +++ b/shop/personalpay.php @@ -0,0 +1,72 @@ + + + +
    + + personalpay.skin.php 파일을 찾을 수 없습니다.
    관리자에게 알려주시면 감사하겠습니다.

    '; + } + + if ($i==0) + { + echo '

    등록된 개인결제가 없습니다.

    '; + } + ?> + + +
    + + + diff --git a/shop/personalpayform.php b/shop/personalpayform.php new file mode 100644 index 000000000..709c3ba55 --- /dev/null +++ b/shop/personalpayform.php @@ -0,0 +1,577 @@ + 0 "; +$pp = sql_fetch($sql); + +if(!$pp['pp_id']) + alert('개인결제 정보가 존재하지 않습니다.'); + +if($pp['pp_receipt_amount'] > 0) + alert('이미 결제하신 개인결제 내역입니다.'); + +$g4['title'] = $pp['pp_name'].'님 개인결제'; +include_once('./_head.php'); + +$action_url = G4_HTTPS_SHOP_URL.'/personalpayformupdate.php'; +if (file_exists('./settle_'.$default['de_card_pg'].'.inc.php')) { + include './settle_'.$default['de_card_pg'].'.inc.php'; +} + +// 개인결제 체크를 위한 hash +$hash_data = md5($pp['pp_id'].$pp['pp_amount'].$pp['pp_time']); +set_session('ss_personalpay_id', $pp['pp_id']); +set_session('ss_personalpay_hash', $hash_data); +?> + + + + + + + +

    + 결제안내 + 결제를 하시려면 상단의 노란색 표시줄을 클릭하시거나, [수동설치]를 눌러 Payplus Plug-in을 설치하시기 바랍니다.
    + [수동설치]를 눌러 설치하신 경우 새로고침(F5)키를 눌러 진행하시기 바랍니다. +

    + +
    + + + + + + + + + 카드결제시 결제창에 일시불부터 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 = */ + /* ============================================================================== */ + ?> + +
    +

    개인결제정보

    + + + + + + + + + + + + + + + + + + + + +
    결제금액
    + + 무통장입금 이외의 결제 수단으로 결제하시는 경우 포인트를 적립해드리지 않습니다.

    '; + + $multi_settle == 0; + $checked = ''; + + $escrow_title = ""; + if ($default['de_escrow_use']) { + $escrow_title = "에스크로 "; + } + + if ($default['de_vbank_use'] || $default['de_bank_use'] || $default['de_bank_use'] || $default['de_bank_use']) { + echo '
    '; + echo '결제방법 선택'; + } + + // 가상계좌 사용 + if ($default['de_vbank_use']) { + $multi_settle++; + echo ' '.PHP_EOL; + $checked = ''; + } + + // 계좌이체 사용 + if ($default['de_iche_use']) { + $multi_settle++; + echo ' '.PHP_EOL; + $checked = ''; + } + + // 휴대폰 사용 + if ($default['de_hp_use']) { + $multi_settle++; + echo ' '.PHP_EOL; + $checked = ''; + } + + // 신용카드 사용 + if ($default['de_card_use']) { + $multi_settle++; + echo ' '.PHP_EOL; + $checked = ''; + } + + if ($default['de_vbank_use'] || $default['de_bank_use'] || $default['de_bank_use'] || $default['de_bank_use']) { + echo '
    '; + + } + + if ($multi_settle == 0) + echo '

    결제할 방법이 없습니다.
    운영자에게 알려주시면 감사하겠습니다.

    '; + ?> +
    + + +

    + 결제를 계속 하시려면 상단의 노란색 표시줄을 클릭하시거나 [수동설치]를 눌러 다운로드 된 Payplus Plug-in을 설치하시기 바랍니다.
    + [수동설치]를 눌러 설치하신 경우 새로고침(F5)키를 눌러 진행하시기 바랍니다.
    + 새로고침(F5) 한후에도 계속 설치파일이 다운로드 되거나 결제가 되지 않으면 브라우저를 새로 열어서 주문해 주시기 바랍니다.
    + 브라우저가 익스플로러가 아닌 경우 Payplus Plug-in 설치에 문제가 있을수 있음을 알려 드립니다. +

    + + + + +
    + + + +
    +

    에스크로 안내

    +
    + + + + + + + + +
    +
    + 에스크로(escrow) 제도란? +
    상거래 시에, 판매자와 구매자의 사이에 신뢰할 수 있는 중립적인 제삼자(여기서는 KCP)가 중개하여 + 금전 또는 물품을 거래를 하도록 하는 것, 또는 그러한 서비스를 말한다. 거래의 안전성을 확보하기 위해 이용된다. + (2006.4.1 전자상거래 소비자보호법에 따른 의무 시행) +

    + 5만원 이상의 현금 거래에만 해당(에스크로 결제를 선택했을 경우에만 해당)되며, + 신용카드로 구매하는 거래, 배송이 필요하지 않은 재화 등을 구매하는 거래(컨텐츠 등), + 5만원 미만의 현금 거래에는 해당되지 않는다. +
    +
    +
    + + 가입사실확인 + +
    +
    + + + + + + + + + + \ No newline at end of file diff --git a/shop/personalpayformupdate.php b/shop/personalpayformupdate.php new file mode 100644 index 000000000..793d9962b --- /dev/null +++ b/shop/personalpayformupdate.php @@ -0,0 +1,172 @@ + 0) + alert('이미 결제하신 개인결제 내역입니다.'); + +$hash_data = md5($_POST['pp_id'].$_POST['good_mny'].$pp['pp_time']); +if($_POST['pp_id'] != get_session('ss_personalpay_id') || $hash_data != get_session('ss_personalpay_hash')) + die('개인결제 정보가 올바르지 않습니다.'); + + +if ($pp_settle_case == "계좌이체") +{ + include G4_SHOP_PATH.'/kcp/pp_ax_hub.php'; + + $pp_tno = $tno; + $pp_receipt_amount = $amount; + $pp_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); + $pp_deposit_name = $pp_name; + $bank_name = iconv("cp949", "utf8", $bank_name); + $pp_bank_account = $bank_name; + $pg_amount = $amount; +} +else if ($pp_settle_case == "가상계좌") +{ + include G4_SHOP_PATH.'/kcp/pp_ax_hub.php'; + + $pp_tno = $tno; + $pp_receipt_amount = 0; + $bankname = iconv("cp949", "utf8", $bankname); + $depositor = iconv("cp949", "utf8", $depositor); + $pp_bank_account = $bankname.' '.$account.' '.$depositor; + $pp_deposit_name = $depositor; + $pg_amount = $amount; +} +else if ($pp_settle_case == "휴대폰") +{ + include G4_SHOP_PATH.'/kcp/pp_ax_hub.php'; + + $pp_tno = $tno; + $pp_receipt_amount = $amount; + $pp_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); + $pp_bank_account = $commid.' '.$mobile_no; + $pg_amount = $amount; +} +else if ($pp_settle_case == "신용카드") +{ + include G4_SHOP_PATH.'/kcp/pp_ax_hub.php'; + + $pp_tno = $tno; + $pp_receipt_amount = $amount; + $pp_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); + $pp_bank_account = $card_name; + $pg_amount = $amount; +} +else +{ + die("od_settle_case Error!!!"); +} + +// 주문금액과 결제금액이 일치하는지 체크 +if((int)$pp['pp_amount'] !== (int)$pg_amount) { + $cancel_msg = '결제금액 불일치'; + include G4_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php'; // 결제취소처리 + + die("Receipt Amount Error"); +} + +// 결제정보 입력 +$sql = " update {$g4['shop_personalpay_table']} + set pp_tno = '$pp_tno', + pp_app_no = '$app_no', + pp_receipt_amount = '$pp_receipt_amount', + pp_settle_case = '$pp_settle_case', + pp_bank_account = '$pp_bank_account', + pp_deposit_name = '$pp_deposit_name', + pp_receipt_time = '$pp_receipt_time', + pp_receipt_ip = '{$_SERVER['REMOTE_ADDR']}' + where pp_id = '{$pp['pp_id']}' "; +$result = sql_query($sql, false); + +// 결제정보 입력 오류시 kcp 결제 취소 +if(!$result) { + if($tno) { + $cancel_msg = '결제정보 입력 오류'; + include G4_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php'; // 결제취소처리 + } + + die("

    $sql

    " . mysql_errno() . " : " . mysql_error() . "

    error file : {$_SERVER['PHP_SELF']}"); +} + +// 주문번호가 있으면 결제정보 반영 +if($pp_receipt_amount > 0 && $pp['pp_id'] && $pp['od_id']) { + $od_escrow = 0; + if($escw_yn == 'Y') + $od_escrow = 1; + + $sql = " update {$g4['shop_order_table']} + set od_receipt_amount = od_receipt_amount + '$pp_receipt_amount', + od_receipt_time = '$pp_receipt_time', + od_tno = '$pp_tno', + od_app_no = '$app_no', + od_escrow = '$od_escrow', + od_settle_case = '$pp_settle_case', + od_deposit_name = '$pp_deposit_name', + od_bank_account = '$pp_bank_account', + od_shop_memo = concat(od_shop_memo, \"\\n개인결제 ".$pp['pp_id']." 로 결제완료 - ".$pp_receipt_time."\") + where od_id = '{$pp['od_id']}' "; + $result = sql_query($sql, false); + + // 결제정보 입력 오류시 kcp 결제 취소 + if(!$result) { + if($tno) { + $cancel_msg = '결제정보 입력 오류'; + include G4_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php'; // 결제취소처리 + } + + die("

    $sql

    " . mysql_errno() . " : " . mysql_error() . "

    error file : {$_SERVER['PHP_SELF']}"); + } +} + +// 개인결제번호제거 +set_session('ss_personalpay_id', ''); +set_session('ss_personalpay_hash', ''); + +$uid = md5($pp['pp_id'].$pp['pp_time'].$_SERVER['REMOTE_ADDR']); +set_session('ss_personalpay_uid', $uid); + +goto_url(G4_SHOP_URL.'/personalpayresult.php?pp_id='.$pp['pp_id'].'&uid='.$uid); +?> + + + + *** KCP [AX-HUB Version] *** + + + \ No newline at end of file diff --git a/shop/personalpayresult.php b/shop/personalpayresult.php new file mode 100644 index 000000000..7b8843b05 --- /dev/null +++ b/shop/personalpayresult.php @@ -0,0 +1,208 @@ + + + + + +

    + +

    개인결제번호

    + +
    +

    결제 정보

    + 0) + $pp_receipt_amount = display_price($pp['pp_receipt_amount']); + else + $pp_receipt_amount = '아직 입금되지 않았거나 입금정보를 입력하지 못하였습니다.'; + + $app_no_subj = ''; + $disp_bank = true; + $disp_receipt = false; + if($pp['pp_settle_case'] == '신용카드') { + $app_no_subj = '승인번호'; + $app_no = $pp['pp_app_no']; + $disp_bank = false; + $disp_receipt = true; + } else if($pp['pp_settle_case'] == '휴대폰') { + $app_no_subj = '휴대폰번호'; + $app_no = $pp['pp_bank_account']; + $disp_bank = false; + $disp_receipt = true; + } else if($pp['pp_settle_case'] == '가상계좌' || $pp['pp_settle_case'] == '계좌이체') { + $app_no_subj = 'KCP 거래번호'; + $app_no = $pp['pp_tno']; + } + ?> + +
    +

    결제정보

    + + + + + + + + + + + + + + + + + + 0) { ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    주문번호
    결제방식
    결제금액
    결제일시
    입금자명
    입금계좌
    영수증 + + 영수증 출력 + + 영수증 출력 + + +
    +
    +
    + +
    +

    결제합계

    + + +
    + + +
    + 모의입금처리 +

    관리자가 가상계좌 테스트를 한 경우에만 보입니다.

    +
    +
    +
    +
    +

    + +
    +
    + + +
    + + + \ No newline at end of file diff --git a/shop/settle_kcp_common.php b/shop/settle_kcp_common.php index 4eb4c0dde..76fa47d2c 100644 --- a/shop/settle_kcp_common.php +++ b/shop/settle_kcp_common.php @@ -141,13 +141,37 @@ if(!$default['de_card_test']) { /* = -------------------------------------------------------------------------- = */ if ( $tx_cd == "TX00" ) { - // 주문서 UPDATE - $sql = " update {$g4['shop_order_table']} - set od_receipt_amount = '$ipgm_mnyx', - od_receipt_time = '$tx_tm' - where od_id = '$order_no' - and od_tno = '$tno' "; - sql_query($sql, FALSE); + $sql = " select pp_id, od_id from {$g4['shop_personalpay_table']} where pp_id = '$order_no' and pp_tno = '$tno' "; + $row = sql_fetch($sql); + + if($row['pp_id']) { + // 개인결제 UPDATE + $sql = " update {$g4['shop_personalpay_table']} + set pp_receipt_amount = '$ipgm_mnyx', + pp_receipt_time = '$tx_tm' + where pp_id = '$order_no' + and pp_tno = '$tno' "; + sql_query($sql, false); + + if($row['od_id']) { + // 주문서 UPDATE + $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", $tx_tm); + $sql = " update {$g4['shop_order_table']} + set od_receipt_amount = od_receipt_amount + '$ipgm_mnyx', + od_receipt_time = '$tx_tm', + od_shop_memo = concat(od_shop_memo, \"\\n개인결제 ".$row['pp_id']." 로 결제완료 - ".$receipt_time."\") + where od_id = '{$row['od_id']}' "; + sql_query($sql, FALSE); + } + } else { + // 주문서 UPDATE + $sql = " update {$g4['shop_order_table']} + set od_receipt_amount = '$ipgm_mnyx', + od_receipt_time = '$tx_tm' + where od_id = '$order_no' + and od_tno = '$tno' "; + sql_query($sql, FALSE); + } } /* = -------------------------------------------------------------------------- = */ diff --git a/shop/shop.head.php b/shop/shop.head.php index 7608da657..42bd53d9b 100644 --- a/shop/shop.head.php +++ b/shop/shop.head.php @@ -80,6 +80,7 @@ include_once(G4_LIB_PATH.'/popular.lib.php');
  • 마이페이지
  • FAQ
  • +
  • 개인결제
  • 사용후기
  • 커뮤니티
  • diff --git a/skin/shop/basic/personalpay.skin.php b/skin/shop/basic/personalpay.skin.php new file mode 100644 index 000000000..795393a7e --- /dev/null +++ b/skin/shop/basic/personalpay.skin.php @@ -0,0 +1,36 @@ + + + + += 2) { // 1줄 이미지 : 2개 이상 + if ($i%$list_mod == 0) $sct_last = ' sct_last'; // 줄 마지막 + else if ($i%$list_mod == 1) $sct_last = ' sct_clear'; // 줄 첫번째 + else $sct_last = ''; + } else { // 1줄 이미지 : 1개 + $sct_last = ' sct_clear'; + } + + if ($i == 1) { + echo "\n"; + +if($i == 1) echo "

    등록된 개인결제가 없습니다.

    \n"; +?> \ No newline at end of file