| 1 |
<?php |
| 2 |
/* |
| 3 |
イプシロン決済モジュール(クレジットカードのみ) |
| 4 |
|
| 5 |
【手順1】イプシロン・システム� |
| 6 |
報登録(テスト環境) |
| 7 |
・オーダー� |
| 8 |
報発信� |
| 9 |
�ホスト� |
| 10 |
報:ショップのドメイン若しくはIPアドレス |
| 11 |
・決済完了後のリダイレクト� |
| 12 |
�:ショップトップページのURL |
| 13 |
・[戻る]ボタンの戻り� |
| 14 |
�URL:ショップトップページのURL/index.php?page_id=カートページのID&confirm=0 |
| 15 |
SSLを利用している場合はhttp//をhttps://にする。また� |
| 16 |
�用SSLの場合はそのURLを指定。 |
| 17 |
・エラー発生時の戻り� |
| 18 |
�URL:ショップトップページのURL/index.php?page_id=カートページのID&acting=epsilon&acting_return=0 |
| 19 |
SSLを利用している場合はhttp//をhttps://にする。また� |
| 20 |
�用SSLの場合はそのURLを指定。 |
| 21 |
・タイムアウト� |
| 22 |
報送信� |
| 23 |
�URL:ショップトップページのURL/index.php?page_id=カートページのID&acting=epsilon&acting_return=0 |
| 24 |
SSLを利用している場合はhttp//をhttps://にする。また� |
| 25 |
�用SSLの場合はそのURLを指定。 |
| 26 |
|
| 27 |
※本番環境ではテスト環境と同じものを設定します。 |
| 28 |
|
| 29 |
|
| 30 |
【手順2】このファイルを編集 |
| 31 |
・$contract_code :契約番号を� |
| 32 |
�力 |
| 33 |
・$interface_url :本稼動の場合は本番環境用URLに変更 |
| 34 |
・編集後はepsilon.php のファイル名で任意の場所(※)に保存 |
| 35 |
|
| 36 |
※テストの時はepsilon_sample.php が有った場所に保存して構いません。そのまま使用できます。 |
| 37 |
しかし、この場所はプラグインのアップグレードの際に削除されてしまいます。 |
| 38 |
実際の設置場所はplugins フォルダの外にすることをお勧めします。 |
| 39 |
また、その際はWelcart管理画面・システム設定ページにてモジュールの設置場所を指定してください。 |
| 40 |
|
| 41 |
|
| 42 |
【手順3】Welcart 管理画面の基本設定ページにて新しい支払方法を追加 |
| 43 |
・支払方法名:ショップに表示される支払方法名(� |
| 44 |
須) |
| 45 |
・説明:ショップに表示される支払方法の説明 |
| 46 |
・決済種別:「代行業� |
| 47 |
決済」を選択 |
| 48 |
・決済モジュール:「epsilon.php」と記� |
| 49 |
� |
| 50 |
・「新しい支払方法を追加」ボタンを押して追加を確定 |
| 51 |
|
| 52 |
*/ |
| 53 |
/*****************************************************************************************************/ |
| 54 |
// 契約番号(8桁) オンライン登録時に発行された契約番号を� |
| 55 |
�力してください。 |
| 56 |
$contract_code = "00000000"; |
| 57 |
|
| 58 |
// 決済区分 (現在クレジットカード決済のみの対応となっています。それ以外の決済区分は選択できません。) |
| 59 |
$st_code = '10000-0000-00000'; // 指定方法はCGI設定マニュアルの「決済区分について」を参� |
| 60 |
�してください。 |
| 61 |
|
| 62 |
// 課金区分 (現在一回払いのみの対応となっています。それ以外の課金区分は選択できません。) |
| 63 |
$mission_code = 1; |
| 64 |
|
| 65 |
// 処理区分 (現在初回課金のみの対応となっています。それ以外の処理区分は選択できません。) |
| 66 |
$process_code = 1; |
| 67 |
|
| 68 |
// インターフェイスURL(初期値はテスト環境用URL。本稼動の際は本番環境用URLに変更が� |
| 69 |
要。) |
| 70 |
$interface_url = 'https://beta.epsilon.jp/cgi-bin/order/receive_order3.cgi'; |
| 71 |
/*******************************************************************************************************/ |
| 72 |
|
| 73 |
$order_number = rand(0,9999999999); |
| 74 |
$memo1 = ""; |
| 75 |
$memo2 = ""; |
| 76 |
$redirect = urldecode($_GET['redirect_url']); |
| 77 |
$url = parse_url($redirect); |
| 78 |
$item_code = $_GET['item_code']; |
| 79 |
$item_name = mb_convert_encoding(urldecode($_GET['item_name']), 'EUC-JP', 'UTF-8'); |
| 80 |
$item_price = $_GET['item_price']; |
| 81 |
$user_id = $_GET['user_id']; |
| 82 |
$user_name = mb_convert_encoding(urldecode($_GET['user_name']), 'EUC-JP', 'UTF-8'); |
| 83 |
$user_mail_add = urldecode($_GET['user_mail_add']); |
| 84 |
$changeflag = 0; |
| 85 |
$interface = parse_url($interface_url); |
| 86 |
|
| 87 |
$vars ="contract_code=$contract_code&user_id=$user_id&user_name=$user_name&user_mail_add=$user_mail_add&item_code=$item_code&item_name=$item_name&order_number=$order_number&st_code=$st_code&mission_code=$mission_code&item_price=$item_price&process_code=$process_code&xml=1"; |
| 88 |
$header = "POST " . $interface_url . " HTTP/1.1\r\n"; |
| 89 |
$header .= "Host: " . $url['host'] . "\r\n"; |
| 90 |
$header .= "User-Agent: PHP Script\r\n"; |
| 91 |
$header .= "Content-Type: application/x-www-form-urlencoded\r\n"; |
| 92 |
$header .= "Content-Length: " . strlen($vars) . "\r\n"; |
| 93 |
$header .= "Connection: close\r\n\r\n"; |
| 94 |
$header .= $vars; |
| 95 |
$fp = fsockopen($interface['host'],80,$errno,$errstr,30); |
| 96 |
|
| 97 |
if ($fp){ |
| 98 |
fwrite($fp, $header); |
| 99 |
while ( !feof($fp) ) { |
| 100 |
$scr = fgets($fp, 1024); |
| 101 |
preg_match_all("/<result\s(.*)\s\/>/", $scr, $match, PREG_SET_ORDER); |
| 102 |
|
| 103 |
if(!empty($match[0][1])){ |
| 104 |
list($key, $value) = explode('=', $match[0][1]); |
| 105 |
$datas[$key] = mb_convert_encoding(urldecode(trim($value, '"')), "UTF-8", "SJIS"); |
| 106 |
} |
| 107 |
} |
| 108 |
fclose($fp); |
| 109 |
|
| 110 |
if((int)$datas['result'] === 1){ |
| 111 |
$entry = $this->cart->get_entry(); |
| 112 |
settlement_log('epsilon module : ' . print_r($entry, true)); |
| 113 |
header("Location: " . $datas['redirect']); |
| 114 |
exit; |
| 115 |
}else{ |
| 116 |
$error = $datas['err_code'] . "'" . $datas['err_detail'] . "'"; |
| 117 |
header("Location: " . $redirect . "&acting=epsilon&acting_return=" . urlencode($error)); |
| 118 |
exit; |
| 119 |
} |
| 120 |
}else{ |
| 121 |
header("Location: " . $redirect . "&acting=epsilon&acting_return=0"); |
| 122 |
exit; |
| 123 |
} |
| 124 |
|
| 125 |
function settlement_log($log){ |
| 126 |
global $usces; |
| 127 |
//if(!$usces->log_flg) return; |
| 128 |
|
| 129 |
$log = date('[Y-m-d H:i:s]', current_time('timestamp')) . "\t" . $log . "\n"; |
| 130 |
$file = $usces->options['settlement_path'].'/epsilon.log'; |
| 131 |
$fp = fopen($file, 'a'); |
| 132 |
fwrite($fp, $log); |
| 133 |
fclose($fp); |
| 134 |
} |
| 135 |
|
| 136 |
?> |
| 137 |
|