352 lines
13 KiB
PHP
352 lines
13 KiB
PHP
<?php
|
|
include_once('./_common.php');
|
|
|
|
if(get_magic_quotes_gpc())
|
|
{
|
|
$_GET = array_map("stripslashes", $_GET);
|
|
$_POST = array_map("stripslashes", $_POST);
|
|
}
|
|
$_GET = array_map("mysql_real_escape_string", $_GET);
|
|
$_POST = array_map("mysql_real_escape_string", $_POST);
|
|
|
|
// 장바구니가 비어있는가?
|
|
if (get_session("ss_direct"))
|
|
$tmp_uq_id = get_session('ss_uq_direct');
|
|
else
|
|
$tmp_uq_id = get_session('ss_uq_id');
|
|
|
|
if (get_cart_count($tmp_uq_id) == 0)// 장바구니에 담기
|
|
alert('장바구니가 비어 있습니다.\\n\\n이미 주문하셨거나 장바구니에 담긴 상품이 없는 경우입니다.', './cart.php');
|
|
|
|
$error = "";
|
|
// 장바구니 상품 재고 검사
|
|
// 1.03.07 : and a.it_id = b.it_id : where 조건문에 이 부분 추가
|
|
$sql = " select a.it_id,
|
|
a.ct_qty,
|
|
a.it_name
|
|
from {$g4['shop_cart_table']} a,
|
|
{$g4['shop_item_table']} b
|
|
where a.uq_id = '$tmp_uq_id'
|
|
and a.it_id = b.it_id ";
|
|
$result = sql_query($sql);
|
|
for ($i=0; $row=sql_fetch_array($result); $i++)
|
|
{
|
|
// 상품에 대한 현재고수량
|
|
$it_stock_qty = (int)get_it_stock_qty($row['it_id']);
|
|
// 장바구니 수량이 재고수량보다 많다면 오류
|
|
if ($row['ct_qty'] > $it_stock_qty)
|
|
$error .= "{$row['it_name']} 의 재고수량이 부족합니다. 현재고수량 : $it_stock_qty 개\\n\\n";
|
|
}
|
|
|
|
if ($error != "")
|
|
{
|
|
$error .= "다른 고객님께서 {$od_name}님 보다 먼저 주문하신 경우입니다. 불편을 끼쳐 죄송합니다.";
|
|
alert($error);
|
|
}
|
|
|
|
$i_amount = (int)$_POST['od_amount'];
|
|
$i_send_cost = (int)$_POST['od_send_cost'];
|
|
$i_temp_point = (int)$_POST['od_temp_point'];
|
|
|
|
|
|
// 주문금액이 상이함
|
|
$sql = " select SUM(ct_price * ct_qty) as od_amount from {$g4['shop_cart_table']} where uq_id = '$tmp_uq_id' ";
|
|
$row = sql_fetch($sql);
|
|
if ((int)$row['od_amount'] !== $i_amount) {
|
|
die("Error.");
|
|
}
|
|
|
|
// 배송비가 상이함
|
|
$tot_sell_amount = $row['od_amount'];
|
|
// 배송비 계산
|
|
if ($default['de_send_cost_case'] == "없음") {
|
|
$send_cost = 0;
|
|
} else {
|
|
// 배송비 상한 : 여러단계의 배송비 적용 가능
|
|
$send_cost_limit = explode(";", $default['de_send_cost_limit']);
|
|
$send_cost_list = explode(";", $default['de_send_cost_list']);
|
|
$send_cost = 0;
|
|
for ($k=0; $k<count($send_cost_limit); $k++) {
|
|
// 총판매금액이 배송비 상한가 보다 작다면
|
|
if ($tot_sell_amount < $send_cost_limit[$k]) {
|
|
$send_cost = $send_cost_list[$k];
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if ((int)$send_cost !== $i_send_cost) {
|
|
die("Error..");
|
|
}
|
|
|
|
// 결제포인트가 상이함
|
|
$tot_amount = $tot_sell_amount + $send_cost;
|
|
// 회원이면서 포인트사용이면
|
|
$temp_point = 0;
|
|
if ($is_member && $config['cf_use_point'])
|
|
{
|
|
// 포인트 결제 사용 포인트보다 회원의 포인트가 크다면
|
|
if ($member['mb_point'] >= $default['de_point_settle'])
|
|
{
|
|
$temp_point = $tot_amount * ($default['de_point_per'] / 100); // 포인트 결제 % 적용
|
|
$temp_point = (int)((int)($temp_point / 100) * 100); // 100점 단위
|
|
|
|
$member_point = (int)((int)($member['mb_point'] / 100) * 100); // 100점 단위
|
|
if ($temp_point > $member_point)
|
|
$temp_point = $member_point;
|
|
}
|
|
}
|
|
|
|
if (($i_temp_point > (int)$temp_point || $i_temp_point < 0) && $config['cf_use_point'])
|
|
die("Error...");
|
|
|
|
if ($od_temp_point)
|
|
{
|
|
if ($member['mb_point'] < $od_temp_point)
|
|
alert('회원님의 포인트가 부족하여 포인트로 결제 할 수 없습니다.');
|
|
}
|
|
|
|
$i_amount = $i_amount + $i_send_cost - $i_temp_point;
|
|
|
|
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 G4_SHOP_PATH.'/kcp/pp_ax_hub.php';
|
|
|
|
$od_temp_bank = $i_amount;
|
|
$od_temp_point = $i_temp_point;
|
|
|
|
$od_escrow1 = $tno;
|
|
$od_receipt_bank = $amount;
|
|
$od_receipt_point = $i_temp_point;
|
|
$od_bank_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;
|
|
$pg_amount = $amount;
|
|
}
|
|
else if ($od_settle_case == "가상계좌")
|
|
{
|
|
include G4_SHOP_PATH.'/kcp/pp_ax_hub.php';
|
|
|
|
$od_temp_bank = $i_amount;
|
|
$od_temp_point = $i_temp_point;
|
|
$od_receipt_point = 0;
|
|
|
|
$od_escrow1 = $tno;
|
|
$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;
|
|
$pg_amount = $amount;
|
|
}
|
|
else if ($od_settle_case == "휴대폰")
|
|
{
|
|
include G4_SHOP_PATH.'/kcp/pp_ax_hub.php';
|
|
|
|
$od_temp_bank = $i_amount;
|
|
$od_temp_point = $i_temp_point;
|
|
|
|
$od_escrow1 = $tno;
|
|
$od_receipt_hp = $amount;
|
|
$od_receipt_point = $i_temp_point;
|
|
$od_hp_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;
|
|
$pg_amount = $amount;
|
|
}
|
|
else if ($od_settle_case == "신용카드")
|
|
{
|
|
include G4_SHOP_PATH.'/kcp/pp_ax_hub.php';
|
|
|
|
$od_temp_card = $i_amount;
|
|
$od_temp_point = $i_temp_point;
|
|
|
|
$od_escrow1 = $tno;
|
|
$od_receipt_card = $amount;
|
|
$od_receipt_point = $i_temp_point;
|
|
$od_card_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;
|
|
$pg_amount = $amount;
|
|
}
|
|
else
|
|
{
|
|
die("od_settle_case Error!!!");
|
|
}
|
|
|
|
// 주문금액과 결제금액이 일치하는지 체크
|
|
if($tno) {
|
|
if((int)$i_amount !== (int)$pg_amount) {
|
|
$cancel_msg = '결제금액 불일치';
|
|
include G4_SHOP_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']);
|
|
|
|
// 주문번호를 얻는다.
|
|
$od_id = get_session('ss_order_uniqid');
|
|
|
|
// 주문서에 입력
|
|
$sql = " insert {$g4['shop_order_table']}
|
|
set od_id = '$od_id',
|
|
uq_id = '$tmp_uq_id',
|
|
mb_id = '{$member['mb_id']}',
|
|
od_pwd = '$od_pwd',
|
|
od_name = '$od_name',
|
|
od_email = '$od_email',
|
|
od_tel = '$od_tel',
|
|
od_hp = '$od_hp',
|
|
od_zip1 = '$od_zip1',
|
|
od_zip2 = '$od_zip2',
|
|
od_addr1 = '$od_addr1',
|
|
od_addr2 = '$od_addr2',
|
|
od_b_name = '$od_b_name',
|
|
od_b_tel = '$od_b_tel',
|
|
od_b_hp = '$od_b_hp',
|
|
od_b_zip1 = '$od_b_zip1',
|
|
od_b_zip2 = '$od_b_zip2',
|
|
od_b_addr1 = '$od_b_addr1',
|
|
od_b_addr2 = '$od_b_addr2',
|
|
od_deposit_name = '$od_deposit_name',
|
|
od_memo = '$od_memo',
|
|
od_send_cost = '$od_send_cost',
|
|
od_temp_bank = '$od_temp_bank',
|
|
od_temp_card = '$od_receipt_card',
|
|
od_temp_hp = '$od_receipt_hp',
|
|
od_temp_point = '$od_temp_point',
|
|
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_bank_time = '$od_bank_time',
|
|
od_card_time = '$od_card_time',
|
|
od_hp_time = '$od_hp_time',
|
|
od_escrow1 = '$od_escrow1',
|
|
od_shop_memo = '',
|
|
od_hope_date = '$od_hope_date',
|
|
od_time = '".G4_TIME_YMDHIS."',
|
|
od_ip = '$REMOTE_ADDR',
|
|
od_settle_case = '$od_settle_case'
|
|
";
|
|
$result = sql_query($sql, false);
|
|
|
|
// 주문정보 입력 오류시 kcp 결제 취소
|
|
if(!$result) {
|
|
if($tno) {
|
|
$cancel_msg = '주문정보 입력 오류';
|
|
include G4_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php'; // 결제취소처리
|
|
}
|
|
|
|
die("<p>$sql<p>" . mysql_errno() . " : " . mysql_error() . "<p>error file : {$_SERVER['PHP_SELF']}");
|
|
}
|
|
|
|
// 장바구니 쇼핑에서 주문으로
|
|
// 신용카드로 주문하면서 신용카드 포인트 사용하지 않는다면 포인트 부여하지 않음
|
|
$sql_card_point = "";
|
|
//if ($od_receipt_card > 0 && $default[de_card_point] == false) {
|
|
if (($od_receipt_card > 0 || $od_receipt_hp > 0) && $default['de_card_point'] == false) {
|
|
$sql_card_point = " , ct_point = '0' ";
|
|
}
|
|
$sql = "update {$g4['shop_cart_table']}
|
|
set ct_status = '주문'
|
|
$sql_card_point
|
|
where uq_id = '$tmp_uq_id' ";
|
|
$result = sql_query($sql, false);
|
|
|
|
// 주문정보 입력 오류시 kcp 결제 취소
|
|
if(!$result) {
|
|
if($tno) {
|
|
$cancel_msg = '주문상태 변경 오류';
|
|
include G4_SHOP_PATH.'/kcp/pp_ax_hub_cancel.php'; // 결제취소처리
|
|
}
|
|
|
|
echo "<p>$sql<p>" . mysql_errno() . " : " . mysql_error() . "<p>error file : {$_SERVER['PHP_SELF']}";
|
|
|
|
// 주문삭제
|
|
sql_query(" delete from {$g4['shop_order_table']} where od_id = '$od_id' and uq_id = '$tmp_uq_id' ");
|
|
exit;
|
|
}
|
|
|
|
// 회원이면서 포인트를 사용했다면 포인트 테이블에 사용을 추가
|
|
if ($is_member && $od_receipt_point) {
|
|
insert_point($member['mb_id'], (-1) * $od_receipt_point, "주문번호 $od_id 결제");
|
|
}
|
|
|
|
// PG 결제내역기록
|
|
include_once(G4_SHOP_PATH.'/kcp/pp_ax_hub_result.php');
|
|
|
|
$od_memo = nl2br(htmlspecialchars2(stripslashes($od_memo))) . " ";
|
|
|
|
|
|
include_once(G4_SHOP_PATH.'/ordermail1.inc.php');
|
|
include_once(G4_SHOP_PATH.'/ordermail2.inc.php');
|
|
|
|
// SMS BEGIN --------------------------------------------------------
|
|
// 주문고객과 쇼핑몰관리자에게 SMS 전송
|
|
if($default['de_sms_use'] && ($default['de_sms_use2'] || $default['de_sms_use3'])) {
|
|
$sms_contents = array($default['de_sms_cont2'], $default['de_sms_cont3']);
|
|
$recv_numbers = array($od_hp, $default['de_sms_hp']);
|
|
$send_numbers = array($default['de_admin_company_tel'], $od_hp);
|
|
|
|
include_once(G4_LIB_PATH.'/icode.sms.lib.php');
|
|
|
|
$SMS = new SMS; // SMS 연결
|
|
$SMS->SMS_con($default['de_icode_server_ip'], $default['de_icode_id'], $default['de_icode_pw'], $default['de_icode_server_port']);
|
|
$sms_count = 0;
|
|
|
|
for($s=0; $s<count($sms_contents); $s++) {
|
|
$sms_content = $sms_contents[$s];
|
|
$recv_number = preg_replace("/[^0-9]/", "", $recv_numbers[$s]);
|
|
$send_number = preg_replace("/[^0-9]/", "", $send_numbers[$s]);
|
|
|
|
$sms_content = preg_replace("/{이름}/", $od_name, $sms_content);
|
|
$sms_content = preg_replace("/{보낸분}/", $od_name, $sms_content);
|
|
$sms_content = preg_replace("/{받는분}/", $od_b_name, $sms_content);
|
|
$sms_content = preg_replace("/{주문번호}/", $od_id, $sms_content);
|
|
$sms_content = preg_replace("/{주문금액}/", number_format($ttotal_amount), $sms_content);
|
|
$sms_content = preg_replace("/{회원아이디}/", $member['mb_id'], $sms_content);
|
|
$sms_content = preg_replace("/{회사명}/", $default['de_admin_company_name'], $sms_content);
|
|
|
|
$idx = 'de_sms_use'.($s + 2);
|
|
|
|
if($default[$idx] && $recv_number) {
|
|
$SMS->Add($recv_number, $send_number, $default['de_icode_id'], iconv("utf-8", "euc-kr", stripslashes($sms_content)), "");
|
|
$sms_count++;
|
|
}
|
|
}
|
|
|
|
if($sms_count > 0)
|
|
$SMS->Send();
|
|
}
|
|
// SMS END --------------------------------------------------------
|
|
|
|
|
|
// orderview 에서 사용하기 위해 tmp에 넣고
|
|
set_session('ss_temp_uq_id', $tmp_uq_id);
|
|
|
|
// 주문번호제거
|
|
set_session('ss_order_uniqid', '');
|
|
|
|
// ss_uq_id 기존자료 세션에서 제거
|
|
if (get_session('ss_direct'))
|
|
set_session('ss_uq_direct', '');
|
|
else
|
|
set_session('ss_uq_id', '');
|
|
|
|
goto_url(G4_SHOP_URL.'/orderinquiryview.php?od_id='.$od_id.'&uq_id='.$tmp_uq_id);
|
|
?>
|