채택완료

비회원주문시, 추천인에게 포인트 지급방법

안녕하세요.

서브도메인을 회원id로 넣고 추천인을 자동 등록되게 했습니다

 http://sir.co.kr/qa/88505#answer_88506

skin/member/basic/register_form.skin.php 
그래서 현재, 회원들이
회원 가입하여 구매할 때 추천인에게 구매액의 몇%를 포인트로 주게 했습니다.
그런데 비회원이 주문해도 추천인에게 포인트가 적립되도록 하고 싶어서
lib/shop.lib.php 파일에 삽입햇는데, 사이트가 먹통이 되어 버리네요..
비회원이 상품을 구매할 때도 접속 링크는 서브도메인이 유지됩니다.
그래서, 접속주소 중에서 첫번째 "추천인아이디"를 배열로 추출해서
회원 아이디랑 일치하는 경우에
비회원이 구매한 구매액의 일정 %를 포인트를 주고 싶은데요..
고수님들의 조언을 부탁드립니다.​
Copy
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'];            $mb = get_member($od_row['mb_id']);            $po_content = "소개해 주신 {$mb['mb_id']} 님의 주문번호 {$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']}");            //추천인에게 포인트 주기 시작, 윗줄 제거
            if ($mb['mb_recommend']){                $recom_mb = get_member($mb['mb_recommend']);                if ($recom_mb['mb_id']){                    insert_point($recom_mb['mb_id'], $po_point, $po_content, "@delivery", $od_row['mb_id'], "{$od_row['od_id']},{$row['ct_id']}");                }            }            //여기까지는 아주 잘 되는데
            //비회원 구매시 결제액의 몇%를 서브도메인 추천인에게 포인트 주기
            //여기부터 안됨        }else if{            $domain_arr = explode('.',$_SERVER[HTTP_HOST]);            $dom = sql_fetch("select count(*) as cnt from g5_member where mb_id='".$domain_arr[0]."' and mb_level > '2'");            if ($domain_arr[0] == $dom['mb_id'])                insert_point($dom['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']}' ");    }}

답변 1개

채택된 답변
+20 포인트

25행 if문이 틀렷습니다

if ($od_row['mb_id'] && $row['ct_point'] > 0) {

~~

}else if --> else if( !$row[mb_id] && $row['ct_point'] > 0) 위의 조건문 때문에 이렇게 되어야겠군요

그리고 

and mb_level > '2' <---이 부분은 특별한 레벨 조건이 아니라면 and mb_level > '1' 이 되어야할 것 같군요 

답변을 작성하려면 로그인이 필요합니다.