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
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
|
<?php //echo "사용중지"; exit; // 사용중지 include_once("./_common.php"); include("./include/Ordercommon.php"); include($_SERVER["DOCUMENT_ROOT"]."/lib/common2.lib.php");
function xpay_file_log($sql,$res_array){ $fp = fopen($_SERVER['DOCUMENT_ROOT']."/xpay/lgdacom/log/paynow_note_url_".date("Ymd").".txt",'a'); if($sql == "noteurl_start"){ fwrite($fp,"\n\n\n"); } fwrite($fp,"========================".date("Y-m-d H:i:s")."======================== \n"); fwrite($fp,"$sql \n"); foreach($res_array as $key => $val){ fwrite($fp,"{$key} = {$val} \n"); } fclose($fp); }
xpay_file_log("noteurl_start",$_POST); // 파일로그
$Authty['SC0010'] = 'card'; $Authty['SC0030'] = 'iche'; $Authty['SC0040'] = 'virtual';
/* * [상점 결제결과처리(DB) 페이지] * * 1) 위변조 방지를 위한 hashdata값 검증은 반드시 적용하셔야 합니다. * */ $LGD_RESPCODE = $_POST["LGD_RESPCODE"]; // 응답코드: 0000(성공) 그외 실패 $LGD_RESPMSG = $_POST["LGD_RESPMSG"]; // 응답메세지 $LGD_MID = $_POST["LGD_MID"]; // 상점아이디 $LGD_OID = $_POST["LGD_OID"]; // 주문번호 $LGD_AMOUNT = $_POST["LGD_AMOUNT"]; // 거래금액 $LGD_TID = $_POST["LGD_TID"]; // LG유플러스에서 부여한 거래번호 $LGD_PAYTYPE = $_POST["LGD_PAYTYPE"]; // 결제수단코드 $LGD_PAYDATE = $_POST["LGD_PAYDATE"]; // 거래일시(승인일시/이체일시) $LGD_HASHDATA = $_POST["LGD_HASHDATA"]; // 해쉬값 $LGD_FINANCECODE = $_POST["LGD_FINANCECODE"]; // 결제기관코드(은행코드) $LGD_FINANCENAME = $_POST["LGD_FINANCENAME"]; // 결제기관이름(은행이름) $LGD_ESCROWYN = $_POST["LGD_ESCROWYN"]; // 에스크로 적용여부 $LGD_TIMESTAMP = $_POST["LGD_TIMESTAMP"]; // 타임스탬프 $LGD_ACCOUNTNUM = $_POST["LGD_ACCOUNTNUM"]; // 계좌번호(무통장입금) $LGD_CASTAMOUNT = $_POST["LGD_CASTAMOUNT"]; // 입금총액(무통장입금) $LGD_CASCAMOUNT = $_POST["LGD_CASCAMOUNT"]; // 현입금액(무통장입금) $LGD_CASFLAG = $_POST["LGD_CASFLAG"]; // 무통장입금 플래그(무통장입금) - 'R':계좌할당, 'I':입금, 'C':입금취소 $LGD_CASSEQNO = $_POST["LGD_CASSEQNO"]; // 입금순서(무통장입금) $LGD_CASHRECEIPTNUM = $_POST["LGD_CASHRECEIPTNUM"]; // 현금영수증 승인번호 $LGD_CASHRECEIPTSELFYN = $_POST["LGD_CASHRECEIPTSELFYN"]; // 현금영수증자진발급제유무 Y: 자진발급제 적용, 그외 : 미적용 $LGD_CASHRECEIPTKIND = $_POST["LGD_CASHRECEIPTKIND"]; // 현금영수증 종류 0: 소득공제용 , 1: 지출증빙용 $LGD_PAYER = $_POST["LGD_PAYER"]; // 입금자명 /* * 구매정보 */ $LGD_BUYER = $_POST["LGD_BUYER"]; // 구매자 $LGD_PRODUCTINFO = $_POST["LGD_PRODUCTINFO"]; // 상품명 $LGD_BUYERID = $_POST["LGD_BUYERID"]; // 구매자 ID $LGD_BUYERADDRESS = $_POST["LGD_BUYERADDRESS"]; // 구매자 주소 $LGD_BUYERPHONE = $_POST["LGD_BUYERPHONE"]; // 구매자 전화번호 $LGD_BUYEREMAIL = $_POST["LGD_BUYEREMAIL"]; // 구매자 이메일 $LGD_BUYERSSN = $_POST["LGD_BUYERSSN"]; // 구매자 주민번호 $LGD_PRODUCTCODE = $_POST["LGD_PRODUCTCODE"]; // 상품코드 $LGD_RECEIVER = $_POST["LGD_RECEIVER"]; // 수취인 $LGD_RECEIVERPHONE = $_POST["LGD_RECEIVERPHONE"]; // 수취인 전화번호 $LGD_DELIVERYINFO = $_POST["LGD_DELIVERYINFO"]; // 배송지 //$LGD_MERTKEY = "95160cce09854ef44d2edb2bfb05f9f3"; //LG유플러스에서 발급한 상점키로 변경해 주시기 바랍니다. lgdacomxpay 용 머트키 //$LGD_MERTKEY = "706fd333712ea2404cf6dc5842113f76"; //LG유플러스에서 발급한 상점키로 변경해 주시기 바랍니다. queensmet 용 머트키 $LGD_MERTKEY = "8bf2cd526fe19625a9e627d0b1f13128"; //LG유플러스에서 발급한 상점키로 변경해 주시기 바랍니다. mjsoft007 용 머트키
$res_array = $_POST; $post = $_POST;
$hash_ori = $LGD_MID."^".$LGD_OID."^".$LGD_AMOUNT."^".$LGD_RESPCODE."^".$LGD_TIMESTAMP."^".$LGD_MERTKEY; $LGD_HASHDATA2 = md5($LGD_MID.$LGD_OID.$LGD_AMOUNT.$LGD_RESPCODE.$LGD_TIMESTAMP.$LGD_MERTKEY);
$json = json_encode($res_array); $post_json = json_encode($_POST);
// 로그 저장 $sql = "insert into xpay_log set p_type='note_url_{$res_array['LGD_CASFLAG']}', mid = '{$res_array['LGD_MID']}', oid = '{$res_array['LGD_OID']}', amount = '{$res_array['LGD_AMOUNT']}', buyer = '{$res_array['LGD_BUYER']}', prodinfo = '{$res_array['LGD_PRODUCTINFO']}', timestamp = '".date("YmdHis")."', pay_type= '{$res_array['LGD_PAYTYPE']}', lgdhash = '$LGD_HASHDATA2', hash_ori = '$hash_ori', resmsg = '{$res_array['LGD_RESPMSG']}', rescode = '{$res_array['LGD_RESPCODE']}', tid = '{$res_array['LGD_TID']}', authnum = '{$res_array['LGD_FINANCENAME']}', res_json = '$json' , post_json = '$post_json' "; mysql_query($sql); /* * 상점 처리결과 리턴메세지 * * OK : 상점 처리결과 성공 * 그외 : 상점 처리결과 실패 * * ※ 주의사항 : 성공시 'OK' 문자이외의 다른문자열이 포함되면 실패처리 되오니 주의하시기 바랍니다. */ $resultMSG = iconv("utf8","euckr","결제결과 상점 DB처리(LGD_CASNOTEURL) 결과값을 입력해 주시기 바랍니다.");
$post['OrdPhone'] = $post['tel1']."-".$post['tel2']."-".$post['tel3']; $post['OrdPhone2'] = $post['hp1']."-".$post['hp2']."-".$post['hp3']; $post['DlvPost'] = $post['post1'].$post['post2']; $reg_date = date("Y-m-d H:i:s",time());
if($res_array['LGD_PAYTYPE']=='SC0030'){ // 실시간 계좌이체일 경우
$ICHE_OUTBANKMASTER = $res_array['LGD_ACCOUNTOWNER']; // 계좌주명 $reciept[0] = '소득공제'; $reciept[1] = '지출증빙'; $ICHE_OUTBANKNAME = $res_array['LGD_CASHRECEIPTNUM']."/".$res_array['LGD_CASHRECEIPTSELFYN']."/".$reciept[$res_array['LGD_CASHRECEIPTKIND']]; // 현금영수증 정보
} else if($res_array['LGD_PAYTYPE']=='SC0040'){ // 가상계좌 일경우 경우
$ICHE_OUTACCTNO = $res_array['LGD_ACCOUNTNUM']; // 가상계좌발급번호 $ICHE_OUTBANKMASTER = $res_array['LGD_SAOWNER']; // 가상계좌 입금계좌주명 $reciept[0] = '소득공제'; $reciept[1] = '지출증빙'; $ICHE_OUTBANKNAME = $res_array['LGD_CASHRECEIPTNUM']."/".$res_array['LGD_CASHRECEIPTSELFYN']."/".$reciept[$res_array['LGD_CASHRECEIPTKIND']]; // 현금영수증 정보 $bank = $res_array['LGD_CASFLAG'];
}
if ( $LGD_HASHDATA2 == $LGD_HASHDATA ) { //해쉬값 검증이 성공이면 if ( "0000" == $LGD_RESPCODE ){ //결제가 성공이면 if( "R" == $LGD_CASFLAG ) { /* * 무통장 할당 성공 결과 상점 처리(DB) 부분 * 상점 결과 처리가 정상이면 "OK" */ //if( 무통장 할당 성공 상점처리결과 성공 ) $res_array['LGD_ESCROWYN'] = trim($res_array['LGD_ESCROWYN']); $insertOrder = " insert into mBoard_order set rOrdNo = '{$res_array['LGD_OID']}', AuthTy = '{$Authty[$res_array['LGD_PAYTYPE']]}', memberId = '{$post['UserId']}', OrdNm ='{$post['Mname']}', OrdPhone = '{$post['OrdPhone']}', OrdPhone2 = '{$post['OrdPhone2']}', UserEmail = '{$post['Memail']}', DlvAddr = '{$post['Madd']}', DlvPost = '{$post['DlvPost']}', OrdComp = '{$post['Mcompany']}', ProductCode = '{$post['ProductCode']}', rProdNm = '{$post['LGD_PRODUCTINFO']}', rProdNm2 = '', rProdNm3 = '', rProdNm4 = '', rAmt = '{$res_array['LGD_AMOUNT']}', rSuccYn = 'i', rCardNm = '{$res_array['LGD_FINANCENAME']} {$res_array['LGD_CARDNUM']}', rApprNo = '{$res_array['LGD_TID']}', ICHE_OUTBANKNAME = '{$ICHE_OUTBANKNAME}', ICHE_OUTACCTNO = '{$ICHE_OUTACCTNO}', ICHE_OUTBANKMASTER = '{$ICHE_OUTBANKMASTER}', ICHE_AMOUNT = '{$ICHE_AMOUNT}', bank = '$bank', Pcnt = '{$res_array['LGD_ESCROWYN']}', reg_date = '$reg_date', InvoiceNum = '{$res_array['LGD_RESPMSG']}:{$res_array['LGD_OID']}/{$res_array['LGD_RESPCODE']}', Deliver = '', senditem = '{$post['SendItem']}', salestopvalue = '', mod_date = '$reg_date' ";
xpay_file_log("1:".$insertOrder,""); // 파일로그
mysql_query($insertOrder); //order_log("mBoard_order", $insertOrder);
$sql = "select count(*) as cnt from mBoard_order where rApprNo = '{$res_array['LGD_TID']}' "; $res = mysql_query($sql); $info = mysql_fetch_array($res); if($info['cnt']>0){ $resultMSG = "OK"; } else { $resultMSG = "DB 입력 실패"; }
}else if( "I" == $LGD_CASFLAG ) { /* * 무통장 입금 성공 결과 상점 처리(DB) 부분 * 상점 결과 처리가 정상이면 "OK" */ //if( 무통장 입금 성공 상점처리결과 성공 ) $sql = "select * from mBoard_order where rOrdNo = '{$res_array['LGD_OID']}' "; $res = mysql_query($sql); $odinfo = mysql_fetch_array($res);
$OrdNo = $res_array['LGD_OID']; $OrdNoArr = explode("-",$OrdNo); //A,B 추출
$ICHE_AMOUNT = $res_array['LGD_CASTAMOUNT']."/".$res_array['LGD_PAYDATE']; // 총입금 금액과 입금일시는 저장한다.
$sql = "update mBoard_order set rSuccYn = 'y', ICHE_OUTBANKNAME = '$ICHE_OUTBANKNAME', bank = '$LGD_CASFLAG', ICHE_AMOUNT = '$ICHE_AMOUNT' , mod_date = '$reg_date' where rOrdNo = '{$res_array['LGD_OID']}' ";
xpay_file_log($sql,""); // 파일로그 $sql_temp = $sql; $res = mysql_query($sql);
$sql = "select count(*) as cnt from mBoard_order where rOrdNo = '{$res_array['LGD_OID']}' and ICHE_AMOUNT <> '' "; $res = mysql_query($sql); $info = mysql_fetch_array($res); if($info['cnt']>0){ $resultMSG = "OK"; } else { $resultMSG = "입금통보 DB 입력 실패"; }
// 로그를 가져와서 포인트와 금액을 확인해서 포인트로 입력한다. $sql = "select post_json from xpay_log where tid = '{$res_array['LGD_TID']}' and p_type = 'note_url_R' "; $res = mysql_query($sql); $log_info = mysql_fetch_array($res); $post_json = json_decode($log_info['post_json']);
xpay_file_log($sql,$log_info); // 파일로그
if($post_json->LGD_ESCROWYN!='Y'){ // 에스크로일경우 정품번호 입력하지 않는다.
$category_code = $post_json->category_code; $Msw1 = substr($category_code,-2); $certiQry = " select certi_num from certinumManage WHERE category_code = '$category_code' "; $certiResult = mysql_query($certiQry); $certiRow = mysql_fetch_array($certiResult); $Certi_num = $certiRow[0];
xpay_file_log($certiQry,$certiRow); // 파일로그
//회원정보변경 $user_id = $post_json->UserId; $memberQry = " update member set Certi_num ='$Certi_num', End_day ='$End_day', Start_day='$Start_day',Mdiv='2',Mup='1',Msw1='$Msw1',Mper='1' where Mid ='$user_id' ";
mysql_query( $memberQry);
xpay_file_log($memberQry,""); // 파일로그
}
}else if( "C" == $LGD_CASFLAG ) { /* * 무통장 입금취소 성공 결과 상점 처리(DB) 부분 * 상점 결과 처리가 정상이면 "OK" */ //if( 무통장 입금취소 성공 상점처리결과 성공 ) $sql = "select * from mBoard_order where rOrdNo = '{$res_array['LGD_OID']}' "; $res = mysql_query($sql); $odinfo = mysql_fetch_array($res);
$sql = "update mBoard_order set rSuccYn = 'n', ICHE_OUTBANKNAME = '$ICHE_OUTBANKNAME', bank = '$LGD_CASFLAG', ICHE_AMOUNT = '$ICHE_AMOUNT', InvoiceNum = '$LGD_RESPMSG' , mod_date = '$reg_date' where rOrdNo = '{$res_array['LGD_OID']}' ";
xpay_file_log($sql,""); // 파일로그 $sql_temp = $sql; $res = mysql_query($sql);
$resultMSG = "OK"; } } else { //결제가 실패이면 /* * 거래실패 결과 상점 처리(DB) 부분 * 상점결과 처리가 정상이면 "OK" */ //if( 결제실패 상점처리결과 성공 ) $resultMSG = "OK"; } } else { //해쉬값이 검증이 실패이면
$resultMSG = "결제결과 상점 DB처리(LGD_CASNOTEURL) 해쉬값 검증이 실패하였습니다.";
$sql = "insert into xpay_log set p_type='not_hash_fail', mid = '{$res_array['LGD_MID']}', oid = '{$res_array['LGD_OID']}', amount = '{$res_array['LGD_AMOUNT']}', buyer = '{$res_array['LGD_BUYER']}', prodinfo = '{$res_array['LGD_PRODUCTINFO']}', timestamp = '".date("YmdHis")."', pay_type= '{$res_array['LGD_PAYTYPE']}', lgdhash = '$LGD_HASHDATA2', hash_ori = '$hash_ori', resmsg = '{$res_array['LGD_RESPMSG']}', rescode = '{$res_array['LGD_RESPCODE']}', tid = '{$res_array['LGD_TID']}', authnum = '{$res_array['LGD_FINANCENAME']}', res_json = '$json' , post_json = '$post_json', resultMSG = '{$resultMSG}' "; mysql_query($sql);
/* * hashdata검증 실패 로그를 처리하시기 바랍니다. */ } if($resultMSG!='OK'){ $sql = "insert into xpay_log set p_type='not_fail', mid = '{$res_array['LGD_MID']}', oid = '{$res_array['LGD_OID']}', amount = '{$res_array['LGD_AMOUNT']}', buyer = '{$res_array['LGD_BUYER']}', prodinfo = '{$res_array['LGD_PRODUCTINFO']}', timestamp = '".date("YmdHis")."', pay_type= '{$res_array['LGD_PAYTYPE']}', lgdhash = '$LGD_HASHDATA2', hash_ori = '$hash_ori', resmsg = '{$resultMSG}', rescode = '{$res_array['LGD_RESPCODE']}', tid = '{$res_array['LGD_TID']}', authnum = '{$res_array['LGD_FINANCENAME']}', res_json = '$sql_temp' , post_json = '$post_json', resultMSG = '{$resultMSG}' "; mysql_query($sql); }
xpay_file_log("2:".$resultMSG,""); // 파일로그 echo $resultMSG; ?>
|