/home/mjc1/public_html/shop/settle_nicepay_common.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
<?php
include_once('./_common.php');


//**********************************************************************************
// 구매자가 입금하면 NICE정보토인에서  전달하는 가상계좌이체의 결과를 수신하여 DB 처리 하는 부분 입니다.    
// 수신되는 필드에 대한 DB 작업을 수행하십시오.
// 수신필드 자세한 내용은 메뉴얼 참조
//**********************************************************************************    

    
@extract($_GET);
    @
extract($_POST);
    @
extract($_SERVER);

    
$PayMethod $PayMethod;                //지불수단
    
$M_ID $MID;                                        //상점ID
    
$MallUserID $MallUserID;            //회원사 ID
    
$Amt $Amt;                                        //금액
    
$name $name    ;                                //구매자명
    
$GoodsName $GoodsName;                //상품명
    
$TID =     $TID;                                    //거래번호
    
$MOID $MOID;                                    //주문번호
    
$AuthDate $AuthDate;                    //입금일시 (yyMMddHHmmss)    
    
$ResultCode $ResultCode;            //결과코드 ('4110' 경우 입금통보)
    
$ResultMsg  $ResultMsg;            //결과메시지    
    
$VbankNum $VbankNum;                    //가상계좌번호
    
$FnCd $FnCd;                                    //가상계좌 은행코드
    
$VbankName $VbankName;                //가상계좌 은행명
    
$VbankInputName $VbankInputName;    //입금자 명
    
    //가상계좌채번시 현금영수증 자동발급신청이 되었을경우 전달되며 
    //RcptTID 에 값이 있는경우만 발급처리 됨    
    
$RcptTID $RcptTID;                            //현금영수증 거래번호
    
$RcptType $RcptType;                        //현금 영수증 구분(0:미발행, 1:소득공제용, 2:지출증빙용)
    
$RcptAuthCode $RcptAuthCode;        //현금영수증 승인번호
        
    
    
    //**********************************************************************************
    //이부분에 로그파일 경로를 수정해주세요.    
     //$logfile = fopen("C:\\NICEPAY20\\log\\nice_vacct_noti_result.log", "a+" );
     
$logfile fopenG5_DATA_PATH."/log/nice_vacct_noti_result.log""a+" );
    
    
//로그는 문제발생시 오류 추적의 중요데이터 이므로 반드시 적용해주시기 바랍니다.
    //**********************************************************************************
     
  
fwrite$logfile,"************************************************\r\n");
  
fwrite$logfile,"PayMethod : ".$PayMethod."\r\n");
  
fwrite$logfile,"MID : ".$MID."\r\n");
  
fwrite$logfile,"MallUserID : ".$MallUserID."\r\n");
  
fwrite$logfile,"Amt : ".$Amt."\r\n");
  
fwrite$logfile,"name : ".$name."\r\n");
  
fwrite$logfile,"GoodsName : ".$GoodsName."\r\n");
  
fwrite$logfile,"TID : ".$TID."\r\n");
  
fwrite$logfile,"MOID : ".$MOID."\r\n");
  
fwrite$logfile,"AuthDate : ".$AuthDate."\r\n");
  
fwrite$logfile,"ResultCode : ".$ResultCode."\r\n");
  
fwrite$logfile,"ResultMsg : ".$ResultMsg."\r\n");
  
fwrite$logfile,"VbankNum : ".$VbankNum."\r\n");
  
fwrite$logfile,"FnCd : ".$FnCd."\r\n");
  
fwrite$logfile,"VbankName : ".$VbankName."\r\n");
  
fwrite$logfile,"VbankInputName : ".$VbankInputName."\r\n");
  
fwrite$logfile,"RcptTID : ".$RcptTID."\r\n");
  
fwrite$logfile,"RcptType : ".$RcptType."\r\n");
  
fwrite$logfile,"RcptAuthCode : ".$RcptAuthCode."\r\n");
  
fwrite$logfile,"************************************************\r\n");

  
fclose$logfile );

  
$flag "FAIL";

$cash = array();
$cash['TID']       = $RcptTID;
$cash['ApplNum']   = $RcptAuthCode;
$cash['ApplDate']  = substr($AuthDate,0,6);
$cash['ApplTime']  = substr($AuthDate,6,6);
$cash['CSHR_Type'] = $RcptType;
$cash_info serialize($cash);

if(
1==&& $MOID!=''){
    
// 입금결과 처리
    
$sql " select pp_id, od_id from {$g5['g5_shop_personalpay_table']} where pp_id = '$MOID' and pp_app_no = '$VbankNum' ";
    
$row sql_fetch($sql);

    
$result false;
    
$receipt_time $AuthDate;

    if(
$row['pp_id']) {
        
// 개인결제 UPDATE
        
$sql " update {$g5['g5_shop_personalpay_table']}
                    set pp_receipt_price    = '
$Amt',
                        pp_receipt_time     = '
$receipt_time',
                        od_cash = '
$RcptType', 
                        od_cash_no = '
$RcptAuthCode',
                        od_cash_info = '
$cash_info'
                    where pp_id = '
$MOID'
                      and pp_app_no = '
$VbankNum' ";
        
sql_query($sqlfalse);

        if(
$row['od_id']) {
            
// 주문서 UPDATE
            
$receipt_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"$receipt_time);
            
$sql " update {$g5['g5_shop_order_table']}
                        set od_receipt_price = od_receipt_price + '
$Amt',
                            od_receipt_time = '
$receipt_time',
                            od_shop_memo = concat(od_shop_memo, \"\\n개인결제 "
.$row['pp_id']." 로 결제완료 - ".$receipt_time."\")
                      where od_id = '
{$row['od_id']}' ";
            
$result sql_query($sqlFALSE);
        }
    } else {
        
// 주문서 UPDATE
        
$sql " update {$g5['g5_shop_order_table']}
                    set od_receipt_price = '
$Amt',
                        od_receipt_time = '
$receipt_time',
                        od_cash = '
$RcptType', 
                        od_cash_no = '
$RcptAuthCode',
                        od_cash_info = '
$cash_info'
                  where od_id = '
$MOID'
                    and od_app_no = '
$VbankNum' ";
        
$result sql_query($sqlFALSE);
    }

    if(
$result) {
        if(
$row['od_id'])
            
$od_id $row['od_id'];
        else
            
$od_id $MOID;

        
// 주문정보 체크
        
$sql " select count(od_id) as cnt
                    from 
{$g5['g5_shop_order_table']}
                    where od_id = '
$od_id'
                      and od_status = '주문' "
;
        
$row sql_fetch($sql);

        if(
$row['cnt'] == 1) {
            
// 미수금 정보 업데이트
            
$info get_order_info($od_id);

            
$sql " update {$g5['g5_shop_order_table']}
                        set od_misu = '
{$info['od_misu']}' ";
            if(
$info['od_misu'] == 0)
                
$sql .= " , od_status = '입금' ";
            
$sql .= " where od_id = '$od_id' ";
            
sql_query($sqlFALSE);

            
// 장바구니 상태변경
            
if($info['od_misu'] == 0) {
                
$sql " update {$g5['g5_shop_cart_table']}
                            set ct_status = '입금'
                            where od_id = '
$od_id' ";
                
sql_query($sqlFALSE);
            }
        }
        
$flag "OK";
    }    
}
  
  
//가맹점 DB처리     
  
   //**************************************************************************************************
    //**************************************************************************************************
    //결제 데이터 통보 설정 > “OK” 체크박스에 체크한 경우" 만 처리 하시기 바랍니다. (메뉴얼 6page 참고) 
    //**************************************************************************************************        
    //위에서 상점 데이터베이스에 등록 성공유무에 따라서 성공시에는 "OK"를 NICEPAY로
    //리턴하셔야합니다. 아래 조건에 데이터베이스 성공시 받는 FLAG 변수를 넣으세요
    //(주의) OK를 리턴하지 않으시면 NICEPAY 서버는 "OK"를 수신할때까지 계속 재전송을 시도합니다
    //기타 다른 형태의 PRINT(out.print)는 하지 않으시기 바랍니다    
    //if (데이터베이스 등록 성공 유무 조건변수 = true)
    //{
            //            echo "OK";                        // 절대로 지우지마세요
    //}
    //else 
    //{
            //            echo "FAIL";                        // 절대로 지우지마세요
    //}
    //*************************************************************************************************    
    //*************************************************************************************************

    
echo $flag;

?>