비회원주문시, 추천인에게 포인트 지급방법
본문
안녕하세요.
서브도메인을 회원id로 넣고 추천인을 자동 등록되게 했습니다
http://sir.co.kr/qa/88505#answer_88506
skin/member/basic/register_form.skin.php
그래서 현재, 회원들이
http://추천인아이디.test.com 으로 홍보하고,
회원 가입하여 구매할 때 추천인에게 구매액의 몇%를 포인트로 주게 했습니다.
그런데 비회원이 주문해도 추천인에게 포인트가 적립되도록 하고 싶어서
lib/shop.lib.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'];
$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
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' 이 되어야할 것 같군요
답변을 작성하시기 전에 로그인 해주세요.