tpl_mainpage = MODULE_PATH . "mdl_epsilon/convenience_mobile.tpl";
} else {
$this->tpl_mainpage = MODULE_PATH . "mdl_epsilon/convenience.tpl";
}
$this->tpl_title = "コンビニ決済";
/*
session_start時のno-cacheヘッダーを抑制することで
「戻る」ボタン使用時の有効期限切れ表示を抑制する。
private-no-expire:クライアントのキャッシュを許可する。
*/
session_cache_limiter('private-no-expire');
}
}
global $arrConvenience;
global $arrConveni_message;
$objPage = new LC_Page();
$objView = new SC_SiteView();
$objCampaignSess = new SC_CampaignSession();
$objSiteInfo = $objView->objSiteInfo;
$arrInfo = $objSiteInfo->data;
// パラメータ管理クラス
$objFormParam = new SC_FormParam();
// パラメータ情報の初期化
lfInitParam();
// POST値の取得
$objFormParam->setParam($_POST);
// ユーザユニークIDの取得と購入状態の正当性をチェック
$uniqid = sfCheckNormalAccess($objSiteSess, $objCartSess);
// カート集計処理
$objPage = sfTotalCart($objPage, $objCartSess, $arrInfo);
// 一時受注テーブルの読込
$arrData = sfGetOrderTemp($uniqid);
// カート集計を元に最終計算
$arrData = sfTotalConfirm($arrData, $objPage, $objCartSess, $arrInfo);
// 代表商品情報
$arrMainProduct = $objPage->arrProductsClass[0];
// 支払い情報を取得
$arrPayment = $objQuery->getall("SELECT module_id, memo01, memo02, memo03, memo04, memo05, memo06, memo07, memo08, memo09, memo10 FROM dtb_payment WHERE payment_id = ? ", array($arrData["payment_id"]));
// データ送信先CGI
$order_url = $arrPayment[0]["memo02"];
switch($_POST["mode"]){
//戻る
case 'return':
// 正常に登録されたことを記録しておく
$objSiteSess->setRegistFlag();
// 確認ページへ移動
if (is_callable(GC_MobileUserAgent) && GC_MobileUserAgent::isMobile()) {
header("Location: " . gfAddSessionId(URL_SHOP_CONFIRM));
} else {
header("Location: " . URL_SHOP_CONFIRM);
}
exit;
break;
case "send":
$arrErr = array();
$arrErr = $objFormParam->checkError();
$objPage->arrErr = $arrErr;
// 非会員のときは user_id に not_memberと送る
($arrData["customer_id"] == 0) ? $user_id = "not_member" : $user_id = $arrData["customer_id"];
if(count($arrErr) <= 0){
// 送信データ生成
$item_name = $arrMainProduct["name"] . "×" . $arrMainProduct["quantity"] . "個 (代表)";
$arrSendData = array(
'contract_code' => $arrPayment[0]["memo01"], // 契約コード
'user_id' => $user_id , // ユーザID
'user_name' => $arrData["order_name01"].$arrData["order_name02"], // ユーザ名
'user_mail_add' => $arrData["order_email"], // メールアドレス
'order_number' => $arrData["order_id"], // オーダー番号
'item_code' => $arrMainProduct["product_code"], // 商品コード(代表)
'item_name' => $item_name, // 商品名(代表)
'item_price' => $arrData["payment_total"], // 商品価格(税込み総額)
'st_code' => $arrPayment[0]["memo04"], // 決済区分
'mission_code' => '1', // 課金区分(固定)
'process_code' => '1', // 処理区分(固定)
'xml' => '1', // 応答形式(固定)
'conveni_code' => $_POST["convenience"], // コンビニコード
'user_tel' => $_POST["order_tel01"].$_POST["order_tel02"].$_POST["order_tel03"], // 電話番号
'user_name_kana' => $_POST["order_kana01"].$_POST["order_kana02"], // 氏名(カナ)
'haraikomi_mail' => 0, // 払込メール(送信しない)
'memo1' => "", // 予備01
'memo2' => ECCUBE_PAYMENT . "_" . date("YmdHis"), // 予備02
);
// データ送信
$arrXML = sfPostPaymentData($order_url, $arrSendData);
// エラーがあるかチェックする
$err_code = sfGetXMLValue($arrXML,'RESULT','ERR_CODE');
if($err_code != "") {
$err_detail = sfGetXMLValue($arrXML,'RESULT','ERR_DETAIL');
sfDispSiteError(FREE_ERROR_MSG, "", false, "購入処理中に以下のエラーが発生しました。
・" . $err_detail);
} else {
// 正常な推移であることを記録しておく
$objSiteSess->setRegistFlag();
$conveni_code = sfGetXMLValue($arrXML,'RESULT','CONVENI_CODE'); // コンビニコード
$conveni_type = lfSetConvMSG("コンビニの種類",$arrConvenience[$conveni_code]); // コンビニの種類
$receipt_no = lfSetConvMSG("払込票番号",sfGetXMLValue($arrXML,'RESULT','RECEIPT_NO')); // 払込票番号
$payment_url = lfSetConvMSG("払込票URL",sfGetXMLValue($arrXML,'RESULT','HARAIKOMI_URL')); // 払込票URL
$company_code = lfSetConvMSG("企業コード",sfGetXMLValue($arrXML,'RESULT','KIGYOU_CODE')); // 企業コード
$order_no = lfSetConvMSG("受付番号",sfGetXMLValue($arrXML,'RESULT','ORDER_NUMBER')); // 受付番号
$tel = lfSetConvMSG("電話番号",$_POST["order_tel01"]."-".$_POST["order_tel02"]."-".$_POST["order_tel03"]); // 電話番号
$payment_limit = lfSetConvMSG("支払期日",sfGetXMLValue($arrXML,'RESULT','CONVENI_LIMIT')); // 支払期日
$trans_code = sfGetXMLValue($arrXML,'RESULT','TRANS_CODE'); // トランザクションコード
//コンビニの種類
switch($conveni_code) {
//セブンイレブン
case '11':
$arrRet['cv_type'] = $conveni_type; //コンビニの種類
$arrRet['cv_payment_url'] = $payment_url; //払込票URL(PC)
$arrRet['cv_receipt_no'] = $receipt_no; //払込票番号
$arrRet['br1'] = lfSetConvMSG("","\n\n");
$arrRet['cv_message'] = lfSetConvMSG("",$arrConveni_message[$conveni_code]);
break;
//ファミリーマート
case '21':
$arrRet['cv_type'] = $conveni_type; //コンビニの種類
$arrRet['cv_company_code'] = $company_code; //企業コード
$arrRet['cv_order_no'] = $receipt_no; //受付番号
$arrRet['br1'] = lfSetConvMSG("","\n\n");
$arrRet['cv_message'] = lfSetConvMSG("",$arrConveni_message[$conveni_code]);
break;
//ローソン
case '31':
$arrRet['cv_type'] = $conveni_type; //コンビニの種類
$arrRet['cv_receipt_no'] = $receipt_no; //払込票番号
$arrRet['cv_tel'] = $tel; //電話番号
$arrRet['br1'] = lfSetConvMSG("","\n\n");
$arrRet['cv_message'] = lfSetConvMSG("",$arrConveni_message[$conveni_code]);
break;
//セイコーマート
case '32':
$arrRet['cv_type'] =$conveni_type; //コンビニの種類
$arrRet['cv_receipt_no'] = $receipt_no; //払込票番号
$arrRet['cv_tel'] = $tel; //電話番号
$arrRet['br1'] = lfSetConvMSG("","\n\n");
$arrRet['cv_message'] = lfSetConvMSG("",$arrConveni_message[$conveni_code]);
break;
//ミニストップ
case '33':
$arrRet['cv_type'] = $conveni_type; //コンビニの種類
$arrRet['cv_payment_url'] = $payment_url; //払込票URL
$arrRet['br1'] = lfSetConvMSG("","\n\n");
$arrRet['cv_message'] = lfSetConvMSG("",$arrConveni_message[$conveni_code]);
break;
//デイリーヤマザキ
case '34':
$arrRet['cv_type'] = $conveni_type; //コンビニの種類
$arrRet['cv_payment_url'] = $payment_url; //払込票URL
$arrRet['br1'] = lfSetConvMSG("","\n\n");
$arrRet['cv_message'] = lfSetConvMSG("",$arrConveni_message[$conveni_code]);
break;
}
//支払期限
$arrRet['br2'] = lfSetConvMSG("","\n\n");
$arrRet['cv_payment_limit'] = $payment_limit;
$arrRet['br3'] = lfSetConvMSG("","\n\n");
// タイトル
$arrRet['title'] = lfSetConvMSG("コンビニ決済", true);
// 決済送信データ作成
$arrModule['module_id'] = MDL_EPSILON_ID;
$arrModule['payment_total'] = $arrData["payment_total"];
$arrModule['payment_id'] = PAYMENT_CONVENIENCE_ID;
// ステータスは未入金にする
$sqlval['status'] = 2;
//コンビニ決済情報を格納
$sqlval['conveni_data'] = serialize($arrRet);
$sqlval['memo01'] = PAYMENT_CONVENIENCE_ID;
$sqlval['memo02'] = serialize($arrRet);
$sqlval["memo03"] = $arrPayment[0]["module_id"];
$sqlval["memo04"] = $trans_code;
$sqlval['memo05'] = serialize($arrModule);
// 受注一時テーブルに更新
sfRegistTempOrder($uniqid, $sqlval);
if (is_callable(GC_MobileUserAgent) && GC_MobileUserAgent::isMobile()) {
header("Location: " . gfAddSessionId(URL_SHOP_COMPLETE));
} else {
header("Location: " . URL_SHOP_COMPLETE);
}
}
}
break;
default:
$objFormParam->setParam($arrData);
break;
}
// 利用可能コンビニ
$objFormParam->setValue("convenience", $arrPayment[0]["memo05"]);
$objFormParam->splitParamCheckBoxes("convenience");
$arrUseConv = $objFormParam->getValue("convenience");
foreach($arrUseConv as $key => $val){
$arrConv[$val] = $arrConvenience[$val];
}
// 購入金額が30万より大きければセブンイレブンは利用不可
if($arrData["payment_total"] > SEVEN_CHARGE_MAX){
unset($arrConv[11]);
}
$objPage->arrConv = $arrConv;
$objPage->arrForm =$objFormParam->getHashArray();
$objView->assignobj($objPage);
// フレームを選択(キャンペーンページから遷移なら変更)
$objCampaignSess->pageView($objView);
//---------------------------------------------------------------------------------------------------------------------------------------------------------
//パラメータの初期化
function lfInitParam() {
global $objFormParam;
$objFormParam->addParam("コンビニの種類", "convenience", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"));
$objFormParam->addParam("お名前(セイ)", "order_kana01", STEXT_LEN, "KVCa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
$objFormParam->addParam("お名前(メイ)", "order_kana02", STEXT_LEN, "KVCa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
$objFormParam->addParam("お電話番号1", "order_tel01", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK"));
$objFormParam->addParam("お電話番号2", "order_tel02", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK"));
$objFormParam->addParam("お電話番号3", "order_tel03", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK"));
}
function lfSetConvMSG($name, $value){
return array("name" => $name, "value" => $value);
}
?>