/** * sendToCvdメソッド * * コンビニダイレクト決済の申込処理 * * @param array $orderingData 注文データ * @param array $userData ユーザーデータ * @param array $param 申し込みパラメータ * @param boolean $isMobile モバイルフラグ * * @return boolean 成功:true 失敗:false */ function sendToCvd($orderingData, $userData, $param, $isMobile) { if (!$orderingData or !$userData or !$param) { return false; } //申込に必要な値を準備 if (!($sid = $this->getSid())) { $this->_errorMsg[] = "認証用IDが発行できません。"; return false; } $postDataAry[] = "SID=" . $sid; //名前は全角 $postDataAry[] = "NAME1=" . mb_convert_kana($param["name1"], "AHKNSR", "UTF-8"); $postDataAry[] = "NAME2=" . mb_convert_kana($param["name2"], "AHKNSR", "UTF-8"); //電話番号 $postDataAry["TEL"] = "TEL=" . $param["telno"]; //申請住所も全角 //表記会社の住所で申請 $postDataAry["ADR1"] = "ADR1=" . mb_convert_kana(self::CVD_ADR, "AHKNSR", "UTF-8"); //メールアドレスセット if ($isMobile) { $postDataAry["MAIL"] = "MAIL=" . ($userData["mb_address"] ? $userData["mb_address"] : $userData["pc_address"]); } else { $postDataAry["MAIL"] = "MAIL=" . ($userData["pc_address"] ? $userData["pc_address"] : $userData["mb_address"]); } //通信パラメータ $postDataAry["IP"] = "IP=" . self::CVD_IP; $postDataAry["K1"] = "K1=" . $orderingData["pay_total"]; $postDataAry["N1"] = "N1=" . "商品購入代金"; $postDataAry["STORE"] = "STORE=" . $param["cv_cd"]; $postDataAry["FUKA"] = "FUKA=" . $orderingData["id"]; $postDataString = implode("&", $postDataAry); //シフトJISに変換 $encodePostData = mb_convert_encoding($postDataString, "sjis-win", "auto"); parse_str($encodePostData, $postData); $return[] = "ok"; // 決済URL取得 $url = self::CVD_URL; $httpParam = array("maxredirects" => 1, "timeout" => 30); // http通信 $ComHttpOBJ = new ComHttp($url, $httpParam); $ComHttpOBJ->setParameterGet($postData); $result = $ComHttpOBJ->request("GET"); if ($result->isSuccessful()) { $return = $result->getBody(); if (preg_match("/OK/", $return)) { //申込結果をセット if (!$this->insertCvdData($orderingData, $userData, $return, $postDataString)) { return false; } return true; } else { return false; } } else { return false; } }
/** * sendAffiliateDataメソッド * * アフィリエイトデータを送信。 * * @param interger $userId ユーザーID * @param array $aryAffiliateValue QUERY_STRINGの配列 * @param interger $sendType 送信種別 * @param interger $isSuccess 成功タグか失敗タグか * @return boolean * */ public function sendAffiliateData($userId, $aryAffiliateValue, $sendType, $isSuccess = true) { if (!$aryAffiliateValue or !$aryAffiliateValue["advcd"]) { return FALSE; } $UserOBJ = User::getInstance(); $userData = $UserOBJ->getUserData($userId); if (!$userData) { return FALSE; } // 過去に登録済みか if ($userData["pc_address"] and $UserOBJ->chkUserDataFromPcMailAddressDuplication($userData["pc_address"], $userId)) { return FALSE; } else { if ($userData["mb_serial_number"] and $UserOBJ->chkUserDataFromMbSerialNumberDuplication($userData["mb_serial_number"], $userId)) { return FALSE; } } // アフィリエイトデータの取得 $affiliateData = $this->getAffiliateDataFromAdvcd($aryAffiliateValue["advcd"], $sendType); // 成功時のみ発行の場合は失敗ならfalseを返す if (!$affiliateData or !$affiliateData["path"] or $affiliateData["is_success_only"] and !$isSuccess) { return FALSE; } $url = $affiliateData["path"]; /* if (!$aryAffiliateValue["from_first_payment"]) { // 成功パラメータを設定する if ($isSuccess AND $affiliateData["success_parameter"]) { $url .= (strpos($url, "?") ? "&" . $affiliateData["success_parameter"] : "?" . $affiliateData["success_parameter"]); // 失敗パラメータを設定する } else if ($affiliateData["failure_parameter"]) { $url .= (strpos($url, "?") ? "&" . $affiliateData["failure_parameter"] : "?" . $affiliateData["failure_parameter"]); } } else { // 初入金パラメータを設定する if ($affiliateData["first_payment_parameter"]) { $url .= (strpos($url, "?") ? "&" . $affiliateData["first_payment_parameter"] : "?" . $affiliateData["first_payment_parameter"]); $setUserParam["affiliate_tag_first_payment_status"] = 1; } else { return FALSE; } } */ if ($aryAffiliateValue["payment"]) { // 入金パラメータを設定する if ($affiliateData["payment_parameter"]) { $url .= strpos($url, "?") ? "&" . $affiliateData["payment_parameter"] : "?" . $affiliateData["payment_parameter"]; } else { return FALSE; } } else { if ($aryAffiliateValue["from_first_payment"]) { // 初入金パラメータを設定する if ($affiliateData["first_payment_parameter"]) { $url .= strpos($url, "?") ? "&" . $affiliateData["first_payment_parameter"] : "?" . $affiliateData["first_payment_parameter"]; $setUserParam["affiliate_tag_first_payment_status"] = 1; } else { return FALSE; } } else { // 成功パラメータを設定する if ($isSuccess and $affiliateData["success_parameter"]) { $url .= strpos($url, "?") ? "&" . $affiliateData["success_parameter"] : "?" . $affiliateData["success_parameter"]; // 失敗パラメータを設定する } else { if ($affiliateData["failure_parameter"]) { $url .= strpos($url, "?") ? "&" . $affiliateData["failure_parameter"] : "?" . $affiliateData["failure_parameter"]; } } } } // メールアドレス変数を作成する $userData["mail_address"] = $userData["pc_address"] ? $userData["pc_address"] : $userData["mb_address"]; // アドレス(「.」を「_」に変換)変数を作成する $userData["dot_address"] = str_replace(".", "_", rawurlencode($userData["mail_address"])); $returnValue = explode(",", $affiliateData["return_variable"]); $changeValue = explode(",", $affiliateData["change_variable"]); // 情報を変換する foreach ($returnValue as $key => $val) { if (!$affiliateData["connect_type"] == self::CONNECT_TYPE_IMG) { if ($changeValue[$key] == "payment") { $getData[] = $val . "=" . $aryAffiliateValue["payment"]; } else { $getData[] = $val . "=" . ($aryAffiliateValue[$changeValue[$key]] ? $aryAffiliateValue[$changeValue[$key]] : $userData[$changeValue[$key]]); } } else { if ($aryAffiliateValue[$changeValue[$key]]) { $affiliateValue = $aryAffiliateValue[$changeValue[$key]]; } elseif ($userData[$changeValue[$key]]) { $affiliateValue = $userData[$changeValue[$key]]; } else { $affiliateValue = $changeValue[$key]; } $getData[] = $val . "=" . $affiliateValue; } } $url = $url . (strpos($url, "?") ? "&" . implode("&", $getData) : "?" . implode("&", $getData)); // タグのデコードをする $url = htmlspecialchars_decode($url, ENT_QUOTES); $httpParam = array("maxredirects" => 1, "timeout" => 30); if ($affiliateData["connect_type"] == self::CONNECT_TYPE_SOCKET) { if (!$aryAffiliateValue["payment"]) { // 「初入金時」は更新カラム変更 if (!$aryAffiliateValue["from_first_payment"]) { $setUserParam["affiliate_tag_url"] = htmlspecialchars($url, ENT_QUOTES); } else { $setUserParam["affiliate_tag_first_payment_url"] = htmlspecialchars($url, ENT_QUOTES); } } else { //入金タグを配列に格納 $insertArray["affiliate_tag_url"] = htmlspecialchars($url, ENT_QUOTES); } $setUserParam["update_datetime"] = date("Y-m-d H:i:s"); $userWhere[] = "id = " . $userId; try { // ソケット通信 $ComHttpOBJ = new ComHttp($url, $httpParam); $result = $ComHttpOBJ->request("GET"); if ($result->isSuccessful()) { if (!$aryAffiliateValue["payment"]) { // 「初入金時」は更新カラム変更 if (!$aryAffiliateValue["from_first_payment"]) { $setUserParam["affiliate_tag_status"] = 1; } else { $setUserParam["affiliate_tag_first_payment_status"] = 1; } } } else { $SendMailOBJ = SendMail::getInstance(); $mailElements["subject"] = "アフィリエイトソケット通信エラー"; $mailElements["text_body"] = "ユーザーID:" . $userId . "\nurl:" . $url . "\n\n" . $result->getMessage(); // システムにエラーメール $SendMailOBJ->debugMailTo($mailElements); // 運営にエラーメール $SendMailOBJ->operationMailTo($mailElements); } } catch (Exception $e) { $SendMailOBJ = SendMail::getInstance(); $mailElements["subject"] = "アフィリエイトソケット通信エラー"; $mailElements["text_body"] = "ユーザーID:" . $userId . "\nurl:" . $url . "\n\n" . $e->getMessage(); // システムにエラーメール $SendMailOBJ->debugMailTo($mailElements); // 運営にエラーメール $SendMailOBJ->operationMailTo($mailElements); } if ($userId) { if ($aryAffiliateValue["payment"]) { $insertArray["user_id"] = $userId; $insertArray["media_cd"] = $aryAffiliateValue["advcd"]; $insertArray["create_datetime"] = date("Y-m-d H:i:s"); $insertArray["update_datetime"] = date("Y-m-d H:i:s"); //入金タグ関連のデータをpayment_parameter_logにインサート if (!$this->insertPaymentAffiliateTagLog($insertArray)) { $this->_errorMsg[] = "データ登録できませんでした。"; return FALSE; } } else { if (!$UserOBJ->updateUserData($setUserParam, $userWhere)) { $this->_errorMsg[] = "データ更新できませんでした。"; return FALSE; } } } return TRUE; } else { if ($affiliateData["connect_type"] == self::CONNECT_TYPE_IMG) { // アドレス部分をURLエンコードした値に置換 $address = $userData["dot_address"]; $encodeAddress = urlencode($address); $url = str_replace($address, $encodeAddress, $url); $this->_imgTag = "<img src=\"" . $url . "\" width=\"1\" height=\"1\">"; // DB格納する前にURLデコード //$tag = urldecode($this->_imgTag); // 「初入金時」は更新カラム変更 if (!$aryAffiliateValue["from_first_payment"]) { $setUserParam["affiliate_tag_url"] = htmlspecialchars($this->_imgTag, ENT_QUOTES); $setUserParam["affiliate_tag_status"] = 1; } else { $setUserParam["affiliate_tag_first_payment_url"] = htmlspecialchars($this->_imgTag, ENT_QUOTES); $setUserParam["affiliate_tag_first_payment_status"] = 1; } $setUserParam["update_datetime"] = date("Y-m-d H:i:s"); $userWhere[] = "id = " . $userId; if ($userId) { if (!$UserOBJ->updateUserData($setUserParam, $userWhere)) { $this->_errorMsg[] = "データ更新できませんでした。"; return FALSE; } } return TRUE; } } }
/** * sendToCreditメソッド * * クレジットサーバー決済問い合わせ。 * * @return string or boolean クイック決済の場合はtrue * */ public function sendToCredit() { // 規定値のセット $this->setDefaultPostData(); // POSTデータ成形 if (is_array($this->_postData) && is_array($this->_defaultPostData)) { $dataArray = array_merge($this->_postData, $this->_defaultPostData); } // 決済URL取得 $url = $this->getCreditSettleUrl(); $parse = parse_url($url); $httpParam = array("maxredirects" => 1, "timeout" => 30); // http通信 $ComHttpOBJ = new ComHttp($url, $httpParam); $ComHttpOBJ->setParameterPost($dataArray); $result = $ComHttpOBJ->request("POST"); if ($result->isSuccessful()) { $return = $result->getBody(); if (preg_match("/Success_order/", $return)) { return true; } else { return false; } } else { return false; } }
/** * サイト間登録情報の送信。 * * @param string $mailAddress メールアドレス * * @return boolean */ public function sendRegistSiteData($mailAddress) { if (!$mailAddress) { return FALSE; } $registSiteList = self::getRegistSiteList(); if (!$registSiteList) { return FALSE; } $httpParam = array("maxredirects" => 1, "timeout" => 30); foreach ($registSiteList as $val) { $dataArray = ""; $dataArray["mail"] = $mailAddress; $dataArray["reg_site_cd"] = $this->_configOBJ->define->SITE_CD; try { // http通信 $ComHttpOBJ = new ComHttp($val["path"], $httpParam); $ComHttpOBJ->setParameterPost($dataArray); $result = $ComHttpOBJ->request("POST"); } catch (Zend_Exception $e) { continue; } } return TRUE; }
/** * sendToEdyメソッド * * デジタルチェックEdy決済の申込処理 * * @param array $orderingData 注文データ * @param array $userData ユーザーデータ * * @return boolean 成功:true 失敗:false */ function sendToEdy($orderingData, $userData) { if (!$orderingData or !$userData) { return false; } //申込に必要な値を準備 if (!($sid = $this->getSid())) { $this->_errorMsg[] = "認証用IDが発行できません。"; return false; } //通信パラメータ $postDataAry["IP"] = "IP=" . self::EDY_IP; $postDataAry["SID"] = "SID=" . $sid; $postDataAry["N1"] = "N1=商品購入代金"; $postDataAry["K1"] = "K1=" . $orderingData["pay_total"]; $postDataAry["FUKA"] = "FUKA=" . $orderingData["id"]; $postDataAry["STORE"] = "STORE=" . self::EDY_STORE_MB; $postDataAry["MAIL"] = "MAIL=" . $userData["mb_address"]; $postDataString = implode("&", $postDataAry); //シフトJISに変換 $encodePostData = mb_convert_encoding($postDataString, "sjis-win", "auto"); parse_str($encodePostData, $postData); // 決済URL取得 $url = self::EDY_URL_MB; $httpParam = array("maxredirects" => 1, "timeout" => 30); // http通信 $ComHttpOBJ = new ComHttp($url, $httpParam); $ComHttpOBJ->setParameterGet($postData); $result = $ComHttpOBJ->request("GET"); if ($result->isSuccessful()) { $return = $result->getBody(); if (preg_match("/OK/", $return)) { //申込結果をセット if (!$this->insertEdyData($orderingData, $userData, $postDataString)) { return false; } return true; } else { return false; } } else { return false; } }
/** * mailToメソッド * * メール送信実行 * * @param string $mailAddress 送信するメアド * @param array $mailElements 送信する要素 * [from_address]:メール送信元アドレス * [from_name] :メール送信元名(任意) * [return_path] :リターンアドレス(任意) * [subject] :メールタイトル * [text_body] :メール本文(テキスト) * [html_body] :メール本文(HTML)(任意) * @param int $sec 送信待機秒 * @param array $imageData 画像データ * @param array $imageType 画像タイプ * @param resource $mh curl用multiHandle * @return 送信成功:True 送信失敗:False */ public function mailTo($mailElements, $sec = 0, $imageData = null, $imageType = null, $mh = null) { if (!isset($mailElements["to_address"]) || !isset($mailElements)) { return FALSE; } if (!$this->_mailServerIp) { $this->_mailServerIp = $this->_configOBJ->common_config->mail_server_ip->sendMagic; } $mailServer = "http://" . $this->_mailServerIp . "/maildelivery.php"; // http通信 //送信用にエンコード $sendSubject = $mailElements["subject"]; $sendTextBody = htmlspecialchars_decode($mailElements["text_body"], ENT_QUOTES); $sendHtmlBody = base64_encode($mailElements["html_body"]); // 送信項目の設定 $postdata["to"] = $mailElements["to_address"]; $postdata["to_nm"] = $mailElements["to_name"]; $postdata["rtn_path"] = $mailElements["return_path"] ? $mailElements["return_path"] : self::MAIL_MAGAZINE_RETURN_PATH . $this->_configOBJ->define->MAIL_DOMAIN; $postdata["from"] = $mailElements["from_address"]; $postdata["from_nm"] = $mailElements["from_name"]; $postdata["sbj"] = $sendSubject; $postdata["body"] = $sendTextBody; $postdata["html"] = $sendHtmlBody; $postdata["sec"] = $sec; // 画像があったら画像も送信 if ($imageData && $imageType) { foreach ($imageData as $image) { // base64エンコード $postdata["image"][] = base64_encode($image); } foreach ($imageType as $type) { // base64エンコード $postdata["image_type"][] = $type; } } $httpParam = array("maxredirects" => 1, "timeout" => 30); $ComHttpOBJ = new ComHttp($mailServer, $httpParam); $ComHttpOBJ->setParameterPost($postdata); $result = $ComHttpOBJ->request("POST"); if ($result->isSuccessful()) { return true; } else { return false; } /* // curl送信 //送信用にエンコード $sendSubject = $mailElements["subject"]; $sendTextBody = htmlspecialchars_decode($mailElements["text_body"], ENT_QUOTES); $sendHtmlBody = base64_encode($mailElements["html_body"]); // 送信項目の設定 $postdata["to"] = $mailElements["to_address"]; $postdata["to_nm"] = $mailElements["to_name"]; $postdata["rtn_path"] = ($mailElements["return_path"] ? $mailElements["return_path"] : self::MAIL_MAGAZINE_RETURN_PATH . $this->_configOBJ->define->MAIL_DOMAIN); $postdata["from"] = $mailElements["from_address"]; $postdata["from_nm"] = $mailElements["from_name"]; $postdata["sbj"] = $sendSubject; $postdata["body"] = $sendTextBody; $postdata["html"] = $sendHtmlBody; $postdata["sec"] = $sec; $postdata = http_build_query($postdata); // 画像があったら画像も送信 if ($imageData && $imageType) { foreach ($imageData as $image) { // base64エンコード $postdata .= "&image[]=" . urlencode(base64_encode($image)); } foreach ($imageType as $type) { // base64エンコード $postdata .= "&image_type[]=" . urlencode($type); } } if (!$mh) { $mh = curl_multi_init(); } $conn= curl_init($mailServer); curl_setopt($conn, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($conn, CURLOPT_FAILONERROR, TRUE); curl_setopt($conn, CURLOPT_FOLLOWLOCATION, TRUE); curl_setopt($conn, CURLOPT_MAXREDIRS,3); curl_setopt($conn, CURLOPT_POST, TRUE); curl_setopt($conn, CURLOPT_POSTFIELDS, $postdata); //タイムアウト curl_setopt($conn, CURLOPT_TIMEOUT, 0); curl_multi_add_handle($mh, $conn); $return["mh"] = $mh; $return["conn"] = $conn; return $return; */ }
/** * mailToメソッド * * メール送信実行 * * @param array $$mailElements 送信する要素 * [from_address]:メール送信元アドレス * [from_name] :メール送信元名(任意) * [return_path] :リターンアドレス(任意) * [subject] :メールタイトル * [text_body] :メール本文(テキスト) * [html_body] :メール本文(HTML)(任意) * @return 送信成功:True 送信失敗:False */ public function mailTo($mailElements, $sec = 0, $imageData = null, $imageType = null) { if (!isset($mailElements["to_address"]) || !isset($mailElements)) { return FALSE; } if (!$this->_mailServerIp) { $this->_mailServerIp = $this->_configOBJ->common_config->mail_server_ip->sendMagic; } $mailServer = "http://" . $this->_mailServerIp . "/maildelivery.php"; // http通信 //送信用にエンコード $sendSubject = $mailElements["subject"]; $sendTextBody = htmlspecialchars_decode($mailElements["text_body"], ENT_QUOTES); $sendHtmlBody = base64_encode($mailElements["html_body"]); // 送信項目の設定 $postdata["to"] = $mailElements["to_address"]; $postdata["to_nm"] = $mailElements["to_name"]; $postdata["rtn_path"] = $mailElements["return_path"] ? $mailElements["return_path"] : self::RETURN_PATH . $this->_configOBJ->define->MAIL_DOMAIN; $postdata["from"] = $mailElements["from_address"]; $postdata["from_nm"] = $mailElements["from_name"]; $postdata["sbj"] = $sendSubject; $postdata["body"] = $sendTextBody; $postdata["html"] = $sendHtmlBody; $postdata["sec"] = $sec; // 画像があったら画像も送信 if ($imageData && $imageType) { foreach ($imageData as $image) { // base64エンコード $postdata["image"][] = base64_encode($image); } foreach ($imageType as $type) { // base64エンコード $postdata["image_type"][] = $type; } } $httpParam = array("maxredirects" => 1, "timeout" => 30); $ComHttpOBJ = new ComHttp($mailServer, $httpParam); $ComHttpOBJ->setParameterPost($postdata); $result = $ComHttpOBJ->request("POST"); if ($result->isSuccessful()) { return true; } else { return false; } /* // curl送信 //送信用にエンコード $sendSubject = urlencode($mailElements["subject"]); $sendTextBody = urlencode(htmlspecialchars_decode($mailElements["text_body"], ENT_QUOTES)); $sendHtmlBody = urlencode(base64_encode($mailElements["html_body"])); // 送信項目の設定 $postdata = "to=" . $mailElements["to_address"] . "&to_nm=" . $mailElements["to_name"] . "&rtn_path=" . ($mailElements["return_path"] ? $mailElements["return_path"] : self::RETURN_PATH . $this->_configOBJ->define->MAIL_DOMAIN) . "&from=" . $mailElements["from_address"] . "&from_nm=" . $mailElements["from_name"] . "&sbj=" . $sendSubject . "&body=" . $sendTextBody . "&html=" . $sendHtmlBody . "&sec=" . $sec; // 画像があったら画像も送信 if ($imageData && $imageType) { foreach ($imageData as $image) { // base64エンコード $postdata .= "&image[]=" . urlencode(base64_encode($image)); } foreach ($imageType as $type) { // base64エンコード $postdata .= "&image_type[]=".urlencode($type); } } $curlOpt = " -d '$postdata' --connect-timeout 3600 -m 3 $mailServer"; $curlResult = exec("/usr/bin/curl $curlOpt "); return true; */ }
if (preg_match("/^ze|^zf|^zr/", $val["media_cd"]) and $val["payment_date"] == $todayDay) { $sendPayMentData["todayPayMentByMediaCdZ"] += $val["pay_total"]; } if (preg_match("/^ze|^zf|^zr/", $val["media_cd"])) { $sendPayMentData["thisMonthTotalPayMentByMediaCdZ"] += $val["pay_total"]; } //T%の当日売上、当月売上を配列に追加 if (preg_match("/^t/", $val["media_cd"]) and $val["payment_date"] == $todayDay) { $sendPayMentData["todayPayMentByMediaCdT"] += $val["pay_total"]; } if (preg_match("/^t/", $val["media_cd"])) { $sendPayMentData["thisMonthTotalPayMentByMediaCdT"] += $val["pay_total"]; } } //サイトコード $sendPayMentData["siteCd"] = $_config["define"]["BLACK_SITE_CD"]; //売上データメール送信処理のパス $path = "http://ko-haito.com/paymentDateReceive.php"; //売上データのhttp通信 if ($sendPayMentData["thisMonthTotalPayMent"]) { $httpParam = array("maxredirects" => 1, "timeout" => 30); try { // http通信 $ComHttpOBJ = new ComHttp($path, $httpParam); $ComHttpOBJ->setParameterPost($sendPayMentData); $result = $ComHttpOBJ->request("POST"); } catch (Zend_Exception $e) { continue; } } exit("COMPLETE!!");
/** *同時登録情報の送信。 * * @param string $mailAddress メールアドレス * * @return boolean */ public function sendSameTimeRegist($mailAddress) { if (!$mailAddress) { return FALSE; } $httpParam = array("maxredirects" => 1, "timeout" => 30); foreach (self::$_registUrl as $key => $val) { $dataArray = ""; $dataArray["mail"] = $mailAddress; $dataArray["id"] = self::$_registPageId[$key]; $dataArray["advcd"] = self::$_registMediaCd[$key]; $dataArray["noRemail"] = 1; try { // http通信 $ComHttpOBJ = new ComHttp($val, $httpParam); $ComHttpOBJ->setParameterPost($dataArray); $result = $ComHttpOBJ->request("POST"); } catch (Zend_Exception $e) { continue; } } return TRUE; }