주문상태 완료인데 포인트 자동적립이 안 됩니다.

주문상태 완료인데 포인트 자동적립이 안 됩니다.

QA

주문상태 완료인데 포인트 자동적립이 안 됩니다.

답변 1

본문

신용카드 결제 시 주문상태가 입금이 아닌 완료로 바뀌도록 설정했고, 주문완료 0일 후에 신용카드도 포인트 자동적립 되도록 했는데 신용카드 결제완료 시 포인트 자동적립이 안 됩니다.

 

orderformupdate.php


else if ($od_settle_case == "신용카드")
.
.
.
    if($od_misu == 0)
        $od_status      = '완료';

 

1888652687_1745335092.5755.png

1888652687_1745333952.0913.png

 

 

phpmyadmin을 봐보니까 g5_shop_cart에 ct_status가 "완료"가 되었지만 ct_point_use가 0으로 나와있고,

 

아래 주문내역에서 "보기" 버튼을 누르면 그제서야 ct_point_use가 1로 바뀌면서 포인트가 적립이 됩니다.

 

 

1888652687_1745334135.6515.png

 

 

shop.lip.php에

 


function save_order_point($ct_status="완료")
{
    global $g5, $default;
 
    $beforedays = date("Y-m-d H:i:s", ( time() - (86400 * (int)$default['de_point_days']) ) ); // 86400초는 하루
    $sql = " select * from {$g5['g5_shop_cart_table']} where ct_status = '$ct_status' and ct_point_use = '0' and ct_time <= '$beforedays' ";
    $result = sql_query($sql);
    for ($i=0; $row=sql_fetch_array($result); $i++) {
        // 회원 ID 를 얻는다.
        $od_row = sql_fetch("select od_id, mb_id from {$g5['g5_shop_order_table']} where od_id = '{$row['od_id']}' ");
        if ($od_row['mb_id'] && $row['ct_point'] > 0) { // 회원이면서 포인트가 0보다 크다면
            $po_point = $row['ct_point'] * $row['ct_qty'];
            $po_content = "주문번호 {$od_row['od_id']} ({$row['ct_id']})";
            insert_point($od_row['mb_id'], $po_point, $po_content, "@delivery", $od_row['mb_id'], "{$od_row['od_id']},{$row['ct_id']}");
        }
        sql_query("update {$g5['g5_shop_cart_table']} set ct_point_use = '1' where ct_id = '{$row['ct_id']}' ");
    }
}

 

위와 같이 되어있고

 

adm/shop_admin/orderform.php에

 

// 완료된 주문에 포인트를 적립한다.
save_order_point("완료");

 

라고 되어 있습니다.

 

orderformupdate.php에

 

아래 코드 바로 위에

 

goto_url(G5_SHOP_URL.'/orderinquiryview.php?od_id='.$od_id.'&uid='.$uid);

 

// 완료된 주문에 포인트를 적립한다.
save_order_point("완료");

 

이것도 해봤는데 안 되고요.

 

신용카드 결제 시 바로 "완료"처리가 되는데 포인트 자동적립이 안 되고,

 

왜 위 주문내역에 "보기" 버튼을 클릭해야 포인트 자동적립이 되는 걸까요?

 

전문가님들께 조언을 구합니다.

이 질문에 댓글 쓰기 :

답변 1

관리화면 > 쇼핑몰설정에서 결제설정 탭메뉴에서 

신용카드, 계좌이체, 휴대폰 결제시 포인트를 적립 설정 예로 되어 있을까요?

카드결제 완료 처리전인 상단에 적용한거라면

안될수 있으니

완료 처리 상태 후 처리 되도록 하단에 해당 소스를 적용하셔야 할듯 합니다.

상태 변경이 완료 된것만 반영되기 때문 입니다.


// 완료된 주문에 포인트를 적립한다.
save_order_point("완료");

네 플라이님 답변 감사합니다.

그래서 orderformupdate.php에서

신용카드 결제 시 미수금 0원으로 od_misu가 0이라서 od_status가 완료로 바뀌게 해두었고,
(phpmyadmin에 ct_status를 보면 "완료"로 실제로 바뀌었습니다.)

동일 php파일 맨 하단에 있는

goto_url(G5_SHOP_URL.'/orderinquiryview.php?od_id='.$od_id.'&uid='.$uid);

부분 보면 orderinquiryview.php로 가기 전에

save_order_point("완료");

위 코드를 썼는데 포인트 자동적립이 안 되네요 ㅜㅜ

즉, orderformupdate.php에서

신용카드 결제 시 미수금 0원 --> status 완료 처리 --> save_order_point 완료 함수 발동 --> orderinquiryview 페이지로 이동

모두 다 이뤄지도록 했는데 왜 save_order_point 완료 함수만 안 되는 건지 궁금하네요 ㅜㅜ

제가 원본 글에 쓴 거에 어떤 부분이 틀린 건지를 모르겠어요..ㅜ

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
filter #php ×
전체 15,826
© SIRSOFT
현재 페이지 제일 처음으로