complete.php
15 KB
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
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
<?php
//*****************************************************************************
//* プログラムID:complete.php
//* 機能 :決済完了処理
//*****************************************************************************
header( "Content-type: text/html; charset=EUC-JP");
include('./inc/smarty.conf');
// EPSILON クレジットカード認証完了、コンビニ受付番号発行完了
// クライアント側プログラム(PHP版)
//
// このプログラムの実行には、以下のモジュールが必要です。
// ・PHP(ver5,,,,,
// ・PEAR:
// ・PEAR:HTTP_Request:
// ・PEAR:Net_URL:
// ・PEAR:Net_Socket:
// ・PEAR:XML_Parser:
// ・PEAR:XML_Serializer:
//
//include Libraly
//PEAR拡張モジュールの読み込み。
//既に該当のモジュールをインストール済みの場合は適宜読み込み先パスを変更してください。
require_once "./lib/http/Request.php";
require_once "./lib/xml/Unserializer.php";
//char setting
//サーバ環境に応じ適宜変更してください。
mb_language("Japanese");
mb_internal_encoding("EUC-JP");
// 変数の設定
// オーダー情報確認CGIのURL(試験用)
// オーダー情報確認CGIについては2種類ありますのでご注意お願いいたします。
// 詳細はCGI設定マニュアルの「オーダー情報確認CGI-1,2」をご確認願います。
// 各CGIの説明
// CGI-1:認証にパスワード要/発信元IP無制限
// CGI-2:認証にパスワード不要/発信元IPの制限有
// 以下にはCGI-1と2で設定パラメータが相違しますので利用されるCGIによって変更してください。
// 接続先URLの設定
// CGI-1利用の場合 本番環境への接続の場合は契約後弊社からご連絡いたしますURLに変更してください
//$getsales_url = 'http://beta.epsilon.jp/client/getsales.cgi';
$getsales_url = 'https://secure.epsilon.jp/client/getsales.cgi';
// CGI-2利用の場合 本番環境への接続の場合は契約後弊社からご連絡いたしますURLに変更してください
//my $getsales_url = 'https://beta.epsilon.jp/cgi-bin/order/getsales2.cgi';
// 発行されたユーザーID(契約コード)を入力してください
// CGI-1,2共通
$user_id = '33317000';
// 発行されたパスワードを入力してください。
// CGI-1利用の場合 弊社からお知らせしたパスワードを設定してください。
// CGI-2利用の場合 当値は利用しませんので適当な値を設定してください。txZaDA9o,j6ralKCA
$passwd = '0yTJkjCd';
// エラーが発生した場合のメッセージ
$err_msg;
// オーダー情報取得CGIを実行した結果を格納する連想配列
$responce = array();
// 各支払い方法
$payment_name = array(
1 => "クレジットカード決済",
2 => "クレジットカード決済",
3 => "コンビニ決済",
4 => "ネット銀行決済(ジャパンネット銀行)",
5 => "ネット銀行決済(e-bank)",
7 => "ペイジー",
8 => "WebMoney",
9 => "Do-Link決済",
12 => "BitCash決済",
13 => "電子マネーちょコム");
// コンビニ・ペイジー支払の場合の支払い方法の簡単な説明
$setsumei = array(
# セブンイレブン
11 => "以下の払込票ページをプリントアウトされるか、払込票番号をメモして<br>" .
"最寄りのセブンイレブンのレジにてお支払いください。<br>" ,
# ファミリーマート
21 => "ファミリーマート店頭にございます Famiポート/ファミネットにて<br>" .
"以下の2つの数字をご入力頂き、発行されるFamiポート申込券をレジまで<br>" .
"お持ちになり代金をお支払いください。<br>",
# ローソン
31 => "ローソンの店内に設置してあるLoppiのトップ画面の中から、「インターネット受付」<br>" .
"をお選びください。次画面のジャンルの中から「インターネット受付」をお選び頂き、<br>" .
"画面に従って以下の「お支払い受付番号」と、ご登録頂いた「電話番号」をご入力下さい。<br>" ,
# セイコーマート
32 => "セイコーマートの店内に設置してあるセイコーマートクラブステーション(情報端末)の<br>" .
"トップ画面の中から、「インターネット受付」をお選び下さい。画面に従って以下の<br>" .
"「お支払い受付番号」と、ご登録頂いた「電話番号」をご入力下さい。<br>" ,
# ペイジー
88 => "ペイジーでお支払い頂く際には銀行のATMもしくはオンラインバンキングで<br>お支払いただく方法がございます。<BR>" .
"ご利用可能な銀行につきましては以下リンクでご確認お願いいたします。<BR><BR>".
"<a href='http://www.epsilon.jp/service/payeasy_list.html' target='_blank'>ペイジーお支払可能銀行一覧</a><BR><BR>".
"お支払可能な銀行、オンラインバンキングで「収納機関番号」、「確認番号」、<br>ご登録いただいた「電話番号」を入力の上ご入金お願いします。" );
// パラメータとして渡される(GET)トランザクションコードを取得します。
$trans_code = $_REQUEST['trans_code'];
// 結果問い合わせ用HTTPリクエスト送信
// CGI-1利用の場合
// ※オーダー情報確認CGIの実行にはベーシック認証が必要です。
$request = new HTTP_Request($getsales_url);
$request->setMethod(HTTP_REQUEST_METHOD_POST);
$request->addHeader("Content-Type","application/x-www-form-urlencoded");
$request->setBody("trans_code=" . $trans_code);
$request->setBasicAuth($user_id, $passwd);
$response = $request->sendRequest();
// CGI-2利用の場合
//$request = new HTTP_Request($getsales_url);
//$request->setMethod(HTTP_REQUEST_METHOD_POST);
//$request->addHeader("Content-Type","application/x-www-form-urlencoded");
//$request->setBody("trans_code=" . $trans_code . "&contract_code=" . $user_id);
//$response = $request->sendRequest();
// 以降はCGI-1,2どちらも共通です。
if (PEAR::isError($response)) {
// インターフェイスCGIの実行に失敗した場合
$err_msg = "データの送信に失敗しました<br><br>";
$err_msg .= "<br />res_statusCd=" . $request->getResponseCode();
$err_msg .= "<br />res_status=" . $request->getResponseHeader('Status');
echo $err_msg;
exit;
}
// CGIの実行に成功した場合、応答内容(XML)を解析します
// 応答内容(XML)の解析
$res_code = $request->getResponseCode();
$res_content = $request->getResponseBody();
//xml unserializer
$temp_xml_res = str_replace("x-sjis-cp932", "EUC-JP", $res_content);
$unserializer =& new XML_Unserializer();
$unserializer->setOption('parseAttributes', TRUE);
$unseriliz_st = $unserializer->unserialize($temp_xml_res);
if ($unseriliz_st === true) {
//xmlを解析
$res_array = $unserializer->getUnserializedData();
//error check
if($res_array['result']['result'] == "0"){
echo "処理に失敗しました<br><br>";
exit(1);
}
$res_param_array = array();
//pram setting
foreach($res_array['result'] as $uns_k => $uns_v){
list($result_atr_key, $result_atr_val) = each($uns_v);
$res_param_array[$result_atr_key] = mb_convert_encoding(urldecode($result_atr_val), "EUC-JP" ,"auto");
}
$debug_printj .= "<br />xml_memo2_msg=" . $xml_memo2_msg;
}else{
//xml parser error
echo "xml parser error<br><br>";
exit(1);
}
$result_html;
if ($res_param_array['payment_code'] == 3){
// コンビニ支払の場合
if ($res_param_array['conveni_code'] == 11){
// セブンイレブンの場合
$result_html = $setsumei[11] . "<br><br>\n";
$result_html .= "払込票 : <a href=\"" . $res_param_array['haraikomi_url'] . "\">ここをクリック</a> <br>\n";
$result_html .= "払込票番号 : " . $res_param_array['receipt_no'] . "<br>\n";
}
elseif ($res_param_array['conveni_code'] == 21){
// ファミリーマートの場合
$result_html = $setsumei[21] . "<br><br>\n";
$result_html .="企業コード: " . $res_param_array['kigyou_code'] . "<br>\n";
$result_html .= "注文番号 : " . $res_param_array['receipt_no'] . "<br>\n";
}
elseif (($res_param_array['conveni_code'] == 31) || ($res_param_array['conveni_code'] == 32)){
// ローソン、セイコーマートの場合
$result_html = $setsumei{$res_param_array{'conveni_code'}} . "<br><br>\n";
$result_html .= "お支払い受付番号 : " . $res_param_array['receipt_no'] . "<br>\n";
}
else { // 不明(異常)
$err_msg = "支払情報の取得に失敗しました $res_param_array{'conveni_code'}";
exit(0);
}
$conveni_limit_date = split("-",$res_param_array['conveni_limit']);
$result_html .= "<br>支払期限:" . $conveni_limit_date[0] . "年"
. $conveni_limit_date[1] . "月" . $conveni_limit_date[2] . "日<br>\n";
$payment_name = $payment_name[$res_param_array['payment_code']];
$item_name = mb_convert_encoding(urldecode($res_param_array['item_name']), "EUC-JP" ,"auto");
$item_price = $res_param_array['item_price'];
}
elseif ($res_param_array['payment_code'] == 7 ){
// ペイジーの場合
$result_html = $setsumei[88] . "<br><br>\n";
$result_html .= "収納機関番号: " . $res_param_array['kigyou_code'] . "<br>\n";
$result_html .= "確認番号 : " . $res_param_array['receipt_no'] . "<br>\n";
$payment_name = $payment_name[$res_param_array['payment_code']];
$item_name = mb_convert_encoding(urldecode($res_param_array['item_name']), "EUC-JP" ,"auto");
$item_price = $res_param_array['item_price'];
}
else {
// それ以外の決済の場合
$result_html = "ご注文ありがとうございました。";
$payment_name = $payment_name[$res_param_array['payment_code']];
$item_name = mb_convert_encoding(urldecode($res_param_array['item_name']), "EUC-JP" ,"auto");
$item_price = $res_param_array['item_price'];
}
//め〜るNiポン!の場合
if($res_param_array['memo1'] == "1"){
//登録済みチェック(F5回避)
include("./inc/dbcon_PAY_ADM.inc");
$strSQL = "SELECT * FROM log_data_tbl WHERE order_number = '".$res_param_array['order_number']."'";
//echo $strSQL."<hr>";
$objRec = pg_exec($strSQL);
if($objRec==false){
echo("SQL実行に失敗しました(SELECT)");
exit;
}
$dataCnt = pg_numrows($objRec);
if($dataCnt <= 0){
//データがない場合のみ更新処理
//ポイント確認
include("./inc/dbcon_MLP_ADM.inc");
$strSQL = "SELECT * FROM point_tbl WHERE user_id = '".$res_param_array['user_id']."'";
//echo $strSQL."<hr>";
$objRec = pg_exec($strSQL);
if($objRec==false){
echo("SQL実行に失敗しました(SELECT)");
exit;
}
if(pg_numrows($objRec) > 0){
$objF = pg_fetch_object($objRec, 0);
$pointOLD = $objF->use_point;
}else{
echo("該当データなし");
exit;
}
$strMEMO1 = "購入ポイント:".$res_param_array['memo2'];
$strMEMO2 = "更新前ポイント:".$pointOLD;
$strPointUPDATE = intval($res_param_array['memo2']) + intval($pointOLD);
//団体名取得
$strSQL = "SELECT * FROM mst_kanri WHERE user_id = '".$res_param_array['user_id']."'";
$objRec = pg_exec($strSQL);
if($objRec==false){
echo("SQL実行に失敗しました(SELECT)");
exit;
}
if(pg_numrows($objRec) > 0){
$objF = pg_fetch_object($objRec, 0);
$pg_user_name = $objF->user_name;
}else{
echo("該当データなし");
exit;
}
//クレジット決済ログ
include("./inc/dbcon_PAY_ADM.inc");
$strSQL = "";
$strSQL .= "INSERT INTO log_data_tbl ";
$strSQL .= " ( ";
$strSQL .= " order_number, ";
$strSQL .= " contract_code, ";
$strSQL .= " user_id, ";
$strSQL .= " user_name, ";
$strSQL .= " user_mail_add, ";
$strSQL .= " item_code, ";
$strSQL .= " item_name, ";
$strSQL .= " mission_code, ";
$strSQL .= " item_price, ";
$strSQL .= " process_code, ";
$strSQL .= " yobi1, ";
$strSQL .= " yobi2, ";
$strSQL .= " yobi3, ";
$strSQL .= " service_flg, ";
$strSQL .= " pg_group_id, ";
$strSQL .= " pg_user_id, ";
$strSQL .= " update_datetime ";
$strSQL .= " ) ";
$strSQL .= " VALUES( ";
$strSQL .= " '".$res_param_array['order_number']."', ";
$strSQL .= " '".$res_param_array['contract_code']."', ";
$strSQL .= " '".$res_param_array['user_id']."', ";
$strSQL .= " '".$res_param_array['user_name']."', ";
$strSQL .= " '".$res_param_array['user_mail_add']."', ";
$strSQL .= " '".$res_param_array['item_code']."', ";
$strSQL .= " '".mb_convert_encoding(urldecode($res_param_array['item_name']), "EUC-JP" ,"auto")."', ";
$strSQL .= " '".$res_param_array['mission_code']."', ";
$strSQL .= " '".$res_param_array['item_price']."', ";
$strSQL .= " '".$res_param_array['process_code']."', ";
$strSQL .= " '".$strMEMO1."', ";
$strSQL .= " '".$strMEMO2."', ";
$strSQL .= " '', ";
$strSQL .= " '".$res_param_array['memo1']."', ";
$strSQL .= " '".$res_param_array['user_id']."', ";
$strSQL .= " '', ";
$strSQL .= " '".date("Y/m/d H:i:s")."' ";
$strSQL .= " ) ";
//echo $strSQL."<hr>";
$objRec = pg_exec($strSQL);
if($objRec==false){
echo("SQL実行に失敗しました(INSERT)");
exit;
}
//ポイント更新
include("./inc/dbcon_MLP_ADM.inc");
$strSQL = "";
$strSQL .= "UPDATE point_tbl ";
$strSQL .= "SET use_point = ".$strPointUPDATE." ";
$strSQL .= "WHERE user_id = '".$res_param_array['user_id']."'";
//echo $strSQL."<hr>";
$objRec = pg_exec($strSQL);
if($objRec==false){
echo("SQL実行に失敗しました(UPDATE)");
exit;
}
//メール送信
//各種設定-----------//
include("./inc/jcode.php");
$strFrom = "From: support@media-tek.co.jp\n";
$strSubject = "【め〜るNiポン】ポイントご購入完了のお知らせ";
$strSubject = "=?iso-2022-jp?B?" . base64_encode(jcodeconvert($strSubject, 0, 3)) . "?=";
$GMT = date("Z");
$GMT_ABS = abs($GMT);
$GMT_HOUR = floor($GMT_ABS / 3600);
$GMT_MIN = floor(($GMT_ABS - $GMT_HOUR * 3600) / 60);
if ($GMT >= 0) $GMT_FLG = "+"; else $GMT_FLG = "-";
$GMT_RFC = date("D, d M Y H:i:s ").sprintf($GMT_FLG."%02d%02d", $GMT_HOUR, $GMT_MIN);
$Headers = "Date: ".$GMT_RFC."\n";
$Headers .= $strFrom;
$Headers .= "Bcc: support@media-tek.co.jp\n";
$Headers .= "Subject: $strSubject\n";
$Headers .= "MIME-Version: 1.0\n";
$Headers .= "X-Mailer: PHP/".phpversion()."\n";
$Headers .= "Content-type: text/plain; charset=ISO-2022-JP\n";
$Headers .= "Content-Transfer-Encoding: 7bit";
//本文
$strComment = "";
$strComment .= $res_param_array['user_name']." 様\n";
$strComment .= "\n";
$strComment .= "この度は【め〜るNiポン】のポイントをご購入いただき、ありがとうございます。\n";
$strComment .= "\n";
$strComment .= "ご購入内容------------------------------------------------------------------\n";
$strComment .= "■ご利用団体名 :".$pg_user_name." 様\n";
$strComment .= "■ご購入ポイント:".number_format($res_param_array['memo2'])."ポイント\n";
$strComment .= "■ご購入価格合計:".number_format($res_param_array['item_price'])."円\n";
$strComment .= "\n";
$strComment .= "■お支払い方法 :".$payment_name."\n";
$strComment .= "----------------------------------------------------------------------------\n";
$strComment .= "\n";
$strComment .= "■ご利用可能ポイント数(".date("Y年m月d日 H時i分")." 現在)\n";
$strComment .= " ".number_format($strPointUPDATE)."ポイント\n";
$strComment .= "\n";
$strComment .= "※ご購入されたポイントは即時追加させていただいております\n";
$strComment .= " サービスの性質上、返品・返金は出来ません。\n";
$strComment .= "\n";
$strComment .= "※このメールに心当たりのない場合、<support@media-tek.co.jp>までご連絡ください。\n";
$strComment .= "\n";
$strComment .= "今後とも【め〜るNiポン】をよろしくお願いいたします。\n";
$strComment .= "----------------------------------------------------------------------------\n";
$strComment .= "め〜るNiポン:http://www.mail-ni-pon.net\n";
$strComment .= "メディアテック株式会社:http://www.media-tek.co.jp\n";
$strComment .= "----------------------------------------------------------------------------\n";
//エンコード設定
$strComment = mb_convert_encoding($strComment, "JIS", "auto");
//メール送信プログラム
$intBool = mail($res_param_array['user_mail_add'], $strSubject, $strComment, $Headers);
}
$result_html .= "<br>(め〜るNiポン!での画面を更新、または別ページへの移動でポイント表示が更新されます)";
}
$o_smarty->assign('payment_name' , $payment_name);
$o_smarty->assign('item_name' , $item_name);
$o_smarty->assign('item_price' , number_format($item_price));
$o_smarty->assign('result_html' , $result_html);
$o_smarty->assign('err_msg' , $err_msg);
$o_smarty->display('complete.tpl');
?>