回答編集履歴

1

ソースの修正

2017/08/26 06:41

投稿

blacksanta
blacksanta

スコア23

test CHANGED
@@ -1,647 +1,3 @@
1
1
  teratailの質問は、上限が10000文字で質問には追記できないので回答に追記します。
2
2
 
3
- ```php
4
3
 
5
- /*------------------------------------------------
6
-
7
- ■関数名
8
-
9
- SetCredit()
10
-
11
- ■概要
12
-
13
- DBへの登録、画面遷移
14
-
15
- ■引数
16
-
17
- $msg:必須チェックの結果メッセージ
18
-
19
- $ref_url:パースしたリファラの配列(include_credit.incで取得)
20
-
21
- ■戻り値
22
-
23
- なし
24
-
25
- --------------------------------------------------*/
26
-
27
- function SetCredit($msg, $ref_url)
28
-
29
- {
30
-
31
-
32
-
33
- //---- グローバル変数の宣言 ----//
34
-
35
- // 生成済みインスタンス
36
-
37
- global $dec, $def, $db, $mysql, $parts, $mail, $tools, $session_keys;
38
-
39
- //-- グローバル変数の宣言 END --//
40
-
41
-
42
-
43
- // リファラチェック
44
-
45
- $ref_chk = '';
46
-
47
- if (isset($ref_url['host']) && $ref_url['host'] == $def->get('VCART_CREDIT_REFFER')) {
48
-
49
- $ref_chk = 'ok';
50
-
51
- } else {
52
-
53
- $ref_chk = 'ng';
54
-
55
- }
56
-
57
-
58
-
59
- // クレジット結果
60
-
61
- $credit_res = $_SESSION['rst'];
62
-
63
-
64
-
65
- // DBへの登録項目(エラー時の画面表示にも使用)
66
-
67
- $CREDIT_DATA = array(
68
-
69
- 'order_code' => $_SESSION['sod'],
70
-
71
- 'pid' => $_SESSION['pid'],
72
-
73
- 'rst' => $_SESSION['rst'],
74
-
75
- 'ap' => $_SESSION['ap'],
76
-
77
- 'ec' => $_SESSION['ec'],
78
-
79
- 'ta' => $_SESSION['ta'],
80
-
81
- 'job' => $_SESSION['job'],
82
-
83
- 'pod1' => $_SESSION['pod1'],
84
-
85
- 'acid1' => $_SESSION['acid1'],
86
-
87
- );
88
-
89
-
90
-
91
- //------ 受注データの更新 ------//
92
-
93
- // 決済データの登録
94
-
95
- if ($_SESSION['job'] != 'CANCEL') {
96
-
97
- // 該当データがあるか確認
98
-
99
- $where = <<<_SQL_
100
-
101
- `order_code` = '{$_SESSION['sod']}'
102
-
103
- AND
104
-
105
- `payment_id` = '1'
106
-
107
- AND
108
-
109
- (`payment_result` != 'ER000000000' OR `
110
-
111
- ` IS NULL)
112
-
113
- _SQL_;
114
-
115
-
116
-
117
- $order_count = $mysql->LineCount($def->get('DB_TBL_ORDER'), $where);
118
-
119
-
120
-
121
- // 該当データが1件のみ見つかれば更新
122
-
123
- $order_id = '';
124
-
125
- if ($order_count == 1) {
126
-
127
- $query = $mysql->ListWhere($def->get('DB_TBL_ORDER'), '', '', $where, '');
128
-
129
- $order = $db->fetchRecord($query);
130
-
131
-
132
-
133
- // 受注IDの取得(クエリ実行&メール送信用)
134
-
135
- $order_id = $order['id'];
136
-
137
-
138
-
139
- // 登録項目のエスケープ
140
-
141
- $EDIT_DATA = array(
142
-
143
- 'payment_result' => $_SESSION['ec'],
144
-
145
- );
146
-
147
- foreach ($EDIT_DATA as $key => $val) {
148
-
149
- $EDIT_DATA[$key] = $db->escapeString($val);
150
-
151
- }
152
-
153
-
154
-
155
- // クエリ生成&実行
156
-
157
- $tbl_name = $def->get('DB_TBL_ORDER');
158
-
159
- $_cl_sql = <<<_SQL_
160
-
161
- UPDATE `{$tbl_name}` SET
162
-
163
- `payment_result` = '{$EDIT_DATA["payment_result"]}'
164
-
165
- WHERE `id` = '{$order_id}';
166
-
167
- _SQL_;
168
-
169
- $db->query($_cl_sql);
170
-
171
- }
172
-
173
- }
174
-
175
-
176
-
177
- // 決済キャンセルデータの登録
178
-
179
- if ($_SESSION['job'] == 'CANCEL' && $_SESSION['ec'] == 'ER000000000') {
180
-
181
- // 該当データがあるか確認
182
-
183
- $where = <<<_SQL_
184
-
185
- `order_code` = '{$_SESSION['sod']}'
186
-
187
- AND
188
-
189
- `payment_id` = '1'
190
-
191
- AND
192
-
193
- `payment_result` = 'ER000000000'
194
-
195
- _SQL_;
196
-
197
- $order_count = $mysql->LineCount($def->get('DB_TBL_ORDER'), $where);
198
-
199
-
200
-
201
- // 該当データが1件のみ見つかれば更新
202
-
203
- $order_cancel_id = '';
204
-
205
- if ($order_count == 1) {
206
-
207
- $query = $mysql->ListWhere($def->get('DB_TBL_ORDER'), '', '', $where, '');
208
-
209
- $order = $db->fetchRecord($query);
210
-
211
-
212
-
213
- // 受注IDの取得(クエリ実行&メール送信用)
214
-
215
- $order_cancel_id = $order['id'];
216
-
217
-
218
-
219
- // 登録項目のエスケープ
220
-
221
- $EDIT_DATA = array(
222
-
223
- 'payment_result' => $_SESSION['ec'],
224
-
225
- 'cancel_flag' => 1,
226
-
227
- );
228
-
229
- foreach ($EDIT_DATA as $key => $val) {
230
-
231
- $EDIT_DATA[$key] = $db->escapeString($val);
232
-
233
- }
234
-
235
-
236
-
237
- // クエリ生成&実行
238
-
239
- $tbl_name = $def->get('DB_TBL_ORDER');
240
-
241
- $_cl_sql = <<<_SQL_
242
-
243
- UPDATE `{$tbl_name}` SET
244
-
245
- `payment_result` = '{$EDIT_DATA["payment_result"]}',
246
-
247
- `cancel_flag` = '{$EDIT_DATA["cancel_flag"]}'
248
-
249
- WHERE `id` = '{$order_id}';
250
-
251
- _SQL_;
252
-
253
- $db->query($_cl_sql);
254
-
255
- }
256
-
257
-
258
-
259
- //------- ポイントデータのキャンセル ---------//
260
-
261
-
262
-
263
- $tbl_name = $def -> get('DB_TBL_POINT');
264
-
265
- //---- 設定ファイルから直接取得する値 END ----//
266
-
267
-
268
-
269
- //------------- SQL用にデータをエスケープ -------------//
270
-
271
- $cancel_flag = 1;
272
-
273
- $order_id =$_SESSION['sod'];
274
-
275
- $POINT_DATA = array(
276
-
277
- 'cancel_flag' => $cancel_flag
278
-
279
- );
280
-
281
- //-------------------- SQL文の確定 --------------------//
282
-
283
- $_cl_sql = '';
284
-
285
- $where = "order_id=".$order_id;
286
-
287
- $_cl_query = $mysql-> ListWhere($tbl_name,'', 1, $where, '');
288
-
289
- $line = $db -> fetchRecord($_cl_query);
290
-
291
-
292
-
293
- // データが見つかった場合
294
-
295
- if ($line['order_id'] == $order_id) {
296
-
297
- // 各項目の設定
298
-
299
- $update = '';
300
-
301
- foreach ($POINT_DATA as $key => $val) {
302
-
303
- $update .= "`{$key}` = '{$val}', ";
304
-
305
- }
306
-
307
-
308
-
309
- $_cl_sql = <<<_SQL_
310
-
311
- UPDATE `{$tbl_name}` SET
312
-
313
- {$update}
314
-
315
- `update_time` = UNIX_TIMESTAMP()
316
-
317
- WHERE `order_id` = '$order_id';
318
-
319
- _SQL_;
320
-
321
- }
322
-
323
- //------------------ SQL文の確定 END ------------------//
324
-
325
-
326
-
327
- //SQL文がある場合はクエリーを流し込む
328
-
329
- if ($_cl_sql != '') {
330
-
331
- $db -> query($_cl_sql);
332
-
333
- }
334
-
335
-
336
-
337
- }
338
-
339
- //---- 受注データの更新 END ----//
340
-
341
-
342
-
343
- //------- カード決済登録 -------//
344
-
345
- // 該当データがあるか確認
346
-
347
- $where = <<<_SQL_
348
-
349
- `order_code` = {$_SESSION['sod']}
350
-
351
- AND
352
-
353
- `rst` IS NULL
354
-
355
- _SQL_;
356
-
357
-
358
-
359
- $credit_count = $mysql->LineCount($def->get('DB_TBL_R_CREDIT'), $where);
360
-
361
-
362
-
363
- // 該当データが1件のみ見つかれば更新、それ以外は新規に登録
364
-
365
- if ($credit_count == 1) {
366
-
367
- $query = $mysql->ListWhere($def->get('DB_TBL_R_CREDIT'), '', '', $where, '');
368
-
369
- $credit = $db->fetchRecord($query);
370
-
371
- $credit_id = $credit['id'];
372
-
373
-
374
-
375
- // 登録項目のエスケープ
376
-
377
- foreach ($CREDIT_DATA as $key => $val) {
378
-
379
- $CREDIT_DATA[$key] = $db->escapeString($val);
380
-
381
- }
382
-
383
-
384
-
385
- // 各項目の設定
386
-
387
- $update = '';
388
-
389
- foreach ($CREDIT_DATA as $key => $val) {
390
-
391
- $update .= "`{$key}` = '{$val}', ";
392
-
393
- }
394
-
395
-
396
-
397
- // クエリ生成&実行
398
-
399
- $tbl_name = $def->get('DB_TBL_R_CREDIT');
400
-
401
- $_cl_sql = <<<_SQL_
402
-
403
- UPDATE `{$tbl_name}` SET
404
-
405
- {$update}
406
-
407
- `response_time` = UNIX_TIMESTAMP()
408
-
409
- WHERE `id` = '{$credit_id}';
410
-
411
- _SQL_;
412
-
413
- $db->query($_cl_sql);
414
-
415
-
416
-
417
- } elseif ($CREDIT_DATA["rst"] != '') {
418
-
419
- // 登録項目のエスケープ
420
-
421
- foreach ($CREDIT_DATA as $key => $val) {
422
-
423
- $CREDIT_DATA[$key] = $db->escapeString($val);
424
-
425
- }
426
-
427
-
428
-
429
- // クエリ生成&実行
430
-
431
- $tbl_name = $def->get('DB_TBL_R_CREDIT');
432
-
433
- $_cl_sql = <<<_SQL_
434
-
435
- INSERT INTO `{$tbl_name}` (
436
-
437
- `id`,
438
-
439
- `order_code`,
440
-
441
- `regist_time`,
442
-
443
- `response_time`,
444
-
445
- `pid`,
446
-
447
- `rst`,
448
-
449
- `ap`,
450
-
451
- `ec`,
452
-
453
- `ta`,
454
-
455
- `job`,
456
-
457
- `pod1`,
458
-
459
- `acid1`
460
-
461
- )
462
-
463
- VALUES (
464
-
465
- NULL,
466
-
467
- '{$CREDIT_DATA["order_code"]}',
468
-
469
- UNIX_TIMESTAMP(),
470
-
471
- UNIX_TIMESTAMP(),
472
-
473
- '{$CREDIT_DATA["pid"]}',
474
-
475
- '{$CREDIT_DATA["rst"]}',
476
-
477
- '{$CREDIT_DATA["ap"]}',
478
-
479
- '{$CREDIT_DATA["ec"]}',
480
-
481
- '{$CREDIT_DATA["ta"]}',
482
-
483
- '{$CREDIT_DATA["job"]}',
484
-
485
- '{$CREDIT_DATA["pod1"]}',
486
-
487
- '{$CREDIT_DATA["acid1"]}'
488
-
489
- );
490
-
491
- _SQL_;
492
-
493
- $db->query($_cl_sql);
494
-
495
- }
496
-
497
- //----- カード決済登録 END -----//
498
-
499
-
500
-
501
- // メール送信
502
-
503
- if ($order_count == 1 && $credit_res == '1') {
504
-
505
- $mail->OrderToMem($order_id);
506
-
507
- $mail->CreditToMem($order_id);
508
-
509
- $tbl_name = $def->get('DB_TBL_ORDER');
510
-
511
- $sql_where = "`id`=" .$order_id;
512
-
513
- $update = "`settlement_flag` = 1";
514
-
515
- $_cl_sql = <<<_SQL_
516
-
517
- UPDATE `{$tbl_name}` SET
518
-
519
- {$update},
520
-
521
- `update_time` = UNIX_TIMESTAMP()
522
-
523
- WHERE {$sql_where};
524
-
525
- _SQL_;
526
-
527
- $db->query($_cl_sql);
528
-
529
- }else{
530
-
531
- $mail->CreditErrorToMem($order_id,$CREDIT_DATA);
532
-
533
- }
534
-
535
-
536
-
537
-
538
-
539
- // セッションをすべてリセット
540
-
541
- foreach ($_SESSION as $key => $value) {
542
-
543
- foreach ($session_keys as $chk) {
544
-
545
- if ($chk == $key) {
546
-
547
- unset($_SESSION[$key]);
548
-
549
- break;
550
-
551
- }
552
-
553
- }
554
-
555
- }
556
-
557
-
558
-
559
- // 画面遷移
560
-
561
- if ($order_count ==1 && $credit_res == '1' && $ref_chk == 'ok') {
562
-
563
- CartThanks();
564
-
565
- } else {
566
-
567
- CartCreditErr($msg, $CREDIT_DATA);
568
-
569
- }
570
-
571
-
572
-
573
- exit();
574
-
575
-
576
-
577
- }
578
-
579
- $db->query($_cl_sql);
580
-
581
- }
582
-
583
- //----- カード決済登録 END -----//
584
-
585
-
586
-
587
- // メール送信
588
-
589
- if ($order_count ==1 && $credit_res == '1') {
590
-
591
- $mail->SubscriptionOrderToMem($order_id);
592
-
593
- $mail->CreditSubToMem($order_id);
594
-
595
-
596
-
597
-
598
-
599
-
600
-
601
- }
602
-
603
-
604
-
605
-
606
-
607
- // セッションをすべてリセット
608
-
609
- foreach ($_SESSION as $key => $value) {
610
-
611
- foreach ($session_keys as $chk) {
612
-
613
- if ($chk == $key) {
614
-
615
- unset($_SESSION[$key]);
616
-
617
- break;
618
-
619
- }
620
-
621
- }
622
-
623
- }
624
-
625
-
626
-
627
- // 画面遷移
628
-
629
- if ($order_count ==1 && $credit_res == '1' && $ref_chk == 'ok') {
630
-
631
- CartThanks();
632
-
633
- } else {
634
-
635
- CartCreditErr($msg, $CREDIT_DATA);
636
-
637
- }
638
-
639
-
640
-
641
- exit();
642
-
643
-
644
-
645
- }
646
-
647
- ```