영카트 "모바일" 쿠폰적용 취소 오류 문제
본문
☆ 결론 ★ 모바일에서 주문서 작성시 쿠폰적용 하였다가 "취소" (적용취소) 하면. 결제금액 은 정상적으로 출력되나. 실제로는 쿠폰이 적용되어 결제됩니다. 당연히 pg 사는 결제금액 이상으로 결제 안되고 무통장 으로 테스트 확인하였습니다..
모바일에서 쿠폰적용 취소 가 정상적으로 작동을안하는것인지..
그렇다고하기에는 주문서작성시 결제금액 등은 정상적인데... 무엇이 문제일까요..ㅠㅠ
혹시나 재사이트가 문제인가싶어. 호스팅 새로하나 열고.
영카트 최신버전 설치해서 테스트 해봤는데 PC 는 정상적으로 잘결제되나
모바일은 Error.. 표시됩니다..
답변 2
직접 해봤는데 진짜 그러네요.
버그 제보는 해놓겠습니다.
자문자답:
코드하나하나 다비교해봤습니다.
PC와 모바일 차이점 / pc: 쿠폰적용후 쿠폰취소 누르면 포인트 사용금액 공란으로 리셋 지워짐/
모바일 : 쿠폰적용후 쿠폰취소 누르면 쿠폰은 취소되서 정상계산되나. 포인트 사용금액 공란 으로 리셋안됨
이유는 모르겠으나. 코드하나하나 복사해가면서 비교하면서 문제코드가 기존코드였고 아래 코드로 교체하니 정상적으로됩니다.
혹시 다들모르니 쇼핑몰 운영하시는분들 저처럼 한번 테스트해보세요~
모바일 주문서작성시 . 쿠폰적용 하였다가. 취소(쿠폰적용취소) 누르고 오류없는지 확인해보세요~
새롭게 영카트 최신버전 설치해도 동일증상이였습니다.
여튼 아래 코드로 수정하니 정상적으로 됩니다.. 딱 7시간 걸렸네요...ㅠㅠㅠ 혹시 더좋은 방법있는 분들있으면 답변달아주시면 감사하겠습니다.
스크립트 아래 <script>
var zipcode = ""; 밑으로
전부교체해주세요
mobile/shop/orderform.sub.php
$(function() {
var $cp_btn_el;
var $cp_row_el;
$(".cp_btn").click(function() {
$cp_btn_el = $(this);
$cp_row_el = $(this).closest("tr");
$("#cp_frm").remove();
var it_id = $cp_btn_el.closest("tr").find("input[name^=it_id]").val();
$.post(
"./orderitemcoupon.php",
{ it_id: it_id, sw_direct: "<?php echo $sw_direct; ?>" },
function(data) {
$cp_btn_el.after(data);
}
);
});
$(document).on("click", ".cp_apply", function() {
var $el = $(this).closest("tr");
var cp_id = $el.find("input[name='f_cp_id[]']").val();
var price = $el.find("input[name='f_cp_prc[]']").val();
var subj = $el.find("input[name='f_cp_subj[]']").val();
var sell_price;
if(parseInt(price) == 0) {
if(!confirm(subj+"쿠폰의 할인 금액은 "+price+"원입니다.\n쿠폰을 적용하시겠습니까?")) {
return false;
}
}
// 이미 사용한 쿠폰이 있는지
var cp_dup = false;
var cp_dup_idx;
var $cp_dup_el;
$("input[name^=cp_id]").each(function(index) {
var id = $(this).val();
if(id == cp_id) {
cp_dup_idx = index;
cp_dup = true;
$cp_dup_el = $(this).closest("tr");;
return false;
}
});
if(cp_dup) {
var it_name = $("input[name='it_name["+cp_dup_idx+"]']").val();
if(!confirm(subj+ "쿠폰은 "+it_name+"에 사용되었습니다.\n"+it_name+"의 쿠폰을 취소한 후 적용하시겠습니까?")) {
return false;
} else {
coupon_cancel($cp_dup_el);
$("#cp_frm").remove();
$cp_dup_el.find(".cp_btn").text("적용").focus();
$cp_dup_el.find(".cp_cancel").remove();
}
}
var $s_el = $cp_row_el.find(".total_price");;
sell_price = parseInt($cp_row_el.find("input[name^=it_price]").val());
sell_price = sell_price - parseInt(price);
if(sell_price < 0) {
alert("쿠폰할인금액이 상품 주문금액보다 크므로 쿠폰을 적용할 수 없습니다.");
return false;
}
$s_el.text(number_format(String(sell_price)));
$cp_row_el.find("input[name^=cp_id]").val(cp_id);
$cp_row_el.find("input[name^=cp_price]").val(price);
calculate_total_price();
$("#cp_frm").remove();
$cp_btn_el.text("변경").focus();
if(!$cp_row_el.find(".cp_cancel").size())
$cp_btn_el.after("<button type=\"button\" class=\"cp_cancel\">취소</button>");
});
$(document).on("click", "#cp_close", function() {
$("#cp_frm").remove();
$cp_btn_el.focus();
});
$(document).on("click", ".cp_cancel", function() {
coupon_cancel($(this).closest("tr"));
calculate_total_price();
$("#cp_frm").remove();
$(this).closest("tr").find(".cp_btn").text("적용").focus();
$(this).remove();
});
$("#od_coupon_btn").click(function() {
$("#od_coupon_frm").remove();
var $this = $(this);
var price = parseInt($("input[name=org_od_price]").val()) - parseInt($("input[name=item_coupon]").val());
if(price <= 0) {
alert('상품금액이 0원이므로 쿠폰을 사용할 수 없습니다.');
return false;
}
$.post(
"./ordercoupon.php",
{ price: price },
function(data) {
$this.after(data);
}
);
});
$(document).on("click", ".od_cp_apply", function() {
var $el = $(this).closest("tr");
var cp_id = $el.find("input[name='o_cp_id[]']").val();
var price = parseInt($el.find("input[name='o_cp_prc[]']").val());
var subj = $el.find("input[name='o_cp_subj[]']").val();
var send_cost = $("input[name=od_send_cost]").val();
var item_coupon = parseInt($("input[name=item_coupon]").val());
var od_price = parseInt($("input[name=org_od_price]").val()) - item_coupon;
if(price == 0) {
if(!confirm(subj+"쿠폰의 할인 금액은 "+price+"원입니다.\n쿠폰을 적용하시겠습니까?")) {
return false;
}
}
if(od_price - price <= 0) {
alert("쿠폰할인금액이 주문금액보다 크므로 쿠폰을 적용할 수 없습니다.");
return false;
}
$("input[name=sc_cp_id]").val("");
$("#sc_coupon_btn").text("쿠폰적용");
$("#sc_coupon_cancel").remove();
$("input[name=od_price]").val(od_price - price);
$("input[name=od_cp_id]").val(cp_id);
$("input[name=od_coupon]").val(price);
$("input[name=od_send_coupon]").val(0);
$("#od_cp_price").text(number_format(String(price)));
$("#sc_cp_price").text(0);
calculate_order_price();
$("#od_coupon_frm").remove();
$("#od_coupon_btn").text("변경").focus();
if(!$("#od_coupon_cancel").size())
$("#od_coupon_btn").after("<button type=\"button\" id=\"od_coupon_cancel\" class=\"cp_cancel\">취소</button>");
});
$(document).on("click", "#od_coupon_close", function() {
$("#od_coupon_frm").remove();
$("#od_coupon_btn").focus();
});
$(document).on("click", "#od_coupon_cancel", function() {
var org_price = $("input[name=org_od_price]").val();
var item_coupon = parseInt($("input[name=item_coupon]").val());
$("input[name=od_price]").val(org_price - item_coupon);
$("input[name=sc_cp_id]").val("");
$("input[name=od_coupon]").val(0);
$("input[name=od_send_coupon]").val(0);
$("#od_cp_price").text(0);
$("#sc_cp_price").text(0);
calculate_order_price();
$("#od_coupon_frm").remove();
$("#od_coupon_btn").text("쿠폰적용").focus();
$(this).remove();
$("#sc_coupon_btn").text("쿠폰적용");
$("#sc_coupon_cancel").remove();
});
$("#sc_coupon_btn").click(function() {
$("#sc_coupon_frm").remove();
var $this = $(this);
var price = parseInt($("input[name=od_price]").val());
var send_cost = parseInt($("input[name=od_send_cost]").val());
$.post(
"./ordersendcostcoupon.php",
{ price: price, send_cost: send_cost },
function(data) {
$this.after(data);
}
);
});
$(document).on("click", ".sc_cp_apply", function() {
var $el = $(this).closest("tr");
var cp_id = $el.find("input[name='s_cp_id[]']").val();
var price = parseInt($el.find("input[name='s_cp_prc[]']").val());
var subj = $el.find("input[name='s_cp_subj[]']").val();
var send_cost = parseInt($("input[name=od_send_cost]").val());
if(parseInt(price) == 0) {
if(!confirm(subj+"쿠폰의 할인 금액은 "+price+"원입니다.\n쿠폰을 적용하시겠습니까?")) {
return false;
}
}
$("input[name=sc_cp_id]").val(cp_id);
$("input[name=od_send_coupon]").val(price);
$("#sc_cp_price").text(number_format(String(price)));
calculate_order_price();
$("#sc_coupon_frm").remove();
$("#sc_coupon_btn").text("변경").focus();
if(!$("#sc_coupon_cancel").size())
$("#sc_coupon_btn").after("<button type=\"button\" id=\"sc_coupon_cancel\" class=\"cp_cancel\">취소</button>");
});
$(document).on("click", "#sc_coupon_close", function() {
$("#sc_coupon_frm").remove();
$("#sc_coupon_btn").focus();
});
$(document).on("click", "#sc_coupon_cancel", function() {
$("input[name=od_send_coupon]").val(0);
$("#sc_cp_price").text(0);
calculate_order_price();
$("#sc_coupon_frm").remove();
$("#sc_coupon_btn").text("쿠폰적용").focus();
$(this).remove();
});
//해당라인 찾아서 바꿔주세요
// 쿠폰
if($is_member) {
$cp_button = '';
$cp_count = 0;
$sql = " select cp_id
from {$g5['g5_shop_coupon_table']}
where mb_id IN ( '{$member['mb_id']}', '전체회원' )
and cp_start <= '".G5_TIME_YMD."'
and cp_end >= '".G5_TIME_YMD."'
and cp_minimum <= '$sell_price'
and (
( cp_method = '0' and cp_target = '{$row['it_id']}' )
OR
( cp_method = '1' and ( cp_target IN ( '{$row['ca_id']}', '{$row['ca_id2']}', '{$row['ca_id3']}' ) ) )
) ";
$res = sql_query($sql);
for($k=0; $cp=sql_fetch_array($res); $k++) {
if(is_used_coupon($member['mb_id'], $cp['cp_id']))
continue;
$cp_count++;
}
if($cp_count) {
$cp_button = '<button type="button" class="cp_btn">쿠폰적용</button>';
$it_cp_count++;
}
}